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