buu做题(7)

[BJDCTF2020]Mark loves cat

开始的界面没啥东西, 看了下源码好像也没啥东西
用dirsearch扫描一下
有git 泄露
用工具githack下载源码
 

<?php

include 'flag.php';

$yds = "dog";
$is = "cat";
$handsome = 'yds';

foreach($_POST as $x => $y){
    $$x = $y;
}

foreach($_GET as $x => $y){
    $$x = $$y;
}

foreach($_GET as $x => $y){
    if($_GET['flag'] === $x && $x !== 'flag'){
        exit($handsome);
    }
}

if(!isset($_GET['flag']) && !isset($_POST['flag'])){
    exit($yds);
}

if($_POST['flag'] === 'flag'  || $_GET['flag'] === 'flag'){
    exit($is);
}

echo "the flag is: ".$flag;

$$的变量覆盖
看第一个 exit($handsome)
 

foreach($_GET as $x => $y){
    if($_GET['flag'] === $x && $x !== 'flag'){
        exit($handsome);
    }
}

看起来这是矛盾的, 但是可以传两个参数 , 一个是flag 一个是handsome
?handsome=flag&flag=handsome

经过一次get的变量覆盖
$handsome=$flag
$flag=$flag

然后进入到判断那里面
开始进入遍历 $_GET
第一个 $x --> handsome
可以满足 $_GET['flag']==$x 而且 $x==handsome 也满足  !==flag
然后 exit($handsome) 输出 $handsome , 经过前面的GET的变量覆盖
$handsome=$flag  , 所以就可以输出flag的值了

当然也可以构造出其他的, 利用后面的  exit($yds); exit($is);
来输出flag

?yds=flag

或者
?is=flag&flag=flag

[BJDCTF2020]Cookie is so stable

题目很明显的提示了 Cookie有问题

多尝试几遍, 可以发现无论输入什么都会登进去

所以应该不会是sql注入啥的
而且这个 形式感觉挺像 ssti注入的
尝试一下 {{3*3}}

也确实能够执行 输出 9
当然前面提示说看 cookie
登录后就会发现 cookie多出一行 user ,  他的值经过url解码就会发现就是我们输入的东西

直接修改里面的值 , 相应的内容也会变化

需要注意到这个ssti注入是php, 而不是python的

抓个包, 也可以看到

修改里面的user的值
通用的payload就可以打出来

https://www.cnblogs.com/bmjoker/p/13508538.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值