SUCTF-2019-Web-easysql

easysql

这道题是我做起来最轻松的 , 因为这道题泄漏了源码

泄漏的 PHP 源码一共分为两部分

  1. 连接数据库并从URL获取参数

    png

  2. 对获取的参数进行处理后带入数据库查询 , 并且返回结果

    png

其实主要就是 SQL 查询语句 : select ".$post['query']."||flag from Flag";

由于题目没有过滤 " * " , 因此可以查询所有内容就可以拿到 Flag 了

Payload : *,1

拼接后就变成了 SELECT * ,1 || flag FROM Flag

png

直接拿到 Flag


赛后看官方的 WriteUp 发现这不是预期的解法( 可能是出题人忘记过滤 * 号了== ) , 这道题的考点其实是一个 sql_mode 参数

Oracle 在缺省情况下支持使用 " || "连接字符串 , 但是在MySQL中缺省不支持 ,MySQL 缺省使用 CONCAT 系列函数来连接字符串 .

可以通过修改 sql_mode 模式 : PIPES_AS_CONCAT 来实现将 " || "视为 字符串连接符 而非 运算符 .

因此这里预期的 Payload 是通过修改 sql_mode 来拿到 Flag ,如下

Payload : 1;set sql_mode=PIPES_AS_CONCAT;SELECT 1

拼接后就变成了 SELECT 1;set sql_mode=PIPES_AS_CONCAT;SELECT 1 || flag FROM Flag

png

成功拿到 Flag


总结

这道题没有什么好说的 ,考点就只有一个 sql_mode ,算是水了一篇文章哈哈~

PIPES_AS_CONCAT 这个参数我之前倒是没有注意过 ,以后做题可以关注一下~

png

暂无评论

发送评论 编辑评论


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