前言 RealWorld CTF 5th 里的一道iot-pwn,根据真实设备固件改编而成,觉得题目贴近iot实战且很有意思,故在此记录一下复现过程。 题目分析 题目描述 Hello Hacker. You don't know me, but I know you. I want to play
2022强网拟态 only 比赛的时候没做得出来,赛后复现一下。只有一次double free的机会,好在用的是seccomp开的沙盒,使得一开始就有很多空闲堆块,里面也残留有libc指针,通过堆风水去打stdout泄露libc,然后劫持__free_hook进行栈迁移即可。 exp: from p
总的来说我出的几题不是很难,主要是想把自己感觉有意思的一些东西分享给大家。 ezlogin 程序设计周大作业稍加改编出的题目。洞在Tea里,有个数组越界写,为了避开\x00截断,我给了*可以对其进行替换。最后base64带出flag。 from pwn import* context(os='lin
一些零碎的东西 栈迁移 0x7ff5a2911dea <svcudp_reply+26>: mov rbp,QWORD PTR [rdi+0x48] 0x7ff5a2911dee <svcudp_reply+30>: mov rax,QWORD PTR [rbp+0x18] 0x7ff5a2911d
2022祥云杯 leak 今年VNCTF的时候碰到过一种写法,方式不会,没写的出来。没想到这次祥云杯leak这题可以用那种写法写,但是我依旧比赛时没写出来。赛后
ret2dl_resolve是一种比较复杂的高级ROP技巧,利用它之前需要先了解动态链接的基本过程以及ELF文件中动态链接相关的结构。 我根据raycp师傅的文章,动手调试了一下: https://ray-cp.github.io/archivers/ret2dl_resolve_analysis#
摆烂很长时间之后,终于下定决心来看点新的东西。正好 winmt 师傅前不久把他 pig 修好的附件发给我了,我就借此来学习一下新版本的 IO_FILE 及 house of pig。新版本的 IO_FILE 利用的函数是老版本中喜欢用的 _IO_str_overflow,我们来看一下 glibc 2.29 下的_IO_str_overflow 的源码int_IO_str_overflow (FIL
1.2.2 musl pwn 几个结构 __malloc_context(与glibc中的main_arena类似) struct malloc_context { uint64_t secret; #ifndef PAGESIZE size_t pagesize; #endif int init_
largebin attack 由这个名字就可以看出是对 largebin 进行的操作,需要
house of storm 是一个结合了 unsorted bin 和 largebin attack 的危害性极高的组合漏洞。其
条件竞争 && pipe_buffer + 堆喷射 条件竞争往往发生在开了多线程的程序中,常因为没有对全
利用userfaultfd + setxattr堆占位 很久之前便看到过这个技术的名字,但是由
2022CISCN-satool 打国赛的时候自己还并不了解LLVM PASS pwn,
推迟了好久的unlink今天终于把它看了一下。下面是从CTFwiki上拿过来
利用ldt_struct 与 modify_ldt 系统调用实现任意地址读写 ldt_struct与modify_ldt系统调用的介绍 ldt_struct ldt是局部段描述符表,里面存放的是进程的段描述符,段寄存器里存放的段选择子便是段描述符表中段描述符的索引。和ldt有关的结构体是ldt_st
利用msg_msg实现任意地址读写 msgsnd和msgrcv的源码分析 内核通过msgsnd和msgrcv来进行IPC通信。内核消息分为两个部分,一个是消息头msg_msg(0x30),以及后面跟着的消息数据。整个内核消息的长度是从kmalloc-64到kmalloc-4096`。 /* one
推迟了好久的复现,那就在情人节这个特殊的日子复现一波吧。这题除了 ora 之外特别的地方就是用到了 retf 来进行 32 位和 64 位的切换。参考了 winmt 师傅的博客复现了一下。 import time from pwn import * context.arch = 'amd64' #c
_fileno 是 stdin 文件里的一个字段,在 x64 系统里,偏移为 0x70。 以下是 IO_FILE 结构体: struct _IO_FILE { int _flags; /* High-order word is _IO_MAGIC; rest is flags. */ #define
FSOP 是 File Stream Oriented Programming 的缩写。所有的 _IO_FILE 结构会由 _chain 字段连接形成一个链表
第一篇博客,请允许我水一下。BUUCTF上的一题:linkctf_2018.7_babypie 检查一下保护机制: 1 Arch: amd64-64-little 2 RELRO: Partial RELRO 3 Stack: Canary found 4 NX: NX enabled 5 PIE:
在堆题没有show函数时,我们可以用 IO_FILE 进行leak,本文就记录一下如何实现这一手法。 拿一个输出函数 puts 来说,它在源码里的表现形式为 _IO_puts 。 _IO_puts (const char *str) { int result = EOF; _IO_size_t le
没有附件,只能对着别人文章硬看了。(哪个师傅有附件的话联系我一下,感激不尽) 从肥猫师傅本人的 文章 中得知使用 kiwi 的条件有两点: 1、能够触发 __malloc_assert 2、有任意写的能力,修改 _IO_helper_jumps 结构体 kiwi 的流程是 __malloc_asse
总的来说这是一个64位orw的题 开头先在主函数里分配了一个很大的空间 1 __int64 __fastcall main(int a1, char **a2, char **a3) 2 { 3 mmap((void *)0x123000, 0x1000uLL, 6, 34, -1, 0LL); 4
先放个例题吧,原理后面有时间再更:BUUCTF ciscn_2019_s_3 保护只开了nx 1 signed __int64 vuln() 2 { 3 signed __int64 v0; // rax 4 char buf[16]; // [rsp+0h] [rbp-10h] BYREF 5 6
做SCTF时碰到一个没看过的题型,比赛结束之后才知道是orw的一个玩法,测信道攻击。主要特点就是只给使用open,read,但是不给write,即无法把flag输出到终端。这里可以通过把flag读到栈上,再逐个爆破比较,来确定flag。原理和web的时间盲注类似。 下面给出一个UNCTF的测信道攻击
之前经常改 malloc_hook , realloc_hook,free_hook 为 one_gadget 来 get shell ,最近看到一种利用是改 exit hook(winmt师傅告诉我 其实没有exit hook,它是函数指针)。 改 exit_hook 有两种改法,一个是改为 on
setcontext+orw 大致可以把2.27,2.29做为两个分界点。 我们先来讨论 2.27 及以下的 setcontext + orw 的写法。 首先 setcontext 是什么?了解过 SROP 的师傅应该知道 pwntools 自带了一款可以控制寄存器值的工具。模板如下: frame
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号