快捷搜索:  汽车  科技

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)题目给出的是一个apk文件。Win the game 1 000 000 times to get the flag.Reverse即逆向工程,题目涉及到软件逆向、破解技术等,要求有较强的反汇编、反编译扎实功底,主要考查参赛选手的逆向分析能力。安胜ISEC团队在逆向工程解题中夺得佳绩,这究竟是怎么做到的呢?别急,我们的参赛小哥哥已为大家整理出了writeup解题思路!解题攻略!逆向工程writeup分享题一:SHALL WE PLAY A GAME?

CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF的大致流程是:参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。

Google CTF 2018是由Google举办的全球性比赛,全球有2000多支队伍参赛,历时2天,最后只有220支队伍上榜。

安胜ISEC团队首次参加Google CTF 大赛,虽在总分榜55名,还有待提升,但可喜的是,安胜在逆向工程解题部分以优异成绩领先同行,充分彰显安胜在逆向工程领域的国际水平!

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(1)

逆向工程解题榜(红框内为安胜解题情况)

Reverse即逆向工程,题目涉及到软件逆向、破解技术等,要求有较强的反汇编、反编译扎实功底,主要考查参赛选手的逆向分析能力。安胜ISEC团队在逆向工程解题中夺得佳绩,这究竟是怎么做到的呢?别急,我们的参赛小哥哥已为大家整理出了writeup解题思路!

解题攻略!逆向工程writeup分享

题一:SHALL WE PLAY A GAME?

Win the game 1 000 000 times to get the flag.

题目给出的是一个apk文件。

根据题目信息 可以看出this.m()就是显示flag

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(2)

N._是native函数(见library.so) 其功能是根据提供的参数调用指定的类的指定方法 其参数格式为

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(3)

将相关调用提取出来可以得到整体逻辑

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(4)

题二:KEYGENME

I bet you can't reverse this algorithm!

题目给出的是一个elf文件。

异或解密0x6001BC处大小为0x44A8的代码

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(5)

PTRACE_DETACH

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(6)

fork进程,

子进程负责读取name(长度为5) sn(长度为32) vm中解密elf(记为embedded)到memfd并执行(argv[0]=name argv[1]=sn envp=NULL)

父进程负责处理子进程的int3异常 vm中读取patch代码并写入子进程

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(7)

此处可dump写入memfd中的elf

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(8)

此处开始是patch数据 以code_offset为0结尾

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(9)

embedded功能 判断md4(name) == simple_transform(sn)

其中影响md4结果的变量有: umask(0) getenv("PWD")

md4的初始化常量: (0x5a827999^umask(0)) (0x6ed9eba1^umask(0))

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(10)

子进程中umask(0)=0xFFFFFFFF

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(11)

子进程中getenv("PWD")=NULL

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(12)

题三 :APT42 - PART 1

We have detected weird traffic on our network and we cannot figure out the source.

Forensics didn't find anything besides maybe the NTP service binaries which have been modified recently on some hosts.

We ran them through the sandboxes and they seem to work as intended can you do a quick manual pass?

题目给出的是一个elf文件。

x_fake_sleep(主要两个功能 1. 命令执行 2. 中转)

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(13)

检测/etc/krb5.conf中是否包含字符串domain.google.com

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(14)

解密服务器地址 mlwr-part1.ctfcompetition.com:4242

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(15)

连接服务器

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(16)

发送"hello" 接收指令 根据指令执行对应的功能

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(17)

收发数据 数据包格式为

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(18)

指令列表

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(19)

中转 可接受的指令有"hello" "part1 flag"

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(20)

根据格式发送命令"part1 flag"即可获取flag

以上writeup,你get到了吗?欢迎大家留言,一起交流!期待下一次的Google CTF,在此预祝我们的ISEC团队再攀高峰!

常用ctf脚本(GoogleCTF安胜首秀逆向工程writeup看这里)(21)

猜您喜欢: