Skip to main content
pwn IO相关偏移

pwn IO相关偏移

主要是因为有几次比赛,题基本打到IO了但是就剩下十分钟了根本调不通IO链,为了预防这种情况再次出现这里慢慢总结一下IO相关结构体和不同的攻击方式

这里主要是快捷提供了一些结构体以及偏移方便直接查询,这里的偏移以虚表为主,虚表实现主要是辅助我们查找函数的

gdb调试技巧

  • 查看结构体的偏移量

    ptype /o struct xxxx // 可以获取结构体的偏移量
    
    image-20241027104306803
    image-20241027104306803
  • 查看变量的类型

     ptype 变量 // 可以查看变量类型
    
    image-20241027104229082
    image-20241027104229082

ElegyAbout 8 minpwnio
不好看的linux内核学习(2) dirty pipe/cow学习

不好看的linux内核学习(2) dirty pipe/cow学习

参考文章:https://blog.csdn.net/jasonliuvip/article/details/22600569

https://zhuanlan.zhihu.com/p/25918300

https://blog.csdn.net/hbhgyu/article/details/106245182

mmap函数:https://blog.csdn.net/qq_41687938/article/details/119901916

脏页面:https://blog.csdn.net/shift_wwx/article/details/122497891

匿名页:https://blog.csdn.net/jasonchen_gbd/article/details/79462014

linux下的特殊文件:https://blog.csdn.net/pi9nc/article/details/18257593

反向映射机制:https://zhuanlan.zhihu.com/p/363319174

madvise函数:https://blog.csdn.net/sz66cm/article/details/139334306

dirty cow详解:https://xuanxuanblingbling.github.io/ctf/pwn/2019/11/18/race/ (巨推荐)

get_user_pages:https://zhuanlan.zhihu.com/p/579444153

缺页异常:https://www.anquanke.com/post/id/290851

pde和pte:https://blog.csdn.net/q1007729991/article/details/52723478

管道:https://zhuanlan.zhihu.com/p/470183989

Dirty pipe :https://blog.csdn.net/void_zk/article/details/125884637

Pipe_write源码分析:https://xz.aliyun.com/t/11016?time__1311=Cq0x2QD%3DqDT4l2zYGQqpxQq0I1tqWumD

linux寻址机制:https://www.cnblogs.com/binlovetech/p/17571929.html


ElegyAbout 17 minpwnkernel
FSOP细读

FSOP细读

io_file中经典利用 核心L_IO_flush_all_lockp函数的利用

利用条件

  • 知道libc基地址

    _IO_list_all 是作为全局变量储存在 libc.so 中的

_IO_flush_all_lockp(libc 2.23)

三种情况下会被自动触发:

  1. 当 libc 执行 abort 流程时

  2. 当执行 exit 函数时

  3. 当执行流从 main 函数返回时


ElegyAbout 2 minpwnio_file
vctf apples leak libc操作复现(高版本的overlapping)

vctf apples leak libc操作复现(高版本的overlapping)

题目中存在off_by_one libc版本2.34以上我们没办法使用常规的overlapping 泄露libc地址

所以我们要精心构造一个chunk head来绕过新版本的检查机制 实现leak libc的操作

文章中我们先讲原理 在最后会将Arahat0师傅的脚本给出来()

安全检查机制

  • 2.34下的合并检查机制

    • 检查size是否对得上
    image-20240325110240440
    image-20240325110240440
    • unlink检查

      image-20240325110339049
      image-20240325110339049

ElegyAbout 5 minpwnheap
House of lore学习

House of lore学习

主要是看着wiki 理解理解 然后自己看的glibc2.27的源码 抛开tcache部分

源码

这里是去除了不重要的tcache bin判断部分

if (in_smallbin_range (nb)){
      idx = smallbin_index (nb);
      bin = bin_at (av, idx);

      if ((victim = last (bin)) != bin)
      {
          bck = victim->bk;
          if (__glibc_unlikely (bck->fd != victim))
            malloc_printerr ("malloc(): smallbin double linked list corrupted");
          set_inuse_bit_at_offset (victim, nb);
          bin->bk = bck;
          bck->fd = bin;

          if (av != &main_arena)
	           set_non_main_arena (victim);
          check_malloced_chunk (av, victim, nb);
          void *p = chunk2mem (victim);
          alloc_perturb (p, bytes);
          return p;
      }
}

ElegyLess than 1 minutepwnheaphouse
记一次高版本glibc(2.34)下常规overlapping失败的原因(vctf 2024 apples)

记一次高版本glibc(2.34)下常规overlapping失败的原因(vctf 2024 apples)

昨天做vctf被打自闭了 由于对glibc高版本的保护不熟悉 第二题apples 连leak libc都没实现

这里记录一下为什么常规overlapping会失效

版本

  • glibc 2.34
  • off_by_one漏洞

读题

  • 首先是add user部分 存在off_by_one漏洞

    image-20240317100413787
    image-20240317100413787
  • delete部分无懈可击()

    img
    img

ElegyAbout 1 minpwnheap
large Bin Attack学习(_int_malloc源码细读 )

large Bin Attack学习(_int_malloc源码细读 )

参考文章:
wiki:Large Bin Attack - CTF Wiki (ctf-wiki.org)
源码级调试glibc:源码级调试glibc_glibc cannot be compiled without optimization-CSDN博客
源码分析:glibc 2.31 malloc与free 源码分析(持续更新) - PwnKi - 博客园 (cnblogs.com)+glibc malloc源码分析 - PwnKi - 博客园 (cnblogs.com)
详细拆分了_int_malloc的流程 并且按照功能分了标题 想要了解对应部分就直接点击标题跳转即可
第一次阅读glibc的源码然后进行分析 有错误的地方请大佬指正


ElegyAbout 15 minpwnheap