进入DVWA1.9,将安全防御设置为中等,进入SQL注入模拟
表单可以GET也可以POST提交,但是网址栏没有变化,可得其为POST提交
可以明显的看出来此页面为POST提交
利用Burp来实现***,在其上进行SQL注入
步骤如下
- 判断提交方式
- 判断闭合符
- 判断输入列宽度
- 利用联合查询,查找想要的数据
经判断,此页面为POST提交,因为更改表单元素时,地址栏没有变化,闭合符为整形,输出列宽度为2
接下来进行SQL的注入
查询当前页面的数据库与环境版本
查看DVWA库中有些什么表
select distinct table_name from information_schema.columns where table_schema='dvwa' limit 0,1;
其内部的防御机制,将注入的单引号转义且进行了清洗破坏,导致页面打不开
查看网页的PHP源码,可得由于选择了中等安全等级,所以页面的提交方式时POST,且由于mySQL语句中的id前后有反斜杠的保护
解决:
将dnwa转成16进制,然后进行注入dvw的16进制为64767761,可见页面显示正常,即dvwa库的表名为guesbook uses,根据此方法查看dvwa库的所有表
将dvwa改成database()函数
二者结果一样,但是原理不一样,第一个用的是转码的技术,第二个用的时变量传值的技术
查看后台数据库,可见,其表名就是查询出来的
数据库中用解决方案进行测试,可见与实际相符