GeekPwn 参赛记

GeekPwn 参赛记

0x01 题记

迟到的参赛记…

事情,要从我在360实习的时候说起,其实那个时候 r3kapig 就想法要参加 GeekPwn,于是,我们就分了几个组:

xxx 和xxx 想搞游戏引擎

xxx 和 xxx 想搞 office 、wps 阿windows 内核阿 诸如此类…

没办法,我这种垃圾,只能选择去看 IoT 设备了…

0x02 经历

拿不到固件 还配做黑客么?

一开始,我们和 w1ther 要搞小米音箱,然后遇到了一个问题,我们俩都没设备拿固件。这就犯愁了,我说要不伯博,去你们学校的实验室看看有没有办法搞吧?

最后伯博,告诉我们这个他们实验室没办法搞

转机

然后后来得知,此时我们 r3kapig 的金主爸爸 京东的某实验老板 kj大佬也想打 GeekPwn ,于是我们就有了抱大腿的想法…

于是后面的日子,就变成了…kj -> 固件批量发售商!

IDA 启动! IDA 关闭!

Emmm 拿到的固件都是 ARM 的这个比 某MIPS 好看多了…

这里膜拜下 Atum ,emmm 如果纯粹为了挖洞 Atum方法是真实用,他把各个 sscanf 阿 system阿 啥函数的引用看了一遍…刷就有洞了….

DEBUG …

找到了🕳 … 接着就要 debug了!!!

我们通常两种方法

  1. 设备有调试接口 或者有后面 ,上传 gdbserver
  2. qemu模拟

由于我没有设备,所以我们这里用的 qemu 模拟,但是我们 CTF 上的 qemu 模拟,通常指跑一个 bin ,然后我们专门向kj 学习了如何搭建一个 qemu 模拟 arm 系统,这个就相当于你跑了一个 板子了..

感兴趣的同学可以看 这篇 构建qemu嵌入式

当然 MIPS 也是一样的方法,换个 kernel 和 initrd

当然,跑在 模拟器的同时,你可能需要 patch 一些启动项!

CODE EXPLOIT

这里会涉及到一点 arm 的shellcode 知识!!!

一开始,我们使用 Pwntools 的 Assembly

然后出了一丢丢 bug,后面发现是依赖不足.. 然把 binutils-arm-linux-gnueabi binutils-dev binutils-multiarch 这三个一装就好了…

后面发现 Pwntools 的不足以 或者有问题,于是我们开始 手写 shellcode

果然还是 google 大法好!

然后发现了几篇挺好的文章:

http://phrack.org/issues/66/12.html

https://azeria-labs.com/writing-arm-shellcode/

badchar bypass

由于是输入的过程中 sscanf 需要 bypass 一些 badchar ,例如 \x00 \x20 诸如此类…于是我们刚开始能不能有现有的编码器可以 encode一下!!!

例如: msfvenom 然后惊奇的发现!!!没有 arm的?????

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
msfvenom -l encoders

Framework Encoders
==================

Name Rank Description
---- ---- -----------
cmd/echo good Echo Command Encoder
cmd/generic_sh manual Generic Shell Variable Substitution Command Encoder
cmd/ifs low Generic ${IFS} Substitution Command Encoder
cmd/perl normal Perl Command Encoder
cmd/powershell_base64 excellent Powershell Base64 Command Encoder
cmd/printf_php_mq manual printf(1) via PHP magic_quotes Utility Command Encoder
generic/eicar manual The EICAR Encoder
generic/none normal The "none" Encoder
mipsbe/byte_xori normal Byte XORi Encoder
mipsbe/longxor normal XOR Encoder
mipsle/byte_xori normal Byte XORi Encoder
mipsle/longxor normal XOR Encoder
php/base64 great PHP Base64 Encoder
ppc/longxor normal PPC LongXOR Encoder
ppc/longxor_tag normal PPC LongXOR Encoder
sparc/longxor_tag normal SPARC DWORD XOR Encoder
x64/xor normal XOR Encoder
x64/zutto_dekiru manual Zutto Dekiru
x86/add_sub manual Add/Sub Encoder
x86/alpha_mixed low Alpha2 Alphanumeric Mixedcase Encoder
x86/alpha_upper low Alpha2 Alphanumeric Uppercase Encoder
x86/avoid_underscore_tolower manual Avoid underscore/tolower
x86/avoid_utf8_tolower manual Avoid UTF8/tolower
x86/bloxor manual BloXor - A Metamorphic Block Based XOR Encoder
x86/bmp_polyglot manual BMP Polyglot
x86/call4_dword_xor normal Call+4 Dword XOR Encoder
x86/context_cpuid manual CPUID-based Context Keyed Payload Encoder
x86/context_stat manual stat(2)-based Context Keyed Payload Encoder
x86/context_time manual time(2)-based Context Keyed Payload Encoder
x86/countdown normal Single-byte XOR Countdown Encoder
x86/fnstenv_mov normal Variable-length Fnstenv/mov Dword XOR Encoder
x86/jmp_call_additive normal Jump/Call XOR Additive Feedback Encoder
x86/nonalpha low Non-Alpha Encoder
x86/nonupper low Non-Upper Encoder
x86/opt_sub manual Sub Encoder (optimised)
x86/service manual Register Service
x86/shikata_ga_nai excellent Polymorphic XOR Additive Feedback Encoder
x86/single_static_bit manual Single Static Bit
x86/unicode_mixed manual Alpha2 Alphanumeric Unicode Mixedcase Encoder
x86/unicode_upper manual Alpha2 Alphanumeric Unicode Uppercase Encoder

作者:极客圈
链接:https://www.jianshu.com/p/d0d795eaf429
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

emmm 好吧手写手写!

于是我和伯博决定,哪里不行点哪里… 这个指令不行 就换两个指令 助如此类…

exploit done !!!

emm

然而这个时候。。我们发现虚拟机打通了 设备打不通! 后面才发现 emm watch dog 在,打了之后就崩了!!!最后伯博写出了 情理之中,理所应当的exploit

woc ??? 好吧 写到开机启动里

(ps :另外一个路由器的 任意命令执行就不写了…没什么坑点)

0x03 GeekPwn Shang Hai

咕咕 伯博…说好的来上海的呢??? 被咕咕了…

签到:

签到要拍照片…先是团队 ,对了我们的团队叫 :小猪矿主 …

然后紧接着是 个人照…在个人照的时候,摄影师会问你,有个人Pose么?woc 麦香师傅真的是太帅了 舔一波,Atum师傅太强了…

然后拿了衣服和胸牌就撤了..

第一天:

我们的比赛放在 第二天下午,所以第一天我们是观众。。。

第一天见到了 蒋昌建老师,蒋昌建老师的 主持一如既往 最强大脑即时感!。

当了一天观众 …有几个项目挺有意思…

中午 Atum老板和 他的老板出去吃饭了…

晚上 kj 老板带我们去吃饭了…然后谈了一点,他之后的想法..

然后各回各家,回去接着 测试设备…

第二天

第二天早上,我们并没有去现场,由于下午就是我们的比赛了,我们又开始测了一次设备,emmm 中间的确避免了许多麻烦,由于最后的exploit都是用shell 脚本写的..我们的得先确认一遍

下午比赛开始:

中间原本设计好的 回车日站失效了!!!

一开始是 某音箱没连wifi, 跪了,打不到

后面是某款路由器的国内版和国际版弄反了! 跪了

最后,又发现 路由器的地址填错了,跪了!!!

于是乎,现场改 exploit….在最后的四秒 PWNED!

那个唯一出现在 PPT 上的男人 @w1ther ,让你咕咕!

颁奖

最后颁奖的时候,我们拿了两个 一个最佳展示 一个是基于漏洞攻破奖。

最后的最后

感谢 kj 老板! 也感谢队友们!!! tql 了

贴个出道照片吧