承接爆破1。
爆破1中说到,flag在变量里,本题说flag不在变量里,所以考虑文件包含。
文件包含漏洞利用,有几个常用函数,下面一一介绍。
PHP显示函数有两个,show_source 和 highlight_file,这两个可以将PHP代码打印到网页上。
所以第一个思路:把前面的var_dump()闭合,然后显示出flag.php文件。
payload:?hello=);show_source(%27flag.php%27);var_dump(
执行的代码是:
eval("var_dump();show_source('flag.php');var_dump();");
写第二个var_dump是为了闭合后面的
);")
第二个思路是,通过文件显示函数直接把flag.php的内容输出。
payload:?hello=file(%27flag.php%27)
%27 是对 ‘ 进行了URL编码。
这里把单引号换为双引号,就bool(false)了
emmmm 去问问老师傅怎么回事。
输入的时候,跟单双引号没有关系,主要要对单双引号进行URL编码。
file()把文件读入一个数组。
file_get_contents()把文件读入一个字符串。
用file_get_contents()返回一个string(83),得不到flag,可能字符串的格式不能显示出来?