前言
在安询杯中解出的几道题,这里记录一下
然后给自己开一个坑:
(1) thinkphp6 反序列化要学
(2) RSA 还有AES 也要学
1.MISC
1.1 吹着贝斯扫二维码
解压后,是一堆二维码的图片
拼图……手动拼图……
然后扫描二维码:
1
| BASE Family Bucket ??? 85->64->85->13->16->32
|
在flag.zip的文件中
猜测这是密文.然后上面那个base全家桶是一个加密的过程,这个是密文,顺序倒过来解密
其中13指的是rot13,用脚本解码,脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
import string
def decoder(crypt_str,shift): crypt_list = list(crypt_str) plain_str = "" num = int(shift) for ch in crypt_list: ch = ord(ch) if ord('a') <= ch and ch <= ord('z'): ch = ch + num if ch > ord('z'): ch -= 26 if ord('A') <= ch and ch <= ord('Z'): ch = ch +num if ch > ord('Z'): ch -= 26 a=chr(ch) plain_str += a
print(plain_str)
crypt_str = raw_input("Crypto_text:") print "!------decode------!" shift=13 decoder(crypt_str,shift)
|
1
| :d]>JA62bf<^o]!;,or.=a;i@9/17'@8oNU
|
base85解密,不过要用a模式,
ThisIsSecret!233 压缩包密码
1.2 music
MP3stego这个工具
1
| Decode.exe -X -P 123456 3.mp3
|
然后得到一个txt文件.里面有wav压缩包的解压密码
然后使用silenteye解码即可,这个也是在百度的时候发现的,下载地址:https://silenteye.v1kings.io/
要下载最新版,旧版的无法解密wav文件,参考:几道音频misc
1.3 attack
流量分析题
分析流量包可以发现这个流量差不多就是去获取那个加密的zip包,把他的数据保存成zip文件,
会是一个加了密的zip包,里面就有flag.txt
然后导出这个lsass.dmp
使用工具mimikatz获取administrator的密码,
W3lc0meToD0g3 是压缩包的密码,打开flag.txt
在最底下有flag
参考:https://www.secpulse.com/archives/2926.html
2.CRYPTO
2.1 funny-php
我直接贴exp了,这里有个很好玩的地方就是在加密算法中有这么一段代码
1 2
| if($__%100==0) $__=base64_encode($__);
|
这个自己领悟吧…..exp如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <?php $afterbase64="11444=?>99=<>@??AJIDEJGIIROLLNOPPZ[TUVWWXZZ\]_c"; function decode($str){ $_1=0; while(strlen($str)!=0){ $base64_decode=base64_decode($str); if(($base64_decode%100==0)&&(strlen($base64_decode)!=0)){ print("cookie------------"); print($str); print($_1); $str=$base64_decode; } $last=substr($str,-1); $ord_last=ord($last)-(46-$_1); print(chr($ord_last)); print("\n"); $str=substr($str,0,-1); $_1++; } print("cococococo-------------"); print($_1); } decode($afterbase64); print("\n"); print("dddddd---------------"); ?>
|
然后这个的解码结果如下:
然后逆序的看
1
| 123,101,97,115,121,95,101,110,99,111,100,101,125
|
再chr()转字符,得:flag{easy_encode}
2.2 standard_AES256
sbox,key和cipher 为已知量
思路:做Sbox的逆S(n-1)映射,走一下exp得flag
1 2 3 4 5 6 7 8 9 10 11 12 13
| Sbox = ['********'] ni_Sbox= ['*********']
for x in range(16): for y in range(16): t=Sbox[x][y] n = t%16 m = t//16 ni_Sbox[m][n]=x*16+y
for x in range(16): for y in range(16): print(ni_Sbox[x][y],k=",")
|
解出来的ni_Sbox作为aes256的__InvSbox的table再走一遍,得到flag,脚本网上找….
flag{sbox_to_invsbox}