Bugku web——web8

Bugku web——web8,第1张

打开连接,获得代码:

This is flag:" ." $flag

"; } else { echo "

sorry!

"; } } ?>

分析代码:

  • extract($_GET):函数extract()有通过数组进行赋值的功能:
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array);
echo "\$a = $a; \$b = $b; \$c = $c";
  • file_get_contents($fn):file_get_contents功能是从文件名为“$fn”的文件中读取数据,但是当$fn的值为“php://input”,它会接受并返回post的值

根据提示txt,猜测存在flag.txt

其内容为flags,因此可以使$ac值为flags,$fn值为flag.txt,使$ac和$f相等

还有一种解法,利用file_get_contents在$fn的值为“php://input”时会返回post值 的特点,使$ac值为123,$fn值为“php://input”,并post值123,同样可使$ac和$f相等

payload构建完毕,下一步是通过函数extract进行赋值,但是其参数为数组,而且$_GET后并没有参数,因此怎么通过get传值是个问题

extract($_GET)       一般不是这样吗?? $_GET[id]

查看writeup,发现直接通过get传值即可

http://123.206.87.240:8002/web8/index.php?ac=flags&fn=flag.txt

为什么可以这么用?我并没有查到资料,那只能猜测如果$_GET后不加具体参数名的情况下,其返回值为一个数组,其中包含参数名和值的对应关系

第二种解法如下,

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/791774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存