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 ,需要注意 lacat 被过滤了,需要使用 \ 进行绕过

访问 ./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-ab03b3fb2d32} 拼起来就是 flag 了。

babyunser

进入题目后可以看见 上传文件查看文件 两个入口,经过一番摸索后,在 查看文件 处输入 read.php 可以看到该文件的源代码,可以发现还存在一个文件 class.php 如下

链子如下

Payload 如下

Last updated