首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

“百度杯”CTF比赛 2017 二月场 爆破-1

做题网址:https://www.ichunqiu.com/battalion?q=3433

一.解题思路

首先看到代码:

include "flag.php";

$a = @$_REQUEST['hello'];

if(!preg_match('/^\w*$/',$a ))

{

die('ERROR');

}

eval("var_dump($$a);");

show_source(__FILE__);

?>

看到超全局变量$_REQUEST,加上提示说flag就在某六位变量中,想着可能和Global 作用域有关,然后想到 [php全局变量漏洞 $GLOBALS漏洞预警],漏洞相关资料可以看这个网址:https://blog.csdn.net/kendyhj9999/article/details/26624915

所以试着从全局变量入手。

二.解题步骤

直接在网址后加?hello=GLOBALS 把hello变为超全局变量,同时用burpsuite进行抓包拦截得到flag:

三.解题收获

1.

可变变量:把一个变量的值作为一个变量的变量名

$$a = 'world'; // 相当于$$a=$hello=world

echo "$a $hello";?>// 输出hello world

2.

GET方法和POST方法传值的区别:

使用get方式提交表单时,浏览器将各个表单字段元素及其数据按照url参数的方式附加在请求行的资源后面。使用get方式传递的数据量是有限的,一般限制在1K以下。

使用post方式时,浏览器把各表单字段元素及其数据作为HTTP消息的实体内容发送给web服务器,而不是作为url地址参数传递,因此,使用post方式,要比使用get方式大的多。

3.

burpsuite作为代理中间人对请求和响应进行拦截,丢弃,修改,把请求数据包转给其他服务器的功能。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180717G1YMYW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券