2018·i春秋圣诞欢乐赛官方WriteUp

本文探讨了snowHTML隐写技术,通过在文本末尾嵌入空格和制表位进行信息隐藏,并介绍了解密网站。同时,解析了两道PHP题目,giftphp与giftphpplus,详细讲解了如何利用strpos函数漏洞和正则回溯绕过函数判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gift

打开页面

考点: snow html隐写

snow 是一款在html嵌入隐写信息的软件,
它的原理是通过在文本文件的末尾嵌入空格和制表位的方式嵌入隐藏信息,
不同空格与制表位的组合代表不同的嵌入信息。

解密网址:http://fog.misty.com/perry/ccs/snow/snow/snow.html
密钥为题目名字

gift php

Do you know .swp file? 非正常关闭vi编辑器时会生成一个.swp文件
访问.index.php.swp下载下来, vim-r.index.php.swp还原即可 源码

<?php
function areyouok($greeting){
    return preg_match('/Merry.*Christmas/is',$greeting);
}

$greeting=@$_POST['greeting'];
if(!areyouok($greeting)){
    if(strpos($greeting,'Merry Christmas')!==false){
        echo 'Merry Christmas. '.'flag{****}';
    }else{
        echo 'Do you know .swp file?';
    }
}else{
    echo 'Do you know PHP?';
}
?>

要求post一个 greeting参数,经过areyouok函数正则过滤后如果返回false,
就进入下一个if,如果 greeting参数包含 MerryChristmas则打印flag。
可以利用strpos函数的一个漏洞,传入一个数组,会返回 NULL, NULL不强等于false,即可绕过。

gift php plus


这题是在gift php的基础上加上了is_array的判断,不允许使用数组来绕过。

所以上一道题的思路不能再用了。 这里需要用到正则回溯,可以参考p牛的文章:https://www.leavesongs.com/PENETRATION/use-pcre-backtrack-limit-to-bypass-restrict.html

PHP为了防止正则表达式的拒绝服务攻击(reDOS),给pcre设定了一个回溯次数上限 pcre.backtrack_limit,默认为100万。当正则回溯超过这个上限时,就会返回false。

因此我们只要post100万个字符,让它回溯大于100万次,函数就会返回false,从而绕过if判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值