进入DVWA1.9,将安全防御设置为中等,进入SQL注入模拟

表单可以GET也可以POST提交,但是网址栏没有变化,可得其为POST提交

可以明显的看出来此页面为POST提交

 

利用Burp来实现***,在其上进行SQL注入

步骤如下

  1. 判断提交方式
  2. 判断闭合符
  3. 判断输入列宽度
  4. 利用联合查询,查找想要的数据

 

经判断,此页面为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()函数

二者结果一样,但是原理不一样,第一个用的是转码的技术,第二个用的时变量传值的技术

 

查看后台数据库,可见,其表名就是查询出来的

数据库中用解决方案进行测试,可见与实际相符