CSAPP之Attack LAB
接着Boom lab,同样是第三章里的(虽然我书没咋看
level1
void test() |
由getbuf函数输入,gdb调一下看下buf距离rbp有0x28个字节,直接填充返回到touch1地址就行
exp
touch1 = 0x04017c0 |
level2
level2多了一个判断,判断传入的参数和文件所给的cookie值是否相同,但这里我们无法直接传参进touch2函数,不过我们调试可以知道,0x55586000-0x55686000
这一段是有rwx权限的,就可以执行shellcode.
通过汇编可以看到在getbuf函数执行mov rdi, rsp
此时rdi=rsp,作为Gets()的参数buf,意思就是输入字符串的起始地址就是下图rsp的地址0x5561dc78,刚好也处在上面那一段中
exp
touch2 = 0x04017ec |
level3
文件给了提示,传字符串的地址,于是先把字符串放前面,后面接地址
exp
touch3 = 0x4018fa |
level4
简单的ROP,找个pop rdi就行
exp
pop_rdi_ret = 0x000000000040141b |
level5
Todo…
CSAPP之Attack LAB