补档: Tongji CTF 2016 writeup

突然翻到了之前写的 writeup, 毕竟是第一次接触,放进来留个纪念。

我那时候的艺名叫 C4F38483,然而当时貌似并不会写 java (现在也不会。哈哈。

TJCTF2016_C4F38483_writeup

Flag

把文件用IDA反编译一下,发现首先读取了flag文件,并把地址传进了一个函数,然后发现这个函数的printf只有一个format参数,可以利用printf的格式化串参数不定的漏洞读取出栈中flag的文件的地址并输出。

side

反编译发现都是mov指令,看不懂,拿strings命令试一下出来了好多字符串,拿其中的几个试了一下666666竟然过了,后来才知道是题目出了bug,后来查了一下发现好像和图灵机有关,题目不出错还真有可能做不出来。

GoT

反编译提示错误,应该是加了壳,用PEiD试了一下是UPX那就不用手动脱壳了,直接用UPXshell脱壳,然后发现程序是对字符串”jonsnow”做了些操作,自己写个程序试一下就出来了

traffic

文件名字叫菜刀,看来是个暗示,二进制看一下有个pcapng文件,简单查了一下,用wireshark打开之,找到一条用了base64的指令,解开之后发现是读取了一个zip文件,dump出来,删掉文件开头的几个无用byte,解压又出来一个pcapng文件,打开之后从某一条里找到了flag

factorize

先用linux的factor命令算了一下试试,半小时没跑出来,最后找到了一个网站factordb.com可以在线查,不用算,解决之。

RSA

应该是承接上一题来的,提示了用openssl指令,查了一下openssl的常用命令,首先分析了一下公钥

Public-Key: (256 bit)
Modulus:
    00:c9:8b:e1:39:58:06:34:21:3f:bd:1e:64:5f:00:
    c2:c8:98:26:91:b1:65:b2:05:4d:56:7c:29:30:e1:
    29:39:2f
Exponent: 65537 (0x10001)
Modulus=C98BE139580634213FBD1E645F00C2C8982691B165B2054D567C2930E129392F

然后用上一题的网址分解n,求出p,q,c,用拓展欧几里得算d,有了这些数据本来打算直接破解,还是跑不出来,然后查了一下openssl的RSA私钥格式,先生成了一个256的私钥,把其中的数据替换成我的,然后作为私钥解密,果然出了结果

ship

把dex用dex2jar搞成jar,jd打开,发现是用了一个so文件,ida打开so文件,发现是把输入使用了一个函数加密,与里面存的一个字符串比较,对了给flag,查了一下TEA果然有这个加密算法,然后根据这个写一个解密的函数,把所给的byte解密,得到的byte正好看上去是一个字符串,但是函数里把byte转成int处理的,所以结果应该是每四个字节反过来一下,才过的。

acfun

binwalk试一下文件里藏了个压缩包,解压出来另一张图,然后用stegsolver打开试一试,还没等试呢,就发现在右下角有一串小字,就是flag

collide

自己肯定没法破解,找到一个破解md5网站,国内的,破解竟然要收费 摔!然后又找到一个外国网站免费破解之。(这一定是体制问题!I’m angry!

fly

根据提示应该和分数有关,反编译一下,发现每个分数都对应一段字符串,还有一个叫appendtoflag的函数,尝试按分数大小拼在一起,发现最后有个等号,试一下base64,果然就是flag

签到

略。不过一开始提交总不成功还以为是陷阱呢

XSS

根据提示找到一个XSS平台,叫xssnow.com 试了一下应该只是屏蔽了&这个符号,直接用平台给的代码xss就过了

TEN.

题目名就暗示这是一个.net程序,找到相应软件反编译之,分析了一下代码,自己写一个程序跑跑试试就过了。

cake

拿到题目反编译一下,发现是对输入进行了一下操作然后比对,于是自己写了个程序从0-255每个字符逐个试一下,跑出来了flag

XSS2

比第一个XSS难了,过滤掉了(),’’,””,=,+,[],&,于是想到编码,查到了svg标签内部的script可以使用(这样的形式编码,由于&被屏蔽,换成 %26%23 然后就过了。

homework

反编译,看到有个函数读取并输出了flag,然后发现可以利用gets使缓冲区溢出改变返回地址为这个函数的地址。于是写个python脚本跑跑就出来了

FBI

查了下隐写术,有一种叫LSB,然后用软件分析了一下,果然藏在了最后一个bit里

XD

提示太明显了,先base64解码,然后hex to ascii 就好

substitude

题目名是代替的意思,一开始被题目描述里的one piece误导了,感觉应该和日文有关,后来发现文件里只发现一对{},感觉应该是flag,于是反应过来是代换密码,把里面奇怪的字符先用ABCD代替,然后找到个网站分析了一下各个字母出现频率,从the是最高频率单词入手,折腾了好久终于代换回来了,发现是一篇介绍代换密码的文章。

想法

还记得这次有道 CBC 字符翻转攻击不会,后来接触到之后突然想起来那道题。还有几个逆向题目貌似现在也不会。

感觉黄渡理工虽然有很多很多比我强太多的大佬,但是整体上没什么 CTF 的氛围,ACM 这样的程序竞赛稍好点,不过比起别的学校还是差些。直到现在还是很后悔大二没好好学啊,唉。

话说当时高考要是到别的学校学信息安全现在会怎样呢……