zoukankan      html  css  js  c++  java
  • 经典的没有libc类型题目

    首先利用write函数来泄露当前libc版本

    write函数write(int fd,const void*buf,size_t count);
    即构造时
    p32(0)+p32(write_addr)+p32(4)是在设置write函数的参数,对应函数原型看一下,32位程序是4位,所以这边写的4,对应的64位程序是8位

    那么就是

    构造溢出函数+wirte的plt地址来引入wirte函数+main函数(我们要将程序程序重新执行一遍,再次利用输入点来进构造rop)
    知道libc版本后去计算程序里的system函数和字符串“/bin/sh”的地址

    即操作思路就是固定的
    offset=write_addr-libc.dump('write') #计算偏移量
    system_addr=offset+libc.dump('system') #偏移量=程序里的函数地址-libc里的函数地址
    bin_sh=offset+libc.dump('str_bin_sh')

    最后一步 就是rop链

  • 相关阅读:
    PyQt5对话框
    PyQt5基础控件
    PyQt5主界面
    PyQt5入门
    ioctl太多虚拟内存不够用
    code principles
    Error: watch ENOSPC
    intelJ
    cas
    C的函数指针的作用,以及其赋值是弱类型的
  • 原文地址:https://www.cnblogs.com/socialbiao/p/15698720.html
Copyright © 2011-2022 走看看