[WP] NJUPT CTF 2019
RE
动态调试,在strcmp下断得到flag
PWN
pwntools连接获得flag
构造条件获得flag
exp:
CRYPTO
题目给出文本
又因为提示是keyboard
猜测和键盘有关系
有单字符重复输入,猜测和9键有关系
wertyuiop是26键键盘的第一排字母,猜测与其顺序有关系
建立映射表
字母重复次数为对应9键键盘上第几个字母
得到flag
(自己脑洞真的大)
做完发现这个已经被人发在了百度贴吧里了,做题之前应该先搜一下的。。
MISC
分离得到两张图片
扫描二维码得到flag
在linux中pip安装得到链接
使用浏览器下下来
发现setup.py
查看
发现base64,解密得到flag
找最大的文件
这个文件七百多兆
一看就是个资源
flag肯定在这里
winhex搜NCTF
好吧。。找到了。。
分离得到压缩包
伪加密,使用7-zip解压
得到大段base64字符串
base64隐写 解密
解密脚本
#coding:utf-8 def get_base64_diff_value(s1, s2): base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' res = 0 for i in xrange(len(s2)): if s1[i] != s2[i]: return abs(base64chars.index(s1[i]) - base64chars.index(s2[i])) return res def solve_stego(): with open('C:\\Users\\80597\\Desktop\\南邮nctf\\3.txt', 'rb') as f: file_lines = f.readlines() bin_str = '' for line in file_lines: steg_line = line.replace('\n', '') norm_line = line.replace('\n', '').decode('base64').encode('base64').replace('\n', '') diff = get_base64_diff_value(steg_line, norm_line) print(diff) pads_num = steg_line.count('=') if diff: bin_str += bin(diff)[2:].zfill(pads_num * 2) else: bin_str += '0' * pads_num * 2 print(goflag(bin_str)) def goflag(bin_str): res_str = '' for i in xrange(0, len(bin_str), 8): res_str += chr(int(bin_str[i:i + 8], 2)) return res_str if __name__ == '__main__': solve_stego()