刘功瑞的博客

有一天你突然惊醒,发现这一切,都只不过是一场梦。

2017年CNAS网络安全等级保护测评能力验证与攻防大赛 Access Control Writeup

CNAS/MPS CTF 2017: Access Control

Points: 150

这个网站只有管理员才能访问

PutResourceHere

Write-up

检查header,Cookie里有一串明显的base64字符串,解码之后发现是php的serialize后的,s:5:"guest",是个字符串,于是我们改成base64_encode(serialize("admin"))提交回去,页面改变了,给了一段源码。

检查了一下源码,大概是文件上传,源码有点诡异,这里大概回忆一下过程。首先preg_match("[<>?]", $_POST["data"])需要返回0,然后preg_match("[<>?]", implode($_POST["data"]))需要返回非0(只有1了),所以只需要POST一个filename=whatever&data[]=<即可。


这个题和i春秋上的2017第二届广东省强网杯线上赛who are you?几乎一模一样,只是强网杯的多了个rot13加密

打开页面后提示Sorry. You have no permissions.

查看cookie中有一个role=Zjo1OiJ0aHJmZyI7  base64解密后得到 f:5:"thrfg";  使用rot13解密后得到 s:5:"guest";   我们修改成 s:5:"admin"; 然后rot13加密,在base64加密,修改到cookie中,得到一个可以上传的提示。

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<!-- $filename = $_POST['filename']; $data = $_POST['data']; -->Hello admin, now you can upload something you are easy to forget.</body>
</html>

然后尝试上传,发现过滤了filename是上传后的文件后缀,data是文件内容,但是过滤了<,我们需要使用数组绕过 data[]=<?php&data[]=?>就得到flag了。

发表评论:

Powered By Z-BlogPHP 1.5.2 Zero

Copyright www.liugongrui.com.All Rights Reserved.