CTF

北邮自招复审wp

北邮自招

Posted by Mr.R on June 12, 2018

北京邮电大学自主招生复试wp

今年我没参加,这是朋友发来的题目

RE

  • 题目
  • simple

    这题还是比较简单的,首先直接ida打开。 通过下面的 我们便可以得出flag长度为32 然后分析内部的操作。 我们可显然可以看出算法核心就是对flag进行一堆骚操作之后与v6数组进行比较—>遇见这种题目我们很容易想出使用z3约束进行求解 但是这里其实还有一个坑,他在骚操作的时候用了uint8,而uint8的上限是256,所以我们在写约束的时候要%256. code如下

      from z3 import *
    
      str1 = [
          0x4f,0x3b,0x23,0x11,0xe1,0x1f,0xfe,0xb3,0x4b,0xdd,0x75,0xfe,0x47,0xec,0xf2,0x43,0xdc,0x38,0xd4,0x64,0xde,0x45,0xbd,0x01,0x1b,0x04,0xb9,0x89,0x7d,0xb6,0x4e,0xe2]
    
      str2 = [
          0x6b,0x6e,0x26,0x54,0x56,0x4b,0xe8,0x80,0xdc,0x28,0x46,0x18,0x71,0xcb,0x65,0x44,0x9b,0x2b,0x22,0x82,0x2b,0x56,0x8e,0xe7,0x69,0x41,0x4c,0x1f,0x3a,0x45,0x5c,0x35]
    
      flag = [BitVec("flag%d"%i,16) for i in range(32)]
    
      S = Solver()
    
    
      for i in range(32):
          S.add(flag[i] > 32)
          S.add(flag[i] < 128)
          S.add((str2[i]^(((16*flag[i])|(flag[i]>>4))%256)) == str1[i])
    
      if S.check() == sat:  
          m = S.model()  
          flag1 = '' 
          for i in range(32):  
             flag1 += chr(m[flag[i]].as_long())    
          print flag1
    

    运行得到flag:

    BUPT{Ea3y_3ncrypt1on_13n’T_it?!}

  • kaisa

    依然直接IDA打开 结合hint 很显然可以看出是凯撒加密同时v5=11 显然右移了11位,直接取出数据用工具暴力跑一波 得到flag

    BUPT{Ka1_3A_I3_vERy_SmarT_R1Gni?!?}

  • main

    不会。。。。。

WEB

  • WEB1

      <html>
      <head>
          <meta http-equiv="content-type" content="text/html;charset=utf-8">
      </head>
      <body>
        	
      	<!--
      	index.php
      	<?php     
          $flag='xxx';     
          extract($_GET);     
          if(isset($gift)){        
              $content=trim(file_get_contents($flag));
              if($gift==$content){ 
                 echo'flag';     }
               else{       
                 echo'flag has been encrypted';}   
               } 
          ?>
          -->
          </body>
      </html>
    

    很显然是一个变量覆盖漏洞,直接GET ?gift=content即可

    flag is OHCG{82s5r276o3006q2054048p6799op543q}

    又是一个凯撒….工具跑一跑

    BUPT{82f5e276b3006d2054048c6799bc543d}

  • WEB2

    题目提示 1s中回答随机产生的数学题 运算符号不发生改变 所以用python先取出需要运算的数然后进行运算 最后post提交即可 附上表哥的脚本

    eval(表达式即可运算)

感谢大表哥iosmosis13年