Htlab_Weekly_Ctf_17

给你一串代码

进入题目,给了串代码,不过是图片的,没有给文字,整理一下,得到

<?php
	include "flag.php";
	$_403 = "Access Denied";
	$_200 = "Welcome Admin";
	if ($_SERVER["REQUEST_METHOD"] != "POST"){
		//需要POST方法
		die("hetianlab flag is here :biubiubiu");
	}if (!isset($_POST["flag"])){
		//需要POST一个flag
    	die($_403);
    }foreach ($_GET as $key => $value){
    	//遍历GET方法所传值
    	这里假如传的是a=b,下面这个就会变成$a=$b,存在一个变量覆盖了
 		$$key = $$value;
 	}foreach ($_POST as $key => $value){
 		//遍历POST方法所传值
		$$key = $value;
	}if ($_POST["flag"] !== $flag){
		die($_403);
	}
	echo "This is your flag : ". $flag . "\n";
	die($_200);
?>

代码重点在$$key = $$value;这一句,存在一个变量覆盖,flag是在$flag这个变量里面,但是POST方法必须传一个flag,等到foreach遍历的时候,$flag就被重新赋值了,这个时候输出的就不是原来的flag了,但是,下面有个die($_200),这里我们可以通过变量覆盖,通过GET方法传入_200=flag,也就是第一个foreach遍历的时候,变成$_200=$flag,这个时候原本的_200的值就被flag给覆盖了,这个时候die出来的就是flag了,综上,构造payload如图所示,得到flag

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值