JarvisOJ-PWN
JarvisOJ-PWN0x00 XMAN-LEVEL0IDA-F5,稍微浏览一下就能到关键的vulnerable_function123456ssize_t vulnerable_function(){ char buf; // [rsp+0h] [rbp-80h] return read(0, &buf, 0x200uLL);}
很明显的一个栈溢出但是checksec一下会发现开了NX,就是说不能无脑的放一个shellcode跳回来执行,这时候就考虑一下有没有可以利用的函数再看一眼IDA 有一个callsystem函数,会执行system(‘/bin/sh’)现在就很明确了溢出,修改RIP,跳转到callsystem即可这里有一点要注意,payload并不是'A'*0x80+p64(RET_ADDRESS),因为vulnerable_function这个函数返回时会调用read()1return read(0, &buf, 0x200uLL);
会先push当前函数的RBP入栈保存现场,之后才是开辟0x80个空间的buf所以会在buf的空间后面用8个字节保存vulnerable_function的$RBP因此实际的payload是'A'*0x88+p64(RET_ADDRESS)
阅读全文…