isitdtu2019_babyshellcode
目录
总结
侧信道攻击,爆破出flag
。这里对shellcode
的长度有限制,所以需要尽量写较短的shellcode
完成利用。
题目分析
checksec
同时发现有沙盒,读取输入后,只能使用alarm
系统调用:
函数分析
init
在_init
段注册了一个函数:
主要流程为:
mmap
一块内存,起始地址为0xcafe000
,页权限为可读可写可执行- 读取
flag
到0xcafe000
- 从
/dev/urandom
读取8
个字节,存储在一个整数变量中 - 按每
8
个字节与flag
进行异或
main
主要就是读取用户输入,然后执行shellcode
。在0x202020
处拷贝了shellcode
,如下:
利用思路
-
使用
alarm
调用取消定时 -
利用
flag
的特征求解出异或的key
。flag
为uuid
字符串时,长度为42
,且有些字符是已知的,包括flag{}-
。 -
利用测信道攻击,爆破出
flag
。思路为:逐个字节比较,如果猜测成功,那么将程序陷入死循环,否则程序会异常终止。 -
猜到所有的
flag
EXP
考虑到flag
的特征,其实这里可以只把猜测的范围限制为0123456789abcdef
,加快爆破的速度。这份exp
将范围扩大了一些(偷懒)。
|
|
引用与参考
1、My Blog
2、Ctf Wiki
3、pwncli
Buy me a coffee~
支付宝
微信