Skip to content

Latest commit

 

History

History
35 lines (29 loc) · 1.14 KB

challenge-27.md

File metadata and controls

35 lines (29 loc) · 1.14 KB

Challenge

index.php

<?php
include "flag.php";
$a = @$_REQUEST['hello'];
if(!preg_match('/^\w*$/',$a )){
  die('ERROR');
}
eval("var_dump($$a);");
show_source(__FILE__);
?>

flag.php:

<?php 
$623b701875cab0973f229b4647b75775 = "flag";

Solution

这里使用了 preg_match('/^\w*$/',$a ) 进行正则匹配,要求hello的输入必须为数字和字母的组合。 接下来执行了 eval("var_dump($$a);"); ,但由于过滤了符号无法正常闭合,所以不能像 Challenge 12 那样去构造。

注意var_dump里为$$a,可以输出对应的变量的值,但你并不知道flag对应的变量名,若是简单的爆破那就是无头苍蝇。

php中有一个特殊的变量:$GLOBALS,它引用全局作用域中可用的全部变量。

所以payload为:

index.php?hello=GLOBALS

Refference