[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()