2017ctf writeup

来源:互联网 发布:山东烟台正浩网络 编辑:程序博客网 时间:2024/05/23 16:37

2017ctf writeup

无线破解密码:

airrack-ng的指令去读取ivs文件的内容:


获取密码:12345

解压缩,分析数据包:


Base32解码:

http://tomeko.net/onlin

e_tools/base32.php?lang=en


二进制解码:

http://www1.tc711.com/tool/BASE64.htm

large字符转换成ascii,然后编码为二进制,与给定的二进制异或运算,然后计算器

然后再还原成ascii和字符:


Ascii编码

将代码放入到在线编码:

在线编解码参考网站:http://tool.oschina.net/encode

\u606d\u559c\u60a8\uff01\u006b\u0065\u0079\u007b\u0074\u0068\u0065\u0020\u0066\u0069\u0072\u0073\u0074\u0020\u006b\u0065\u0079\u007d

 

unicode编码形式:

恭喜您!key{the first key}

凯撒编码:

凯撒有两种编码脚本,一种是字母26内循环移位,一种是127次非字母内的循环移位;

e6Z9i~]8R~U~QHE{RnY{QXg~QnQ{^XVlRXlp^XI5Q6Q6SKY8jUAA

这次加密的源码一看就含有非字幕项,将其放在127次移位的脚本中爆出来一个base64

 脚本为

 

结果:

 

a2V5ezY4NzQzMDAwNjUwMTczMjMwZTRhNThlZTE1M2M2OGU4fQ==

解密

key{68743000650173230e4a58ee153c68e8}

LM/NTLM HASH解密

http://blog.csdn.net/gscaiyucheng/article/details/9151257

通过分析得知,前半部分是MD4,后半部分是MD5,通过在线解码就可以得到密文;

也可以通过彩虹表去破解md5,有待研究。

http://www.chamd5.org

密码:1qazXSW@txl

前半段是MD4,后半段MD5


我心永恒:MP3隐写破解

将音频文件用notepade++打开,然后搜索pass,发现密文。


pass:pass_123_word

mp3stego 获取隐藏文件

打开txt文件,查看即可得到flag


时间注入:简单的web题

通过抓包分析,在X-Forwarded-For项中不过加入什么,在页面都会实现对应的内容,除非用逗号隔开,才会不显示。

 

发现是时间注入,可参照网站http://www.jianshu.com/p/5d34b3722128

采用第一种方法,用脚本跑,脚本如下:


然后去爆破网站,利用时间差来发挥对应的flag内容,超过5秒就返回值,由于网速的原因,对应的32位循环猜解可能出现多种可能,所以需要多次跑,取其中相同的部分。

脚本跑的结果为:

 

8个不确定,多跑几次,然后取相同部分就是flag,最后得到flag为:

flag{4c9551d5be5612f7bb5d286785}

寻找key

首先是获得一个风景图,

 

binwalk分析,发现里面还有图片,然后用foremost分解:

得到一个压缩包和一张风景图,


然后压缩包发现是伪压缩,可以在kali里面直接提取,也可以修改对应的hex,可参考:

http://blog.csdn.net/ETF6996/article/details/51946250

然后解压得到另外一张图:

 

winhex分析,发现尾部有一句话引起注意,然后通过凯撒解码即可得到flag

isccc4fagtdfrgagtsnhyh

 Base64编码:

下载,查看help.xml文件,直接base64解密即可:

逆向一道题目的解题WP

OD载入AnyunGameCM1,观察入口点,可以知道是Delphi程序

 

运行之,观察下,发现序列号错误了,程序会清除文本框信息,没有任何弹窗和文本提示,果断放弃MessageBoxShowwindow等常用断点函数


观察程序线程,发现在点击Check按钮后,程序会新启动一个线程,然后瞬间结束,

据此,猜测程序会新启动一个线程来处理序列号,于是下断CreateThread函数,点击Check按钮,逐步运行到了线程的处理代码

逐步跟进之,发现在这里,右侧寄存器中出现了我们输入的序列号,于是猜测这里估计序列号处理的核心位置

发现内存串比较代码,还有后面紧跟一个判断代码


运行到判断代码,然后在右侧修改0标记,强制改变判断代码的流程,

修改流程后,直接F9运行,发现程序界面终于发生变化了,于是可以确定这里就是序列号处理函数!但是显示出来的提示是乱码,不要紧,这里估计是提示字符串被用正确的序列号加密了,我们的序列号错误,所以解密出来的提示是乱码。


很明显,如果程序想要在此处判断正确,则上面的内存串比较函数就得一样。换句话说,这段代码对我们输入的序列号做了某种处理之后,然后在和程序内的一串内存串比较,如果相同,则序列号正确。

经过跟踪,发现了加密函数


可以看出加密函数很简单,就是对序列号做了异或和加和处理,完全可逆,我们用刚才说的那段用了比较的内存串,经过逆运算之后,便可得到序列号。

 类似key{****************}

 输入之后,点击Check,程序提示You Got it