1.ret2text
2.ret2shellcode
@TOC
1.ret2text
file checksec
ida64
gets函数有栈溢出漏洞,题目为ret2text即返回到text段得到shell
shift+f12打开字符串窗口,找到/bin/sh
点进去,选中/bin/sh,右键,交叉引用列表(可以找到使用/bin/sh的地方)
看到把/bin/sh放入rdi后,调用了systemx64,64位系统中rdi,rsi,rdx,rcx,r8,r9作为调用函数的前6个参数,如果参数多于6个,其余参数放入栈中
与此对比,x86,32位系统中由于寄存器有限,调用函数时参数都放入栈中,两系统间的区别对于之后的retlibc等题型构造payload时有差异,需要注意
那么只要把栈中填满,放入此处的地址就可以得到shell了
脚本
1 | #!/usr/bin/env python3 |
2.ret2shellcode
file checksec
ida64
由于NX保护没有开,所以栈的数据段可以执行
read函数有栈溢出漏洞,但没有system函数和/bin/sh,
printf将buf即栈的地址泄露了出来,那么我们就可以在栈上写入shellcode,并在溢出后ip返回到栈的数据上,那么就可以得到权限了
查看栈的长度,发现只有0x10,比构造的shellcode短,如果直接填入shellcode,那么就无法控制返回的地址了,所以先填入垃圾数据,在ret处填入返回地址(即shellcode将要填在栈中的地址),最后填入shellcode
脚本
1 | #!/usr/bin/env python3 |
-------------本文结束感谢您的阅读-------------