目录
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。