23R3F's Blog

23R3F's Blog

no pwn no fun

2017 0CTF之babyheap
最近在找堆题来练手,发现自己对堆题的利用还不够熟练 今天复现了一下2017 0CTF的babyheap,直接看题吧 首先一套保护全开: 然后来分析一下程序 还是经典的菜单程序,第一个功能肯定是分配chunk啦,这里还是用了一个全局数组来存储三个数据,1、标记位,这个用来表示chunk属于使用状态,2、chunk大小,3、chunk 指针 当chunk被free的时候标记位就被值为零 需要注意的时候,这里在分配chunk的时候用的是calloc函数,与malloc不同的是,他在alloc的时候,会把当前分配的新的chunk空间给全部清空,这样就限制了我们很多的操作 然后,这个全局数组,...
2019西湖论剑初赛复现
本菜鸡在比赛中又被吊锤了,果然还是太菜了,这里主要复现全部pwn题和部分misc、逆向 miscTTL 百度搜查TTL隐藏信息,查到 因此发现,文本里面只有255,127,191,63这几个值,然后,前四位分别是:11,01,10,00 那么把他们提出来 转ASCII: http://www.txttool.com/wenben_binarystr.asp 发现一个头,是个jpg的头,拿去hex生成图片 生成图片以后发现属性 结合着hex里面的东西来分析,肯定是ps打开来以后进行拼接二维码的东西,但是我没装ps没得打开,我就用linux下的foremost给分离出来,得到6个二维码...
DES的C++实现
学了密码学这门课总不能白学,虽然数论部分看得头皮发麻不是很懂,但起码还是得搞懂加密算法是怎么实现的,顺便熟练一下C/C++ DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。 明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法 总体的加密流程是这样的 主要分以下几个步骤: IP置换 密钥置换 E扩展置换 S盒代替 P盒置换 IP末置换 IP...
初探Z3约束求解器
Z3 是一个微软出品的开源约束求解器,功能十分强大,尤其是运用于逆向的时候,进行约束求解十分快速,这里写写学z3的一些操作 安装首先讲讲安装,说实话这玩意玄学问题还是蛮多的,在安装的时候会出现各种各样的坑,最后我在win10下和Ubuntu16.04下都安装成功了 win 10首先下载github上的文件,解压,进入z3目录 在菜单栏中输入vs,搜索出这个工具,再选择打开文件位置(这个东西你得在电脑上安装了vs才有的) 选择这个,以管理员权限运行 接着就是输入命令了: 123python scripts/mk_make.py -xcd buildnmake 安装好了以后需要配置两个环...
2019看雪CTf之Q1
是时候好好复现一下最近各个CTF比赛的题目了,先从看雪CTF开始吧,0CTF的感觉还是有点难度,后面再来搞吧 流浪者简单逆向题 扔IDA,按x看交叉引用,发现核心的代码如下 逆向起来不是很复杂,主要就是耐心慢慢看对输入字符串的约束条件 我们发现: 如果65<= Str[i] <= 90,那么 v5[i] = Str[i] - 29 ,也就是 36~61的范围 如果97 <= Str[i] <= 122,那么v5[i] = Str[i] - 87 ,也就是10~35的范围 如果48<= Str[i] <=57, 那么v5[i] = Str[i] - ...
初探angr
angr作为一个符号执行的神器,是时候学它一波了 安装这里采用python虚拟环境的方法来安装,可以与自己本机的python环境隔离开来,不会产生不可预见的玄学问题 安装编译所需要的环境sudo apt install python-dev libffi-dev build-essential virtualenvwrapper 创建一个名字为angr的虚拟环境,并且会生成一个名字为angr目录virtualenv angr 开始使用虚拟环境前,需要被激活source ./angr/bin/activate 激活好后在终端界面命令行最开头中会出现(angr) 接着就安装angrsudo...
利用FLIRT恢复静态编译程序的符号
最近做题遇到一些静态编译的elf,一般这种静态编译的程序函数都是成千上百个的,如果一个个看肯定头皮发麻,我们通常是挑重点抓大头来解题 但是作为一个强迫症,看着一堆没有符号的函数:subxxxx()真的是不爽,就在网上查了一波学习了一下遇到这种情况该如何把静态编译并且strip后的程序的符号给找回来 IDA中提供了一个东西做FLIRT:库文件快速识别与鉴定技术(Fast Library Identification and Recognition Technology) 简单的说,这玩意,能通过一个静态链接库的签名文件,来快速识别被去符号的程序中的函数,从而为函数找到符号 那么怎么样操...
ret2dl_runtime_resolve
之前简单学了一波ret2dl_runtime_resolve的操作,但是没有认真记下笔记,只懂了大概的原理流程,到现在要回忆起具体的细节又想不起来orz,果然以我这老人家的记性不通过做笔记是记不牢的,因此这里再认真深入复现一次原理 原理拿一个自己写的c来测试一波: 12345678910111213141516#include <stdio.h>void say(){ char buf[20]; puts("input your name:"); read(0,&buf,120); printf("hello,%s\n",buf); //return 0;&...
初探Fuzz-AFL
最近想学习一波fuzz,希望能往实际挖洞方向进行学习,光打CTF怕是会找不到工作,嘤嘤嘤 Fuzz-AFL介绍Fuzzing是指通过构造测试输入,对软件进行大量测试来发现软件中的漏洞的一种模糊测试方法。在CTF中,fuzzing可能不常用,但在现实的漏洞挖掘中,fuzzing因其简单高效的优势,成为非常主流的漏洞挖掘方法。 AFL则是fuzzing的一个很好用的工具,全称是American Fuzzy Lop,由Google安全工程师Michał Zalewski开发的一款开源fuzzing测试工具,可以高效地对二进制程序进行fuzzing,挖掘可能存在的内存安全漏洞,如栈溢出、堆溢出、...
IDA Pro使用技巧总结
俗话说,工欲善其事,必先利其器,在二进制安全的学习中,使用工具尤为重要,而IDA又是玩二进制的神器,以前在使用IDA的时候,只是用几个比较常用的功能,对于IDA的其他功能没有研究,于是本着学习的精神,参考着《IDA pro权威指南》,写下这篇文章,记录自己的学习心得,我是在Windows平台下的IDA pro7.0进行操作的 一些二进制工具在《IDA pro权威指南》的开篇一两章中,先是介绍了几款常用于二进制研究的工具,我这里简单的记了几个,介绍一波: C++filt:可以用于显示出c++中复杂的重载后的函数名称 PE tools:是一组用于分析Windows系统中正在运行的进程和可执行...
avatar
23R3F
一个二进制萌新的小日常