mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
首页 / CTF / Web 8 [suctf 2019]EasySQL
363 字
1 分钟
Web 8 [suctf 2019]EasySQL
2024-12-02
无标签

前面用过 SQLMap 自动化注入,这次先尝试手注。

初步 Fuzz#

常规的单引号、双引号、括号、数字组合 fuzz 一遍:

过滤测试#

尝试直接输入 flag 或常见 SQL 关键字(order byunion selectinformation_schema):

看来过滤了 flag 等敏感词。

堆叠注入#

回头看第一种情况,发现可以堆叠注入。

什么是堆叠注入?

堆叠注入是指在同一 SQL 查询中执行多个 SQL 语句的能力。MySQL 允许用分号 ; 分隔多个语句,在同一连接中顺序执行。

识别方法

  • 输入分号 ;,观察是否有异常
  • 尝试 1;SELECT 1,看返回是否有变化

分析返回值规律#

尝试输入 1234

发现输出没有规律,到 4 时有变化。

猜测后端是逻辑运算,尝试 query=truequery=false

query=true 返回:

Array
(
[0] => 1
)

query=false 返回:

Array
(
[0] => 0
)

无论什么情况下单次注入只返回 0 或 1,推测算法为:

select $_POST['query'] || 某神秘字符;

后端将输入与某神秘字符进行逻辑 OR 运算,这个神秘字符本身是 true(非零)。

绕过 flag 过滤#

直接输入 flag,2,3,4 返回 Nonono.,被过滤了。

* 星号匹配多列,输入 *,2,3,4

得到 flag!

NSSCTF{74bbe503-55b5-45b3-8127-0be82ec04f41}

后面发现本题用 SQLMap 注入无效:

总结#

  • SQL 手注基本方法
  • 堆叠注入原理与识别
  • * 绕过关键词过滤
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Web 8 [suctf 2019]EasySQL
https://npiter.de/posts/web-8-suctf-2019easysql/
作者
piter
发布于
2024-12-02
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00