zoukankan      html  css  js  c++  java
  • jarvisoj | level0

    levle0 | 第一次栈溢出

    come from https://www.jarvisoj.com/challenges

    nc pwn2.jarvisoj.com 9881(远程连接) 
    

    在ubuntu16.04上进行连接,看下图


    连接之后屏幕出现一行字符在pwn的网址上看到:

    使用file指令

    hacker@ubuntu:~$ file level0
    level0: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.32, BuildID[sha1]=8dc0b3ec5a7b489e61a71bc1afa7974135b0d3d4, not strippe
    

    可知为64位程序,丢到ida64中,main函数伪代码如下:

    分析可知:write使之显示Hello World,进入易受攻击的函数vulnerable_function();

    buf大小0x80,但可读入0x200,所以可以实现数据的覆盖

    看到函数列表:callsystem,进入发现有

    紧接着想办法查到callsystem的函数地址,两种方法均可

    	gdb-peda$ p callsystem
    	$1 = {<text variable, no debug info>} 0x400596 <callsystem>
    

    均可知其地址为0x400596


    利用vim写exp.py

    #!/usr/bin/python
    申明l这是个python脚本,要用python解释器来运行:由于程序先显示一行,在进入vulnerable_function(),所以才有了recvuntil相当于跳过了交互的第一步。

    上图为逻辑图

  • 相关阅读:
    线程的等待与唤醒
    多线程start()与run()的区别
    Thread与Runnable
    关于i++和++i的一些见解
    Mysql优化(转)
    Java 注解
    Java 泛型(转)
    Java 中的CAS
    CAS ABA问题
    Java 线程池分析
  • 原文地址:https://www.cnblogs.com/zuoanfengxi/p/12272875.html
Copyright © 2011-2022 走看看