Skip to main content
2024四川省信息安全省赛snake复现

2024四川省信息安全省赛snake复现

复习

由于这题是利用的构造一个fakechunk 来进行free所以我们需要好好搞清楚一下glibc2.39版本下free的检测差不多有哪些(这里针对大chunk)

free

  • 首先会检查size是否正常

    • 是否对齐
    • 是否大于最小值
  • 利用check_inuse_chunk查看这个chunk是否是double free

  • 获取物理意义上下一个chunk

  • chunk不能是topchunk

  • 下一个chunk的p位必须为1

  • 检查下一个chunk的size是否正常

  • 要是当前chunk的prev_inuse位为0则执行合并机制

  • 当下一个chunk不是头chunk 则获取下下个chunk 当nextinuse位为0的话就触发unlink


ElegyLess than 1 minute
pwn IO相关偏移

pwn IO相关偏移

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

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

gdb调试技巧

  • 查看结构体的偏移量

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

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

ElegyAbout 8 minpwnio
house of apple2板子

house of apple2板子

vctf apple 复现(apple的通用模板)

本文参考的是Arahat0 师傅的脚本 这里主要介绍一下vctf apple的house of apple部分的思路 与常规的house of apple不同这里将_wide_data指向劫持的FILE结构体加减偏移 来让脚本更加可以移植 最后实现栈迁移打ROP链的操作


ElegyAbout 5 min

![fb1a288c642bea3735402249db6fe6ff](/Users/elegy/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/nt_qq_e931de0b75079abb07148fd16dfa5521/nt_data/Pic/2024-09/Ori/fb1a288c642bea3735402249db6fe6ff.jpg)


ElegyLess than 1 minute
One_byte_ROP

One_byte_ROP

题目

void __noreturn sub_11A9()
{
  char v0; // [rsp+Fh] [rbp-11h] BYREF
  void *buf; // [rsp+10h] [rbp-10h] BYREF
  unsigned __int64 v2; // [rsp+18h] [rbp-8h]

  v2 = __readfsqword(0x28u);
  if ( !ptr )
    ptr = malloc(0x40000uLL);
  v0 = 0;
  buf = 0LL;
  read(0, &buf, 8uLL);
  read(0, &v0, 1uLL);
  *((_BYTE *)buf + (_QWORD)ptr) = v0;
  write(1, "HELLO WORLD", 0xCuLL);
  _Exit(0);
}

ElegyLess than 1 minute
CGO

CGO

汇编

参考文章:https://mp.weixin.qq.com/s/YtTY23cWaE3M5ygAurj1Ig

GO语言的汇编并不是针对硬件框架的汇编,而是抽象出来的可移植汇编

使用的是GAS汇编,也就是(Gnu ASsembler) 可以通过

go build -gcflags "-N -l -S" main.go 2 > main.s

实现生成对应汇编代码


ElegyAbout 5 mingolangcgo
不好看的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