SWPUCTF 2021
Web
jicao
<?php
highlight_file('index.php');
include("flag.php");
$id=$_POST['id'];
$json=json_decode($_GET['json'],true);
if ($id=="wllmNB"&&$json['x']=="wllm")
{echo $flag;}
?>Payload 如下
Body: id=wllmNB
Param: json={"x":"wllm"}easy_md5
<?php
highlight_file(__FILE__);
include 'flag2.php';
if (isset($_GET['name']) && isset($_POST['password'])){
$name = $_GET['name'];
$password = $_POST['password'];
if ($name != $password && md5($name) == md5($password)){
echo $flag;
}
else {
echo "wrong!";
}
}
else {
echo 'wrong!';
}
?>Payload 如下
easy_sql
打开页面后 title 存在提示 参数是 wllm 。
include
Payload 如下
caidao
蚁剑利用 $_POST['wllm'] 一把梭。
easyrce
回显 bin boot dev etc flllllaaaaaaggggggg home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var ,
得到 flag。
babyrce
设置 Cookie admin=1 ,即可到达下一关 。
通过分析可得空格被过滤,可以通过 $IFS$1 来绕过,构造 Payload 如下
得到回显 bin boot dev etc flllllaaaaaaggggggg home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var ,
得到 flag。
hardrce
发现没有过滤 % ,又不能用字母,那就只能尝试下 Urlencode 取反绕过了。
构造 Payload 如下
可以得到回显如下
通过构造 Urlencode 取反后通过如下 Payload 就可以得到 flag 了。
hardrce_3
这是一道无字母数字 rce ,根据百度一番查找找到用自增的方法来解决
https://blog.csdn.net/qq_61778128/article/details/127063407
这里放一个压缩版(
将以上内容进行一次 Urlencode 编码得到以下内容,将其作为 Payload 。
但是发现并没有用,通过百度看发现还需要利用 file_put_contents() 函数来绕过 disable_function。
所以需要构造 Payload 如下(body 部分)
然后访问 ./1.php 发现文件成功写入后尝试用蚁剑连接,连接成功后发现 flag 就在根目录 /flag 中。
finalrce
通过 tee 和 管道符 可以将值输出到文件中,构造 Payload 如下
访问 ./1.html 可以得到以下内容
构造以下 Payload 获取 flag ,需要注意 la 和 cat 被过滤了,需要使用 \ 进行绕过
访问 ./2.html 就可以得到 flag 了。
Do_you_know_http
修改以下两项
即可得到 flag。
ez_unserialize
先用 dirsearch 找找文件~
访问 /robots.txt 可以得到 /cl45s.php ,访问可以得到以下代码。
这是一道反序列题,先进行序列化构造。
得到返回的值后构造 Payload 如下
就得到 flag 。
easyupload1.0
构造图片马
上传后得到回显 ./upload/shell.php ,通过蚁剑一把梭发现根目录的 flag 是假的,那就找找环境变量罢,通过构造 Payload 如下
F5 查找发现 flag 就在这里面。
easyupload2.0
构造图片马
上传后得到回显 php是不行滴 ,那就尝试修改后缀为其他(比如 .phtml ),上传成功后直接构造 Payload 如下
F5 查找发现 flag 就在这里面。
easyupload3.0
这次比上一次来说过滤了很多,改后缀名已经无法绕过了,那就试试改 .htaccess 罢。
发现上传成功,那就上传个图片马罢。
上传成功后直接构造 Payload 如下
F5 查找发现 flag 就在这里面。
no_wakeup
根据题目猜测是需要绕过反序列化时候的 __wakeup() 魔术方法。
可以通过修改反序列化对象的参数就可以绕过该魔术方法了,先进行序列化构造。
可以得到值
将对象参数个数 2 改成 3 即可绕过,即构造 Payload 如下
PseudoProtocols
题目标题为 伪协议 ,那就是一道 伪协议 的题目力。
题目存在 Param wllm ,构造 Payload 如下
就可以得到 hint.php 的代码如下
前往提示内的文件可以得到以下代码
需要使得 a 的值为 I want flag ,先将 I want flag 进行 base64 编码得到 SSB3YW50IGZsYWc= ,再构造 Payload 如下
就可以得到 flag 了。
error
根据题目猜测是 SQL 报错注入(?,试试 sqlmap。
pop
先构造序列化
之后构造 Payload 如下即可得到 flag 。
sql
题目中说明需要绕过 Waf ,那就先判断被过滤的字符,构造 Payload 如下
回显提示存在非法字符,
此时回显并没有提示存在非法字符,可以推断出过滤了 = 和 空格 。
构造 Payload 如下
到 4 时出现报错,因此长度为 3 。
构造 Payload 如下
可以发现 2,3 有回显,构造 Payload 如下
可以得到数据库名 test_db ,构造 Payload 如下
可以得到表名 LTLT_flag, users ,构造 Payload 如下(插曲:发现 and 也被过滤了)
可以得到列名 id, flag, id, username ,构造 Payload 如下
可以得到 NSSCTF{aeb148da-5efa ,可以通过 mid() 来获取 flag 的其他部分,构造 Payload 如下
可以得到 -430e-961b-ab03b3fb 和 2d32} 拼起来就是 flag 了。
babyunser
进入题目后可以看见 上传文件 和 查看文件 两个入口,经过一番摸索后,在 查看文件 处输入 read.php 可以看到该文件的源代码,可以发现还存在一个文件 class.php 如下
链子如下
Payload 如下
Last updated