Reverse –go



替换了base64字典

解题思路:
程序将我们输入的key,经过换了编码字典的base64加密后,去掉最后==,计算key加密后的长度,长度为0x16,就开始解密。那么我们只需要输入正确的key就有flag了,知道了base64加密字典XYZFGHI2+/Jhi345jklmEnopuvwqrABCDKL6789abMNWcdefgstOPQRSTUVxyz01,和密文nRKKAHzMrQzaqQzKpPHClX==,解密如下:


Reverse –tree



解题思路:
先找到根节点,上面内存块为子节点,还原二叉树结构,通过调试器在内存中定位到根节点,依次还原每个子节点,当然也可以拷出来使用。



最后需要得到zvzjyvosgnzkbjjjypjbjdvmsjjyvsjx,按图索骥在二叉树中获取查找方向,得到如下字符串- -:
10101111101001000001111111001000010101110100111100010010010010000001101010000100100111010111111101110001001000001111100010011100
转ascii:
afa41fc8574f12481a849d7f7120f89c
整理下格式:
flag{afa41fc8-574f-1248-1a84-9d7f7120f89c}


解密代码:

Pwn-Magic

题目逻辑:

1是创建多大空间 并保存你输入的字符串
2根据索引释放空间
3 根据索引打印对应的字符串

解题思路:
在忘记魔法的函数里,释放空间是根据给定的索引来释放对应的空间。但是删除的时只free,而没有设置为 NULL,这里是存在 Use After Free 的情况的。


同时还提供了这个函数:

可以修改的输入字段为 magic 函数的地址,从而实现在执行“使用魔法”即调用输入的字符串的时候执行 magic 函数。
也可以自己构造一个system(/bin/sh),我这里采用的是后者。

学习魔法创建的内存结构如下

Magic
Name ptr

我们通过写name的时候,覆盖magic:

原理:
对于大小为(16 Bytes~ 64 Bytes)的堆块来说则是使用fastbin,在fastbin中,是由单项链表连接起来的,每个chunk的pre_chunk指向之前回收的chunk,即回收的chunk出于链表头部,此时分配时也会从头部分配。
这里的magic分配空间为0x10,显然是一个 fastbin chunk(大小为 16 字节)。
我们通过连续申请空间,形成一个链表,释放链表头的空间后,再次申请内存会从头部分配。
即我们最后申请magic2的而空间保存到chunk0中,由于没有将释放的指针置空,我们再次调用第0个magic,就会将最后magic2填入的name给执行了。

步骤:
学习魔法,申请空间0,0x100,大小要不同于0x10 maigc的大小
学习魔法,申请空间1,0x100
忘记魔法,释放空间0
忘记魔法,释放空间1
学习魔法,申请空间2,大小为 0x10,和magic申请的一样大,那么根据堆的分配规则
空间2 其实会分配空间1 对应的内存块,这时name对应的是magic 0地址。
如果我们这时候向magic 2 的name写入 需要执行的地址(system啥的),那么由于没有置magic 0为NULL。当我们再次尝试输出magic 0 的时候,程序就会调用magic2处的代码。

代码:


网鼎杯2020 朱雀部分writeup相关推荐

  1. [网鼎杯 2020 朱雀组]phpweb

    目录 解题过程: 找payload: 1. 对in_array()函数进行绕过 2. php反序列化 参考文章: 考点:关于call_user_func()函数的用法,php反序列化(本题不用也能做) ...

  2. [网鼎杯 2020 朱雀组]phpweb-反弹shell

    [网鼎杯 2020 朱雀组]phpweb 通过反弹shell获取flag 打开链接,显示一个不断刷新的页面,通过burp抓包查看 通过对页面源代码的分析,发现在本页面中,通过post传入index.p ...

  3. [网鼎杯 2020 朱雀组]Think Java

    [网鼎杯 2020 朱雀组]Think Java 文章目录 [网鼎杯 2020 朱雀组]Think Java 获取源文件 Swagger JDBC sql注入 关于#的使用 查看数据库名字 获取表名 ...

  4. 【网鼎杯 2020 朱雀组】Think Java

    [网鼎杯 2020 朱雀组]Think Java 首先下载题目附件,是一些.class文件,反编译查看. 注意到引入的其中一个包: import io.swagger.annotations.ApiO ...

  5. NO.2-24 [网鼎杯 2020 朱雀组]Nmap

    站老是崩,有点难受. 过程 1.题目非常熟悉,以前在buu写过.主要考察nmap的一些用法. 2. 选项 解释 -oN 标准保存 -oX XML保存 -oG Grep保存 -oA 保存到所有格式 -a ...

  6. [网鼎杯 2020 朱雀组]Nmap

  7. nmap -oG -iL 写入文件和读取文件之[网鼎杯 2020 朱雀组]Nmap

    知识点: 利用-oG,可以将命令和结果写进文件. 利用-iL 和-oN.其中-iL是从inputfilename文件中读取扫描的目标.在这个文件中要有一个主机或者网络的列表,由空格键.制表键或者回车键 ...

  8. [网鼎杯 2020 朱雀组]之phpweb两种不同的解题方式

    目录 方法一: 方法二: 知识点: 1)黑名单取巧绕过 2)PHP的file_get_contents函数使用 3)PHP序列化与反序列化构造 访问靶机,观察页面,开始时首先加载了一张图片,随后刷新回 ...

  9. [网鼎杯 2020 朱雀组]phpweb 待续

    抓包看参数   联想到函数  读index.php代码 func=file_get_contents&p=index.php <?php     $disable_fun = array ...

最新文章

  1. 优化算法、梯度下降、SGD、Momentum、Adagrad、Adam
  2. .gitignore 无效及解决办法
  3. 编写字符串反转函数 - 小小外星人的技术博客 - 博客频道 - CSDN.NET
  4. FPGA之道(59)时空变换之时域优化
  5. JavaScript单线程 setTimeout定时器
  6. android.os.BinderProxy cannot be cast to
  7. kvm虚拟化学习笔记(十)之kvm虚拟机快照备份
  8. python注册登录+mysql_Flask+MySql实现用户登录注册
  9. UITableViewCell delete button 上有其它覆盖层
  10. 大学生创新创业训练计划项目(信息类)申报书撰写
  11. Android 加载天地图
  12. 用QtCreator创建控制台应用程序
  13. 【OpenCV】OpenCV实战从入门到精通之五 -- 教你使用Rect()函数
  14. hl2240d硒鼓清零方法
  15. 音乐手记之民谣二:Chamber
  16. 大数据毕业设计_计算机专业如何才能更好的完成毕业设计呢?
  17. windows installer服务坏了修复方法
  18. “当智慧遇见极简”,锐捷与千位信息化大咖共话智慧校园极简之道
  19. 安信可TG-12F模组学习笔记 ① 在AliOS-Thing架构上快速开发实现一个天猫精灵插座。
  20. 【源码分享】图片API系统源码 V1.1

热门文章

  1. 解决数据中心管综难题:管线避让的十七个原则!
  2. 笔试真题及其答案解析:国内各大银行计算机方向笔试之计算机基础知识—选择题120题
  3. 成功解决PermissionError(权限拒绝解决答案集锦): [Errno 13] Permission denied: ‘f:\\program files\\python\\python36\
  4. linux ubuntu 16.04下deb文件的安装以及一些问题的解决
  5. 洛谷P4147玉某宫(最大矩阵好题)
  6. luogu P3293 [SCOI2016]美味
  7. android 开发 时间选择器TimePicker的使用
  8. CSS 高级布局技巧
  9. 如何adb shell进入ctia模式
  10. [转]Cocos2d-x观察者模式