第二届西安邮电大学网络安全大赛(部分re)
下面是我在安全组取得的最好成绩,也算是我学习安全的纪念吧。
ez_MATH
下载文件后打开:
1 |
|
提示加密后的flag为:
1 | encodeflag = {106, 112, 91, 105, 117, 79, 91, 120, 100, 97, 67, 109, 97, 71, 71, 71, 91, 109, 115, 127} |
经过逆推后的代码是:
1 | int s[] = {106, 112, 91, 105, 117, 79, 91, 120, 100, 97, 67, 109, 97, 71, 71, 71, 91, 109, 115, 127}; |
eazy_encode
下载后打开程序:
发现缺少两个dll文件,没关系,网上搜索直接下载,放入与exe文件同一个文件夹中。之后程序就能运行了:
通过peid检查文件信息,包括文件是否加壳,文件是32位还是64位。
发现是未加壳的32位文件,放入ida中。F5找到main函数:
能知道str2的内容。需要知道str1的内容,显然str1和v10有关,而v10就是flag,发现sub_411294这个函数比较重要。点开后:
能看出来这是base64加密。
将[nyi[4ujZYOmOkSgcn:1Y4KmenWzd3W:所有字母减一后base64解码后就能获得flag。
easy_re
解压后两个文件:
zip文件打不开有密码,显然key是他的密码。打开key:
1 | BITS 64 |
读代码知,key实际上是[rdi],这个程序先把rdi与rax异或,然后用VPSHUFB调整代码顺序,最后一个比较跳转到fin
主要是VPSHUFB这条指令的学习 通过百度了解到
这两幅图可以让我们清楚的学会这条指令 ,然后就可以在纸上画出正确的值(一共就四条,不写脚本了)
拿到四个正确的值后 一个异或即可拿到key
1 | e=0xfeca50051345b0b0 |
用key解压easy_re.zip文件。打开后:
用peid查看发现是upx加壳的32位文件。
然后脱壳处理,初次使用upx脱壳工具会发现无法脱壳,原因是upx加密后进行了防解密的修饰。
用Stud_PE修改区段名
将区段名的R都改为U,这样就能用upx工具脱壳了。
脱壳后的文件放入ida中:
通过shift+F12获取字符串
发现you are right you are wrong
点击跳转到字符串位置,向上翻找到:
选定后按d 和p后就可以按F5
获得函数:
知道了xmmword_403018和dword_402140获得dword_40343c
通过下面代码获得flag。
1 |
|