新BugKu-web篇-web29

web29

这道题考察的是sha1()函数的漏洞,也就是可以把参数变成数组绕过,我们先分析代码

<?php
highlight_file('flag.php');
$_GET['id'] = urldecode($_GET['id']); // 使用get方式传入id并且会url编码
$flag = 'flag{xxxxxxxxxxxxxxxxxx}';
if (isset($_GET['uname']) and isset($_POST['passwd'])) { // 使用get方式传入uname的参数,
                                                         // 使用post方式传入passwd参数
    if ($_GET['uname'] == $_POST['passwd']) // 如果这两个参数相等

        print 'passwd can not be uname.';  // 打印 passwd不能是uname

    else if (sha1($_GET['uname']) === sha1($_POST['passwd'])&($_GET['id']=='margin'))
    // 如果经过sha1加密后的uname和passwd相等,并且id=margin

        die('Flag: '.$flag); // 返回flag

    else

        print 'sorry!';  // 不满足条件就打印 sorry

}
?>

如果当sha1加密的使用传入数组,该函数时无法处理数组的,就会返回NULL,返回NULL就会变成 NULL === NULL ,使得if成立,所以使用bp改包,构造payload
在这里插入图片描述
得到flag
在这里插入图片描述










注:萌新第一次写write up,不足之处还请见谅,不对之处欢迎批评指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值