23R3F's Blog

【kernel_pwn】CISCN2017 babydriver
在网上找了一些kernel pwn 的题来练练手,对我来说只看理论,学习效果是不会很好的,实操一遍才能有真正的理解 准备这是个kernel pwn的UAF题 拿到题目发现有三个文件 根据之前的搭建kernel环境的经验,可以看出他们分别是启动脚本,kernel镜像,文件命令系统 用file命令发现是个压缩包,需要进行解压,yo 12$ file rootfs.cpio rootfs.cpio: gzip compressed data, last modified: Tue Jul 4 08:39:15 2017, max compression, from Unix 由于发现gu...
kernel pwn初探
最近想开始接触一些内核的东西了,就在这里写写学习过程中的笔记吧 kernel本质上来说也是个程序,就管理整个操作系统的程序,管理用户软件发出的数据 I/O 要求,将这些要求转义为指令,交给 CPU 和计算机中的其他组件处理 kernel 最主要的功能有两点: 控制并与硬件进行交互 提供 application 能运行的环境 包括 I/O,权限控制,系统调用,进程管理,内存管理等多项功能都可以归结到上边两点中。 需要注意的是,kernel 的 crash 通常会引起重启 环境配置编译生成内核镜像首先下一个内核源码 https://mirrors.edge.kernel.org/pu...
Startctf2019
不愧是*CTF,质量的确很高,做这些题都能学到新的姿势,慢慢复现学一波操作吧 heap_master64位保护全开,这题很骚,也是很有意思,程序逻辑却非常简单 首先add函数,就这样,没了,只能申请任意大小的chunk,但是不能操作 接着就是edit函数,这里比较骚的是,他edit的地址是一个随机产生的地址,所有的写入操作都跟上面add申请的chunk无关 最后是一个delete函数,同样的,free也是对随机产生的模拟堆地址进行操作的 这就是程序的逻辑,过于简单,以至于泄漏函数都没有 这里直接讲利用思路了 官方解是用large bin attack +stdout 泄漏的方法, ...
Base64/32/16的C语言实现加密解密
之前经常遇到base家族的各种变种加密的逆向题,然而却逆不清楚,这里就从正向到逆向去好好学习一下base家族的加解密 加密原理原理到是不难,主要就对字符的二进制进行移位操作,分割再合并成新的10进制数,再从密码表中去对应的加密字符 这里放个链接,这个大佬已经讲的很好了:http://www.ruanyifeng.com/blog/2008/06/base64.html base64加密: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051const c...
2019CISCN初赛PWN全解
我看之前都有师傅发了pwn的exp,但没有过多的详解基本上直接贴exp,而且最后一题vm pwn的好像没有wp,我这里就详细的讲讲每题的思路 your_pwn程序漏洞很简单,一个数组下标溢出漏洞,用好了就能解题了,主要就是泄漏出libc_start_main的地址,从而得到libc,然后再改为onegadget,一把梭getshell,完事 主要的麻烦点应该是泄漏的时候,由于是一个个字节输出的,而且还是unsigned int 型,存在部分奇怪的0xffffxx的情况,只需要保留后两位就行了 exp如下: 12345678910111213141516171819202122232425...
Tcache练习题
某天,zs0zrc大佬扔了一堆tcache的题目给我,让我好好学习一下里面的操作,于是。。。就开始学习了orz,这里主要通过做题来巩固对tcache机制的理解,以下题目按难度排序,这些题目我都在Ubuntu17.10中运行,比这更高的应该也行,只要保证libc的版本是大于等于2.26就行 hitbxctf2018 gundam CodegateCTF2019 god-the-reum LCTF-2018 easy_heap hitcon-2018 children_tcache hitcon-2018 baby_tcache 开始吧 gundam64位保护机制全开程序 首先第一个功能...
2017 0CTF之babyheap
最近在找堆题来练手,发现自己对堆题的利用还不够熟练 今天复现了一下2017 0CTF的babyheap,直接看题吧 首先一套保护全开: 然后来分析一下程序 还是经典的菜单程序,第一个功能肯定是分配chunk啦,这里还是用了一个全局数组来存储三个数据,1、标记位,这个用来表示chunk属于使用状态,2、chunk大小,3、chunk 指针 当chunk被free的时候标记位就被值为零 需要注意的时候,这里在分配chunk的时候用的是calloc函数,与malloc不同的是,他在alloc的时候,会把当前分配的新的chunk空间给全部清空,这样就限制了我们很多的操作 然后,这个全局数组,...
2019DDCTF
web垃圾pwn手莫得做pwn题只能滚来研究web了,嘤嘤嘤 web1进去看到地址栏: http://117.51.150.246/index.php?jpg=TmpZMlF6WXhOamN5UlRaQk56QTJOdz09 然后页面是这个样子的 可以发现这个图片是经过加密解密后出来的 那么看看gets参数的构造:jpg=TmpZMlF6WXhOamN5UlRaQk56QTJOdz09 可以初步猜测是base64加密,拿去解,发现是两次base64,一次base16 TmpZMlF6WXhOamN5UlRaQk56QTJOdz09 NjY2QzYxNjcyRTZBNzA2Nw== 66...
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...