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了!!!
我们通常两种方法
- 设备有调试接口 或者有后面 ,上传 gdbserver
- 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 了
贴个出道照片吧