BJD-2rd_Writeup(SOME)
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里面对这个图片复制命令操作,发现:
[BJDCTF 2nd]圣火昭昭-y1ng
图片备注是解密后得到key
,提示说正确的key没有最后的com
,然后用outguess解密,key为密钥,得到flag
[BJDCTF 2nd]TARGZ-y1ng
虽然我曾说shell是最垃圾的语言,然而此刻还是,真香!
1 | !/bin/bash |
[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
简单的整数溢出
可以输入0x400
bytes的数据,但是会用strlen
函数获取输入长度,要求长度大于3小于9,而覆盖ret
的返回地址需要总共0x19
bytes的数据。这时候注意v3
是一个int8
类型的无符号变量,也就是v3
最大也只能是255
,超过255
的话相当于做了一次%255
的运算。也就是我们可以通过输入大于0x103
小于0x109
bytes的数据来绕过if判断,从而成功劫持EIP
。又发现程序内置了system("/bin/sh")
函数,直接调用即可。exp如下:
1 | from pwn import * |
[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的分析命令将其分析为汇编指令,发现果然是密文相关的操作。
写出脚本解得flag
1 | flag_encode = "]U[du~|t@{z@wj.}.~q@gjz{z@wzqW~/b;" |