BXS入门赛部分writeup

pwn1  盲打(笑)

前言:没有听鱼哥的话,事先没有装好环境,于是开始没做出来,然后全程在装pwntools,经过一番努力,失败了0.0

最终在网上搜了一段python socket连接脚本,终于可以做题了(哭)。这是一个盲打,向服务端发送一定长度的字符串,服务端就会给你最喜欢的flag.

写下脚本尝试需要多长的字符才可以恰好让服务端给我们flag,脚本如下(由于现在服务端已经关闭,不能实时演示了,请见谅)

最终只需要如下脚本便可以让服务端乖乖把flag给我们

 

 

RE

0x00 Easy_CrackMe

下载附件,直接拖进IDA进行静态分析,开始点击WinMain函数,没有发现什么关键代码,一个一个函数点下去,点到sub_401080时发现关键代码

 

分析程序逻辑,通过关键代码我们可以知道当(v3 == 97 , v4 ==a5y ,v5 == aR3versing ,  String == 69) 时程序输出,其中97是ASCII码,单击它按R可转成字符a, 单击a5y转到它的定义发现它其实是字符串5y,同aR3versing是字符串R3versing,而String通过截图中我们可以看到它位于v3前面。由此我们已经可以推出

flag: Ea5yR3versing

 

 

0x01 KeygenMe

拖进IDA进行静态分析,直接点进main函数,F5

不难看出加密算法,开始我犯了一个错误,我把5B134977135E7D13分成单个字符进行异或解密,得出一串乱码,于是很方,错误脚本见下图

于是再继续看原加密算法,发现错误处

首先我们要知道sprintf这个函数的在这里的作用是把异或的结果以16进制存到v13中

于是修改脚本,如下图

运行得到flag: K3yg3nm3

 

MOBILE

0x00 Gift

下载好gift.apk,我没有用jeb对它进行反编译,我用的是dex2jar加jd-gui。它俩的用法请自行百度。这里直接放出反编译后的源码,这很明显就是给我们的gift.如图

 

0x01 Register

查看反编译源码,找到关键判断语句,发现checkSN函数是关键函数。

找到checkSN函数进行分析

 

 

经过分析我们可以知道此函数作用是取32位MD5中的16单数字符组成注册码。

于是我们可以自己写一个注册码生成脚本,脚本如下

这里输入用户名mumuzuishuai,得到注册码b10d7be3557a3021.

安装Register程序输入用户名和注册码,就会出现flag

Flag:G00D_YOU_HVCK_IT

 

posted @ 2017-04-10 19:28  五千年木  阅读(444)  评论(0编辑  收藏  举报