mfw-wp

题目:

图片[1]-mfw-wp-Drton1博客

打开题目 得知该网站是git搭建。可能存在源码泄露的问题,于是进行访问:

图片[2]-mfw-wp-Drton1博客

同时我们F12看源码:

图片[3]-mfw-wp-Drton1博客

可以看到 flag 的参数。访问:

图片[4]-mfw-wp-Drton1博客

什么也没有于是,继续去利用git源码泄露,利用githack工具下载到源码:

图片[5]-mfw-wp-Drton1博客

打开首页的源码:

图片[6]-mfw-wp-Drton1博客
$file = "templates/" . $page . ".php";
// I heard '..' is dangerous!
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");
assert("file_exists('templates/').phpinfo();')") or die("That file doesn't exist!");

可以看到我们传进来的page 最后拼接到file上

然后代入strpos去。

有个重要的点是asset是能够执行php代码造成RCE的。

但是要跳出这个strpos函数,那么我们可不可以控制一下page让这个函数提前闭合?

当然可以我们让他认为提前闭合。

page=’) 传参进入:

file=templates/’).php

此时strpos(’templates/’).php,’..’)

很明显这个.php限制我们发挥了。 我们再file那一步把.php给去除掉 用注释//

page=’)// 传参进入:

此时strpos(’templates/’),’..’)

我们用 . 连接命令让它连在一起 传参page=’).phpinfo(); //

图片[7]-mfw-wp-Drton1博客

可以看到我们phpinfo() 成功执行。

因为之前下载了源码 我们知道 flag在哪里 直接构造 system(’cat ./templates/flag.php’); 替换phpinfo();

拿到flag:

图片[8]-mfw-wp-Drton1博客

这个题有多种构造绕过方法

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论