
CTF
钞sir
物是人非事事休
展开
-
PHP序列化
序列化serialize()将对象转变成一个字符串便于之后的传递与使用;序列化会保存对象所有的变量,但是不会保存对象的方法;反序列化unserialize()将序列化的结果恢复成对象;反序列化一个对象,这个对象的类必须在反序列化之前定义,或者通过包含该类的定义或者使用 spl_autoload_register() (自动包含类)实现;例子<?phpclass Demo{ ...原创 2020-03-02 14:26:22 · 10006 阅读 · 0 评论 -
针对IO的利用
简介正常情况下我们用户的输入长度和写入位置都在受到程序限制的,不可能让用户任意地址任意长度写入;但是利用特定的漏洞,我们可以修改到IO结构体中的指针,就可以绕过上面的那些约束从而getshell…_IO_FILE在结构体_IO_FILE当中有很多关键指针:结合源码:int_IO_new_file_underflow (_IO_FILE *fp){ _IO_ssize_t co...原创 2020-02-05 15:39:02 · 10121 阅读 · 0 评论 -
SROP
简介SROP的全称是Sigreturn Oriented Programming,这是ROP攻击方法中的一种,其中sigreturn是一个系统调用,在类unix系统发生signal的时候会被间接地调用;在传统的ROP攻击中我们需要寻找大量的gadgets来对寄存器进行赋值已达到我们的需求,而SROP可以减少我们寻找gadgets的难度…前置知识signal 机制我们都知道在Linux中,系...原创 2019-12-20 15:42:39 · 12587 阅读 · 0 评论 -
WhaleCTF_writeup
逆向练习程序比较简单,取特定字符串中的不同位置的字符连接成flag,然后再末尾加上1024}:#include<stdio.h>#include<string.h>int main(){ int esi,bl,ebx,i; char flag[0x12]; char str[] = "sKfxEeft}f{gyrYgthtyhifsjei53UUrrr_t2...原创 2019-04-05 22:22:54 · 10148 阅读 · 0 评论 -
ROP高级用法之ret2_dl_runtime_resolve
简介程序想要调用其他动态链接库的函数,必须要在程序加载的时候动态链接;在一个程序运行过程中,可能很多函数在程序执行完时都不会用到,比如一些错误处理函数或者一些用户很少用到的功能模块;所以ELF采用一种叫做延迟绑定(Lazy Binding)的做法,基本思想就是当函数第一次被用到的时候才进行绑定(符号查找、重定位等);而在linux 中是利用_dl_runtime_resolve(link_ma...原创 2019-04-29 14:57:02 · 11269 阅读 · 9 评论 -
hctf2016-fheap
题目地址:https://github.com/zh-explorer/hctf2016-fheap程序简介程序中只有3个功能,一个create,一个delete然后一个quit:+++++++++++++++++++++++++++So, let's crash the world+++++++++++++++++++++++++++1.create string2.delete ...原创 2019-03-28 14:15:13 · 10378 阅读 · 3 评论 -
2019西湖论剑Storm_note
分析这道题的漏洞不多,在edit note的时候有一个off_by_null漏洞:然后还有一个后门:没有show功能,想要泄露地址有难度;而且程序禁用了fastbin的申请:ssize_t init_proc(){ ssize_t result; // rax int fd; // [rsp+Ch] [rbp-4h] setbuf(stdin, 0LL); setb...原创 2019-04-13 12:44:56 · 10160 阅读 · 0 评论 -
Fmtstr_Loop
前言很多时候都是因为程序中存在循环,如果程序中不存在循环呢?在一些栈溢出中我们可以使用ROP技术劫持函数返回地址到start,同样我们可以使用格式化字符串漏洞做到这一点…实例题目:12届信息安全国赛半决赛西南赛区思路虽然我们写代码的时候以main函数作为程序入口,但是编译成程序的时候入口并不是main函数,而是start代码段。事实上,start代码段还会调用__libc_start_m...原创 2019-06-23 13:47:59 · 9815 阅读 · 0 评论 -
Linux kernel Exploit 内核漏洞学习(0)-环境安装
前言在Linux上面搞事情很多东西都可能需要我们利用源码来自己编译,相对于Windows来讲可能会比较麻烦和耗时,这个过程中肯定会遇到很多报错,所以一定要有耐心…方法步骤编译内核首先到linux内核的官网下载一份内核源代码并解压:至于需要下载的版本,随意就好,我下载的是5.2.1的…然后先安装有些依赖:sudo apt-get install git fakeroot build-...原创 2019-07-24 11:32:20 · 11078 阅读 · 0 评论 -
kernel pwn -- UAF
简介众所周知,UAF的全称是Use After Free,是一种释放后重用漏洞;之前一直是在用户态下对这个漏洞进行利用学习的,最近想要体验一下在内核环境中利用此漏洞进行提权操作…用户态的常规UAF可以看这篇文章…这里我利用的CISCN2017 babydriver来进行学习的,环境我已经放到github上面了,需要的可以自行下载…前置知识权限在Linux当中每个进程都有它自己的权限,而...原创 2019-07-25 16:30:44 · 10369 阅读 · 0 评论 -
namebook
检查机制:sir@sir-PC:~/desktop$ checksec name[*] '/home/sir/desktop/name' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: No PIE (...原创 2019-03-06 21:30:54 · 3761 阅读 · 0 评论 -
Unlink
简介unlink是在smallbin被释放的时候的一种操作,是将当前物理内存相邻的free chunk进行合并,简单的讲就是我们在free一个smallchunk的时候,如果它前面或者后面的chunk有空闲的,即in_use位为0时,就将前面或后面的chunk连在一起合成一个chunk;smallbin的数据结构:prev_size,size,fd,bk;因为smallbin被释放后是用双...原创 2019-03-03 17:24:19 · 4852 阅读 · 0 评论 -
模板注入(SSTI)攻击(jinja2)
和常见Web注入(SQL注入等)的成因一样,也是服务端接收了用户的输入,将其作为 Web 应用模板内容的一部分,在进行目标编译渲染的过程中,执行了用户插入的恶意内容,因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。其影响范围主要取决于模版引擎的复杂性。(web安全中的真理:永远不要相信用户的输入)以一道CTF为例,简单演示一下注入的流程及一些被过滤了的命令的构造方法;首先打...原创 2018-10-04 23:13:04 · 20793 阅读 · 1 评论 -
实验吧逆向之迷路
后记:写了篇博客一个月后我重新分析这道题发现,这个题的flag实验吧可以提交,但是这个程序本身过不了,后来研究一下发现,当程序输入的字符串中含有‘0’时,算法不太对了,主要是v5的值受到了字符0的影响........今天来看看逆向中一些比较有脑洞的思路方法,以实验吧中的一道名为迷路(http://www.shiyanbar.com/ctf/1915)的题为例.首先运行程序是这个样子的:...原创 2018-10-20 18:40:47 · 3852 阅读 · 3 评论 -
一个简单的例子入门pwn
首先,pwn大概是pwn to own的意思,就是通过二进制/系统调用等方式获得目标主机的shell;我直接以一个非常简单的栈溢出例子(基于Linux)来讲解pwn所要用到的一些常用的工具及命令;所需要的工具安装等,可以先看这个链接(https://blog.youkuaiyun.com/qq_40827990/article/details/83217716)例子下载地址:https://d...原创 2018-10-23 23:26:09 · 10504 阅读 · 0 评论 -
pwn初识格式化字符串漏洞
格式化字符串漏洞通常情况下是由printf函数产生的;正常情况下我们用printf函数输出字符串时是这样的:char a[100]="fmtstr";int b=12,c=666;printf("%s %d %x",a,b,c);但是有时是出于方便会直接输出字符串:char str[12]="fmtstr";printf(str);这时,如果这个str是我们用户输入可...原创 2018-12-02 15:21:04 · 4524 阅读 · 1 评论 -
Ichunqiu_Easypwn
轮回池前彼岸花 三生石旁那道疤擦不去的眼中莎 泪眼迷离失去她https://cc-sir.github.io/2019/01/28/ichunqiu_easypwn/方法这道题是i春秋CTF的一道题,也是“百度杯”CTF比赛 十二月场中的一道pwn,这道题比较简单我们先看看这道题的保护机制:sir@sir-PC:~/desktop$ checksec easypwn[*] '/ho...原创 2019-01-28 21:54:47 · 4083 阅读 · 0 评论 -
DynELF
我用三生的期许 换回三世相思雨三千浮沉里的你 迷失轮回的自己原创 2019-01-29 14:44:42 · 6373 阅读 · 6 评论 -
pwnable.tw writeup
start这道题是静态编译的,或者可以理解是就是直接用汇编写的,所以这个程序很小,没有可以利用的函数;sir@sir-PC:~/desktop$ objdump -R startstart: 文件格式 elf32-i386objdump: start:不是动态对象objdump: start: 无效的操作反汇编代码:sir@sir-PC:~/desktop$ objdu...原创 2019-02-27 16:45:07 · 4133 阅读 · 2 评论 -
Hgame2019_baby tcache
简介Tcache机制应该是从2.26之后版本的libc中才加进去的,而这个机制可能使我们的攻击变得更加简单,因为我们可能不需要去构造false_chunk,只需要覆盖tcache中的next,即将tcache中的next覆盖为我们自己的地址,从而达到任意地址写入;简单地来讲,Tcache机制就是增加一个bin缓存,而且每个bin是单链表结构,单个tcache bin默认最多包含7个块;在释放...原创 2019-03-01 15:10:08 · 4011 阅读 · 1 评论 -
writeup_itemboard
看这个add功能的函数:void __cdecl new_item(){ int cnt; // eax@1 char buf[1024]; // [sp+0h] [bp-410h]@1 int content_len; // [sp+404h] [bp-Ch]@1 Item *item; // [sp+408h] [bp-8h]@1 item = (Item *)mal...原创 2019-03-05 17:54:15 · 3717 阅读 · 0 评论 -
CTF中HTTP 扩展头部中伪造ip
X-Forwarded-For 是一个 HTTP 扩展头部。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP。X-Forwarded-For 请求头格式: X-Forwarded-For: client, proxy1, proxy2可见X-Forwarded-For内容是由「英文逗号 + ...原创 2018-10-01 23:04:52 · 14865 阅读 · 0 评论