171023 逆向-BDCTF(Re)

来源:互联网 发布:php前端 java后端架构 编辑:程序博客网 时间:2024/06/17 10:05

1625-5 王子昂 总结《2017年10月23日》 【连续第388天总结】
A. BDCTF-蓝盾
B.
逆向就3个题目,难度适中~
感觉前两个re思路都很清奇

逆向签到

ExeInfoPe查壳,发现是UPX,直接工具脱壳,拖入IDA
反编译看到是一串数组
显示输入内容和(数组值+下标)作差的结果,提示要看到”flag”
那么开头字符作差后应该是’f’的ASCII
即key=数组第一个值+下标0+ord(‘f’)
算出key是233,输入程序即得到flag:
这里写图片描述

简单逆向

ELF文件,直接拖入IDA反编译
给了三个数字,相当于一个数组
循环17次,所以估计flag长度为17
随机生成一个数,在check函数中运行比较

结束的时候要求check return1 17次

check函数中又给了一个数组,进行运算:
这里写图片描述
因此只要按序将内外两个数组异或即可得到需要的随机数

注意外部数组是以long类型存储的,内存中是小端序,第一个元素实际上是最后两个数组,脚本中要变换一下:
最后第3个int是33,我将它插入在第二个整数的前边了,因为是逆序处理
实际上应该在s最后加上的
这里写图片描述
提交发现错误,队友凭借敏锐的直觉将o改为了i后成功
flag{linux_is_ok}

apk逆向

拖入APK改之理反编译,查看MainActivity类,找到点击事件
这里写图片描述
调用了test类的boom方法,跟过去
这里写图片描述
发现通过check方法判断两个字符串,arg4由点击事件传入包名,arg5则是输入的字符串
check方法中进行了处理和计算,懒得脚本计算,直接动态调试
用jeb2在reverse方法的字节码中下断
这里写图片描述
adb连接模拟器,附加后随便输入,查看reverse方法的返回值
这里写图片描述
手动添加flag{}提交完成

原创粉丝点击