分类: 赛棍日记

27 篇文章

thumbnail
Pwn安全措施
NX: No Exection gcc -z execstack Canary: defeat bof, 在 return 前做 canary check - security_init() => fs:0x28 (stack guard) - canary end with \x00 gcc -fno-stack-protector: no…
函数调用约定
为了能够调用函数,需要有一种公认的方式来传递参数。 如果程序是完全独立的二进制文件,编译器可以自由决定调用约定。 然而在现实中,会使用共享库(例如 libc)以便公共代码可以只存储一次并动态链接到需要它的程序,从而减少程序大小。 在 Linux 二进制文件中,实际上只有两种常用的调用约定:cdecl 用于 32 位,SysV 用于 64 位。 cd…
thumbnail
DASCTF X CBCTF 2022 九月挑战赛 Appetizer WriteUp
我的第一道沙盒题(竟然不能get shell!!!),主要考察栈帧分配(构造rop链)。顺便学了下pwntools rop的接口,还是挺香的。 我喜欢轮子,exp里会用比较多的轮子,建议看最终exp。 分析过程 栈帧复用 func里面写入的栈帧在check里面复用,通过检测。 io.sendafter(b'identity', …
thumbnail
DASCTF X CBCTF 2022九月挑战赛 Cyberprinter WriteUp
分析过程 观察栈结构 这题的关键(对我来说)就是利用栈上残留的数据。平时练的不多,没有这个习惯,导致泄露和格式化字符串利用都遇上了麻烦。 vuln函数里的栈结构如下: 00:0000│ rsp 0x7fffffffdfe0 ◂— 0x0 ... ↓ 2 skipped 03:0018│ 0x7fffffffdff8 —▸ 0x7ffff7fb55c…
Python解析libc未导出符号
背景 glibc里面有很多未导出的符号,比如一些数据变量、内部函数等等。漏洞利用时有时需要对这些符号进行定位,由于这些符号与libc偏移固定,一般的方式是通过gdb算出这些偏移。但这种方式的弊端在于不能可靠地解析不同glibc下的符号偏移,每次切换不同的libc都需要重新定位。 本文以exit hook中的__libc_atexit为例介绍一种基于…
thumbnail
exit hook分析
最近学习exit hook,网上师傅分析exit hook时都一带而过,没有具体分析细节,所以这里通过看源码给大家详细分析一下几种exit hook: __libc_atexit _rtld_global _dl_rtld_lock_recursive _dl_rtld_unlock_recursive 我用的是2.31的libc源码,本文涉及源码…
thumbnail
2014 HITCON stkof WriteUp
安全策略 先用checksec检查安全策略 Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000) 运行程序 跑起来没有提示,直接下一步看看吧。 静态分析 IDA打开反编译,主函数实现了一个比较常见的菜单…
thumbnail
WSL Pwntools通过wt打开gdb
前言 Win10 WSL2 用 pwntools 进行gdb.attach()时默认打开竟然是 cmd,不仅界面丑不说,还有很多字符显示有问题...... 我记得用win11的时候一直是用 Windows Terminal 打开的啊..... 然而,网上逛了一圈,好像没找到这个教程?什么!我又看了眼丑陋的 CMD 和显示成方框的箭头......这我…