CTFSHOW:36D杯的 ALL_INFO_U_WANT ---文件上传-phpinfo包含-日志包含-临时文件包含-Linux查找文件内容命令

目录:

    • 一、自己做:
    • 二、学到的:
    • 三、学习WP
      • 1. 预期解 1 ---- 包含日志文件
      • 2. 预期解 2 --- 包含临时文件,
        • linux命令考察:

参考自:https://www.gem-love.com/ctf/2283.html

参考:https://www.gem-love.com/ctf/2283.html

一、自己做:

到时候,自己再开环境再做一遍。

先看了WP。。弄到了提示:
phpinfo()看了,
diabled_functions,open_basedir都没有什么东西,


error_reporting(0);

//give you all information you want
if (isset($_GET['all_info_i_want'])) {
     
    phpinfo();
}

if (isset($_GET['file'])) {
     
    $file = "/var/www/html/" . $_GET['file'];
    //really baby include
    include($file);
}

?>

拼接../../../../../flag。是假的falg。

flag{
     this_is_fake_flag_realflag_is_in_/etc_find_it_by_yourself} 

/etc下面去找,这就需要扫描目录了,但是题目给的hint又是不用扫目录,

那么既然这样包含日志看看,
包含了, 没有反应,,

all_info_u_want.php?file=../../../../../var/log/apache2/access.log

不对,,,

二、学到的:

三、学习WP

这个题的 session.upload_progress.enalbed是关闭的,如果是开启的化,也可以用条件竞争session。

1. 预期解 1 ---- 包含日志文件

。。这个要抓包,,看htpp返回头中的header得知是ngix。
然后?file=../../../../../var/log/nginx/access.log
然后就可以拿啥了。试试看:
但是url传参会 进行编码,然后就不行,
在这里插入图片描述
然后可以在User-Agent:这个传,在后面添加就好。

在这里插入图片描述

2. 预期解 2 — 包含临时文件,

常规的包含临时文件的方法有2:

  1. 条件竞争,不断上传,然后包含。
  2. 利用 PHP7 的 segment fault

但是本题都不适用,怎么包含临时文件呢???

CTFSHOW:36D杯的 ALL_INFO_U_WANT ---文件上传-phpinfo包含-日志包含-临时文件包含-Linux查找文件内容命令_第1张图片

PHP会在脚本执行结束后删掉临时文件,而 段错误方法就是让PHP执行突然中止,这样临时文件就保留了。

既然 " PHP会在 脚本执行结束后删掉临时文件 ", 不让PHP的脚本执行结束,这样不就行了嘛?,只要自身包含自身就会进入死循环中。 死循环 要么被用户打断,要么被nginx超时掉,PHP 执行没有结束,临时文件不就 得以保存了吗?

这个自己包含自己,总是进入自己哪里就是死循环了。我们访问all_info_u_want.php,然后include 又是all_info_u_want.php,然后就进入了死循环了。

另外,可以通过 phpinfo() 来查看 临时文件的位置,带上 all_info_i_awnt 参数打开 phpinfo ,然后开始自身包含,写个上传表单:

<html>
<form action="http://5e66626f-8703-41ee-ae70-0a6446a94440.challenge.ctf.show:8080/all_info_u_want.php?file=all_info_u_want.php&all_info_i_want" method="post" enctype="multipart/form-data">
	<input type="file" name="filename">
	<input type="submit" value= "submit">
</form>
</body>
</html>

手动停下就好了。

/tmp/phphdpIOc

CTFSHOW:36D杯的 ALL_INFO_U_WANT ---文件上传-phpinfo包含-日志包含-临时文件包含-Linux查找文件内容命令_第2张图片不好找flag啊。
CTFSHOW:36D杯的 ALL_INFO_U_WANT ---文件上传-phpinfo包含-日志包含-临时文件包含-Linux查找文件内容命令_第3张图片

linux命令考察:

文件名不是flag。那就 找文件的内容。:

find /etc -name "*" | xargs grep "flag{"

就找到了flag了

你可能感兴趣的:(php,shell)