BUUCTF--Reverse(31~40)

目录

31、[MRCTF2020]Xor

32、Youngter-drive

33、[MRCTF2020]hello_world_go

34、相册

35、[WUSTCTF2020]level3

36、[FlareOn4]IgniteMe

37、

38、

39、

40、


31、[MRCTF2020]Xor

exeinfope.exe查看文件无壳,IDA打开查看字符串,找到关键字符串跳转到程序框图(无法跳转进入伪代码)。

对程序框图中的代码进行分析,编写脚本求出flag。

32、Youngter-drive

exeinfope.exe查看文件有upx壳,使用upx进行脱壳处理。

使用IDA打开脱壳后的文件,从主函数进入伪代码。
main函数->main_0函数。

sub_4110FF函数->sub_411BD0函数。

StartAddress函数->StartAddress_0函数->sub_41112C函数->sub_411940函数。

 

sub_41119F函数->sub_411B10函数。

sub_411190函数->sub_411880函数。

分析代码:主函数中有两个线程同时运行,StartAddress函数先运行,再sub_41119F函数运行,最后依次运行。
由于sub_411190函数中if判断,可以推出Source=off_418004。
初始输入中提示flag长度为36,去除flag{},则还有30个字符。
由于只循环29遍,则最后一个字符未知,但可以确定最后一个字符为字母。
编写脚本得出所有可能成立的flag,不断套答案,确定正确flag。

33、[MRCTF2020]hello_world_go

exeinfope查看文件无壳,使用IDA打开文件并搜索字符串flag,取出flag。

34、相册

jadx打开apk文件,根据提示搜索mail,查找到有关信息并进行跳转到内部。

使用exeinfope将apk中的文件导出,找到os文件。

 

exeinfope查看os文件为32位,将os文件放入IDA,搜索字符串,找到可疑字符串(base64密文),https://www.wqtool.com/basecode 解码得到flag。

 

 

35、[WUSTCTF2020]level3

exeinfope查看文件无壳,IDA打开并搜索字符串,跳转进入伪代码。

代码中的提示base64经过变换,进入字符串后找到base64表,查看引用(点击进入,Ctrl+X),发现一个可疑函数(O_OLookAtYou),进入伪代码。

使用脚本求出变换后的base64编码表,再使用自定义Base64解密脚本求出flag。

36、[FlareOn4]IgniteMe

exeinfope查看文件无壳,IDA打开文件并搜索字符串。

 

通过关键字符串跳转至伪代码并进行分析。
分析代码:sub_4010F0函数和sub_401050函数是关键,NumberOfBytesWritten是程序的输入(即传入的flag)。
只有sub_401050函数运行后为真时,才可以证明输入flag正确。

sub_4010F0函数:此函数作用是为取出换行和回车,在程序中作用不大,则可以认为byte_403078=Buffer=NumberOfBytesRead(flag)。

sub_401050函数:为使返回为真,byte_403180=byte_403000,再将变换处理逆着处理,可以得到byte_403078。

sub_401050函数->sub_401000函数:函数作用未知,但可以确定返回值是定值,通过动态调试求出返回值(即v4初值)。

编写脚本推出flag。

37、

38、

39、

40、

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值