首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL之布尔型详解

saulGoodman 一个专注于红队攻防研究公众号 关注 MySQL之布尔型详解 布尔型简介 基于布尔型SQL即在SQL注入过程中,应用程序仅仅返回True(页面)和False(页面...MySQL常用函数 length() 返回字符串长度,例如可以返回数据库名字长度 substr() ⽤来截取字符串 ascii() 返回字符ascii码 sleep(n) 将程序挂起⼀段时间...,n为n秒 if(expr1,expr2,expr3) 判断语句 如果第⼀个语句正确就执⾏第⼆个语句如果错误执⾏第三个语句 流程 1、判断是否存在注入,是字符型还是数字型注入 注入点原查询代码: $...getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id';"; 判断注入: 注入语句: 1' and 1=1 # 带入查询语句...substrstr,要截取字符 limit 0,1 这条语句是 limit 子句来限制查询数量,具体格式是这样: select * from tableName limit i,n tableName

10.2K21

基于时间

01 简介 就是在sql注入过程中,sql语句执行选择后,选择数据不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为。...对于基于布尔来说,我们可以构造一条注入语句来测试我们输入布尔表达式,而这布尔表达式结果真假,决定了每次页面有不同反应。...对于基于时间来说,我们构造语句中,包含了能否影响系统运行时间函数,根据每次页面返回时间,判断注入语句是否被成功执行。...03 分类 基于布尔SQL 基于时间SQL 基于报错SQL 04 流程 找寻并确认sql点 强制产生通用错误界面 注入带有副作用查询 根据布尔表达式真假结果,结合不同返回结果确认注入是否成功...测试过程: 首先对name字段进行加锁,返回结果为1且时间为0证明加锁成功; 图片 建立另一个mysql连接,对同样字段进行加锁,返回结果为0且时间是自定义5,证明加锁失败; 图片 利用上面的基础理论加上时间原理

65710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一文搞定MySQL

    目前CTF中MySQL依然是热点之一,然而又被分成Like、正则、异或等等太多类型,让新入门萌新十分摸不到头脑。...本文希望以言简意赅语言帮助刚入门WEB CTF选手们快速“拿捏”MySQL。...目前CTF中十有八九是MySQL,所以本文也就全部讲MySQL了。 0x01 介绍▸ 什么是?...0x02 怎么步骤▸ 前面一直是以抽象中文来表示操作,这里我们使用SQL语句进行更详细说明。...0x03 两个基本问题▸ 两个基本问题是什么▸ 通过上面的内容,你已经能够进行简单了,然而实际题目中会加上各种各样过滤,为了绕过这些过滤,被分成了LIKE注入、MID注入、LEFT注入

    1.9K40

    sql学习

    这几天在学习sql注入有关内容,今天记录一下我认为比较重要部分,即sql,我一开始学习时候看到了好多函数,看着看着就弄混了,相信不少新入门师傅也有类似的困惑,经过多番心理斗争,我终于决定将这部分知识好整理一下...类型 基于布尔 特征 被注入页面没有sql语句执行错误显示,页面只有正常返回和不正常返回两种状态 示例 这里我拿sqli-labsless8作为布尔型例子 我们可以看到这个页面正常会返回...You are in...........而不正常时候会无任何返回,这就很符合布尔特征 正常返回: ?...剩下表名和字段将脚本稍作修改即可猜解出来,篇幅原因不再重复操作 基于报错(floor报错注入) 原理 该类型注入利用了mysql8652号BUG(官方链接:https://bugs.mysql.com...想出全部表名修改limit参数即可 列名和数据同理修改查询语句就可以了。

    78530

    mysql高级注入4--1

    所谓就是在正常页面没有输入点,或者无法影响页面输出内容~ 然后我们无法借助页面来返回数据库中我们想要数据,这时候就要构造sql语句让它报错,或者进行一系列判断。...这一篇讲基于布尔。 科普文,给学弟妹...大牛绕过绕过... 一、字符串返回字符函数 ? 不得不提是ord函数和ascii函数用法一样,假如str为空字符串,则返回值为 0 。...所谓就是没有输出点。就是你和数据库产生了交互,但是在页面上去没有显示数据库内容。具体可以参考sqli labs 基础练习5~ ?...于是我们就要用到我们前面介绍几个函数来注入了。 具体如下: ? 对比以下ascii码表,我们发现注入出来数据库名是无误。 ? 但是如果是传参语句呢?...那么我们就没有办法像mysql客户端一样回显了…不然怎么叫。 输入:http://localhost/sqli-labs/Less-5/?id=1 可以看到这个是正常页面。 ?

    73960

    布尔型PY交易

    确定问题点 在这次测试过程中发现了一个注入点,通过测试发现返回包内包含了sql语句,确认可以注入,开始了这次注入尝试。...sqlmap根本法利用这个漏洞,但返回数据包中实打实出现我数据库语句,所以我把返回数据库语句拿出来,开始了一点点构造进程。 ?...但返回内容需要进行闭合而且返回内容不可以利用,所以可以排除报错等类型注入形式,可以探测注入类型就仅剩下两种了:时间型,布尔型直接在目标后加入测试语句。...空格无法通过,系统会返回404,针对之前爆出数据库语句,利用%25和%20绕过对对单独%和空格过滤构造出以上数据库语句完成语句闭合,成功返回200,确认可以返回正常数据包,并可以根据数据库语句正确来进行布尔型测试...,确认数据库名称 三、工具思路 3.1 Post数据包利用 利用python数据包发送来批量测试目标内容 和时间型不同,布尔型要根据返回数据包不同来确认问题 %0a(ascii(substr

    51630

    三十八.WHUCTF (1)SQL脚本和命令执行绕过(easy_sqli、ezcmd)

    ---- 2.解题思路 (1) 首先,该题仅一个登陆页面,首先想到是万能密码登录,比如admin、‘or’=‘or’ 等。 当我们输入admin提示登录失败,并且反馈SQL语句。...语句看到or被屏蔽了。...题目+实战总结: 这类题型命令执行方法是利用管道符或者分号层层绕过 接着利用$IFS1绕过空格限制 最后使用$a变量绕过黑名单,成功执行cat flag.php命令 ?...ip=218.197.154.9;a=g;ca\t$IFS$1fla$a.php 同时给出另两位师傅绕过payload。 #方法1 ?...晚安娜~ 一.SQL脚本 二.命令执行绕过 三.总结 CTF初学者个人建议: 多做CTF题目,多参加CTF比赛,多交流经验 CTF题目推荐BUUCTF,比赛每个月都有很多,大赛小赛,比如XCTF、KCTF

    1.3K10

    让你SQL快起来

    是 SQL 注入重要技术之一,在现实中 SQL 注入案例中,往往很难将注入结果直接回显出来。因此,也就成为了 SQL 注入必不可少手段之一。...本文想分享一个如何大大提升效率技巧。 与或运算 与或运算,操作符分别为 & 以及 |,大多数人应该会在实际开发过程中很少使用到与或运算。...通过与运算 ? 看到这里,你可能还是一头雾水,与运算和注有啥关系?...通过这样方式,我们就可以确定104每个比特位上数据是什么。那这和我们SQL又有什么关系呢?...myapp myapp_card myappcardperform 枚举 121 276 与运算 35 70 总结 通过上面的对比,我们可以看出在SQL中,如果通过与运算来进行,可以大大提升效率

    70840

    Sqlite3二次

    查看这个月 push仓库,发现了泄露 secret key,并且注意到后端数据库是 Sqlite ? 利用私钥伪造管理员 session token ?...select*,然后进行遍历渲染,因为SQL语句中没有 where字句,所以想利用注册用户名进行二次注入是行不通 并且在渲染时不存在 ssti,因为遇到 Jinja2引擎,第一想法当然是模版注入,但这里走不通...---- 然后在一番 Google后,想到这里应该是 Sqlite数据库,但是经测试 sqlite数据库延时函数 randomblob被过滤了,所以无法进行延时注入 结合这两个接口功能,我们可以想到...,可以利用删除用户接口进行 Bool: 创建用户 iv4n 删除用户 payload: iv4n' and (select hex(substr(flag,{i},1)) from flag...)=hex('{j}')-- - 假如 and后条件为真,即删除创建 iv4n用户,通过查看返回页面是否存在字符串 iv4n进行布尔注脚本: import requests url = "

    1.7K30

    构造基于时间漏洞(Time-Based SQLi)

    某天,当我参与某个漏洞众测项目中,偶尔发现之前一个从未见过子域名网站,因此我决定深入测试一下。该网站主界面是一个登录页面,开放了用户注册功能,所以我就注册了一个账户,最后试出了一个时间来。 ?...order=type&ordering=ASC&search=路径下,这里ASC参数看着好眼熟,其后台数据库查询语句可能会是这样:SELECT * FROM referrals ORDER BY...反复尝试不同Payload之后,我发现在ORDER BY 语句UNION SELECT查询是不可行,因为其后台数据库查询语句估计是这样-SELECT * FROM referrals ORDER...那就试试报错型或基于时间吧。先是报错型,服务端总是返回一个带500状态空白页面,没有额外信息,因此排除。最后只剩下基于时间Time-Based Sql注入了。...在用相关时间Payload尝试了MySQL, MSSQL, 和PostgreSQL之后都无果,尽管我在我本地虚拟机上测试是有效,但是在该网站中却连以下最基本Payload都无效: sleep(

    1.4K20

    一次漏洞手工测试过程

    接下来目标是通过该接口获取数据,由于无法回显详细报错信息,也无法展示查询信息,所以只能通过单字符猜解方式,也就是大家常说,适用于这个场景下类型,可以选择通过构造报错语句方式也就是布尔...,还可以选择借助时间函数方式也就是时间。...在有其他选择情况下,通常最后选择使用时间,毕竟时间所要消耗时间是最长,当然也是最万能方式,在我理解中不同注入方式优先级是这样: 报错注入 > 联合查询 > 布尔 > 时间...> 数据库带外查询 今天手工测试方法选用布尔,如果时回显错误信息情况下,以下查询语句可以返回数据库名称: '+convert(int,db_name())+' 因为数据库名称是字符串,而将字符串转换为数字型时会报错...: 接下来启动攻击后,下图可以看到获取到数据库名称: 到这里整个测试过程就结束了,如果想要获取数据库名称之外信息,可以替换 payload 中 DB_NAME () 部分,比如: select

    85210

    老司机带你过常规WAF

    0x01 绕过安全狗继续SQL注入 其实说白了,绕过WAF就是混淆你SQL语句,让它以另一种方式呈现出来,以绕过WAF黑名单正则表达式匹配,至于具体混淆方法,网络上有很多文章已经讲够详细了,在这里我就直接进入实战环节...这里我们主要用绕过方法是: 1.利用()代替空格 2.利用mysql特性/*!*/执行语句 3.利用/**/混淆代码 我给出注入语句是: 1' union/*%00*//*!...当然,在真实环境下直接union select数据注入点是非常少见,还是占多数,按照上面的思路方法我们可以非常轻松测试出绕过安全狗语句,我测试了好长时间,总结出语句如下: 判断: 1'...、、基于时间从获取数据库名一直到获取表名、字段名、数据值所有过狗语句。...但是这里比较坑一点是安全狗3.5版本会拦截关键字information_schema,这样利用起来就比较麻烦了,不过私神还是提供了一种方法绕过: 当mysql版本>=5.6时,可以用如下语句代替: Select

    1.5K110

    如何使用HBSQLI自动测试基于HeaderSQL

    关于HBSQLI HBSQLI是一款功能强大自动化SQL注入漏洞测试工具,该工具可以帮助广大研究人员以自动化形式测试基于HeaderSQL漏洞。...HBSQLI本质上是一个命令行工具,旨在针对Web应用程序执行基于HeaderSQL漏洞扫描与检测。...该工具旨在提升Web应用程序安全性而构建,请不要在未经授权情况下使用该工具对目标进行测试。..., --url URL 以输入参数提供单个目标URL地址 -p PAYLOADS, --payloads PAYLOADS 包含SQL...文件,或者使用自定义Payload文件,请记住Payload文件中设置每一个Payload间隔应该设置为30秒; 2、你可以选择项目提供Header文件,或者根据自己实际需求使用更多自定义Header

    17210

    SQL布尔自动化脚本实现 - wuuconixs blog

    背景 很久以前做过布尔题目,但是当时用是网上代码,跑出来flag了也是一知半解,没有收获。 今天花了一下午时间写了一个布尔脚本。...介绍 布尔使用场景特征十分明显,即界面不会给出查询具体结果,也不会给你报错信息。而只会告诉你查询成功还是查询失败。...如果手工来实现这一过程,就会变得非常繁琐,这里我花了一个下午时间写了一个脚本。 运行过程十分舒适和人性化。...wuuconix/SQL-Blind-Injection-Auto: 自己写SQL自动化脚本 (github.com) 最后再给出演示视频。...战术总结 经过这次脚本编写,我对布尔原理和实现方式都有了深刻认识。 同时提升了python脚本编写能力。

    68430

    【网络安全】「漏洞原理」(二)SQL 注入漏洞之理论讲解

    ($_GET["order"])."`"; $result = mysql_query($sql); 接下来我们将采用布尔和时间方式进行攻击。...布尔 布尔是指在进行 SQL 注入时,根据返回结果是 True 或者是 False 来得到数据库中相关信息。...首先是正常进行请求,运行结果如下: 图片 接下来使用布尔,因为上个例子已经知道数据库名是 exercises,因此这里就不做过多猜测,注入语句如下: order=name` RLIKE (SELECT...时间 除了布尔之外,还存在其他方式,比如时间。 时间是指攻击者向目标应用程序发送恶意请求时,如果存在时间漏洞,应用程序可能会有不同响应时间。...【写作提纲】 介绍信息搜集作用以做法; 对 SQL 注入进行入门介绍; 2.1. 基础注入介绍; 2.2. SQL 介绍:布尔与时间; 介绍常用绕过方式; 3.1.

    1.5K1156

    【网络安全】「漏洞原理」(二)SQL 注入漏洞之理论讲解

    ($_GET["order"])."`"; $result = mysql_query($sql); 接下来我们将采用布尔和时间方式进行攻击。...布尔 布尔是指在进行 SQL 注入时,根据返回结果是 True 或者是 False 来得到数据库中相关信息。...首先是正常进行请求,运行结果如下: 接下来使用布尔,因为上个例子已经知道数据库名是 exercises,因此这里就不做过多猜测,注入语句如下: order=name` RLIKE (SELECT...时间 除了布尔之外,还存在其他方式,比如时间。 时间是指攻击者向目标应用程序发送恶意请求时,如果存在时间漏洞,应用程序可能会有不同响应时间。...正常查询时,所需时间如下: 构造时间 SQL 语句: order=age` and if(ascii(substr(database(),1,1))=101,sleep(1),1)--+ 运行结果

    19420

    Sql注入总结学习

    3.3.1. 使用函数 3.3.2. 布尔 3.3.3. 时间 3.4. union注入 3.5. Boolean注入 3.6. Cookie注入 3.7....时间注入 id = 1 and if(length(database())>1,sleep(5),1) 使用函数 length(str) :返回字符串str长度 substr(str, pos...:将字符或布尔类型转成ascll码 if(a,b,c) :a为条件,a为true,返回b,否则返回c,如if(1>2,1,0),返回0 布尔 and ascii(substr((select database...()),1,1))>64 /*判断数据库名第一个字符ascii值是否大于64*/ 时间 id=1 union select if(SUBSTRING(user(),1,1)='root',sleep...从名词含义就可以看到应该是一堆 sql 语句(多条)一起执行。而在真实运用中也是这样, 我们知道在 mysql 中, 主要是命令行中, 每一条语句结尾加; 表示语句结束。

    1.1K20
    领券