[SUCTF 2019]Easy SQL

 日常and or

 一圈测试之后发现,and or &&  from都过滤了,很奇怪 || 这个没有过滤。

接着尝试,试试堆叠注入。

 可以,接着看表

发现flag

尝试desc

经测试,Flag被过滤了。

想过之前碰到一个预处理的,尝试之后发现限制了输入长度。

concat char 都不行,prepare被过滤

突然想到and or &&都被过滤了,唯独留了 ||,可能有什么猫腻

查了一下mysql ||这个符号。

结果发现oracle || 还有连接的作用

但这里是或

所以尝试一下有没有办法能把 || 改成oracle那样的连接符

然后就没有然后了,不会了,看了wp,发现还有个sql_mode这个东西

关于sql_mode : 它定义了 MySQL 应支持的 SQL 语法,以及应该在数据上执行何种确认检查,其中的PIPES_AS_CONCAT将 || 视为字符串的连接操作符而非 “或” 运算符。

具体说明:https://www.cnblogs.com/piperck/p/9835695.html

还有就是这个模式下进行查询的时候,使用字母连接会报错,使用数字连接才会查询出数据,因为这个 | | 相当于是将 select 1 和 select flag from flag 的结果拼接在一起。

看了关键的查询代码是 :

select $post['query']||flag from Flag

官方给的 payload 是

1;set sql_mode=PIPES_AS_CONCAT;select 1

拼接一下就是

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

 关于 *,1

拼接一下就是

select *,1||flag from Flag
select *,1 from Flag

可以,脑洞清奇,记下来了。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇