墨锋阁 Code & Conquer

CISCN 2023 西南分区赛 over WriteUp

安全措施 程序分析 首先是初始化程序,将 puts 放在了 bss 段 0x4088 的位置,具体查看汇编发现是直接把 puts 的函数地址放进去了。 主程序先接受一个 name 存

墨锋 墨锋 Published on 2023-06-12

libc.so.6 背后的含义

Linux 有一套规则来命名系统中的每一个共享库,它规定共享库的文件命名规则如下:libname.so.x.y.z,即前缀"lib"+库名称+后缀".so"+三个数字组成的版本号,其中,x 表示主版本号,y 表示次版本号,z 表示发布版本号。SO-NAME 命名机制,就是把共享库的文件名去掉次版本号和发布版本号,只保留主版本号。在 Linux 系统中,系统会为每个共享库在它所在的目录创建一个跟它的 ”SO-NAME” 一样的软链接指向它。

墨锋 墨锋 Published on 2023-02-08

BugKu repeater WriteUp

思路 通过输出printf地址泄露libc 覆盖printf地址为system 输出/bin/sh 分析 检查安全措施,没有PIE和canary [*] '/mnt/e/sec/bugku/pwn/repeater/pwn7' Arch: i386-32-little REL

墨锋 墨锋 Published on 2022-11-15

DASCTF 十月赛 1!5! WriteUp

思路 列出可用集,根据可用集逐步构造出全指令集 根据可用集逐步编码shellcode 看了别的师傅有很巧妙的做法:不直接调shell,而是先手写调read,然后输入真正的shellcode,绕过检测。 我这里主要借机学习一下shellcode编码,就按官方思路复现了。 指令集扩展 shellcode

墨锋 墨锋 Published on 2022-11-06

shellcode编码

shellcode原理 系统调用execve("/bin/sh", 0, 0) 具体可以参考系统调用表、64位linux中断向量表 64位 寄存器: rax = 0x3b rdi = "/bin/sh" rsi = 0 rdx = 0 一段简单的 shellcode: mov rax, 0x6873

墨锋 墨锋 Published on 2022-11-01

DASCTF X CBCTF 2022 九月挑战赛 ez_note WriteUp

这题拖了挺久的,因为一些知识点还不是很明白。 分析过程 checksec 保护全开 [*] '/mnt/e/sec/dasctf/ez_note/pwn' Arch: amd64-64-little RELRO: Full RELRO Stack: Can

墨锋 墨锋 Published on 2022-10-17

切割堆块

在glibc源码中搜索split可以找到堆块切割相关源码 在malloc.c的_int_malloc函数中发生堆块切割的情形如下: 遍历unsorted chunks时 请求满足small request last remainder 堆块是唯一堆块,且切割后剩下的仍然满足最小堆块大小 从large

墨锋 墨锋 Published on 2022-10-17

Pwn安全措施

NX: No Exection gcc -z execstack Canary: defeat bof, 在 return 前做 canary check - security_init() => fs:0x28 (stack guard) - canary end with

墨锋 墨锋 Published on 2022-10-02

函数调用约定

为了能够调用函数,需要有一种公认的方式来传递参数。 如果程序是完全独立的二进制文件,编译器可以自由决定调用约定。 然而在现实中,会使用共享库(例如 libc)以便公共代码可以只存储一次并动态链接到需要它的程序,从而减少程序大小。 在 Linux 二进制文件中,实际上只有两种常用的调用约定:cdecl

墨锋 墨锋 Published on 2022-10-02

DASCTF X CBCTF 2022 九月挑战赛 Appetizer WriteUp

我的第一道沙盒题(竟然不能get shell!!!),主要考察栈帧分配(构造rop链)。顺便学了下pwntools rop的接口,还是挺香的。 我喜欢轮子,exp里会用比较多的轮子,建议看最终exp。 分析过程 栈帧复用 func里面写入的栈帧在check里面复用,通过检测。 io.send

墨锋 墨锋 Published on 2022-09-26
Previous Next