CTFshow(栈溢出部分,47~57)
# pwn47(ret2libc)
# 题目:
ez ret2libc
32 位程序保护只有 Partial RELRO
cint ctfshow(){ char s[152]; // [esp+Ch] [ebp-9Ch] BYREF puts("Start your show time: "); gets(s); return puts(s);}有 gets 函数,然后也执行了 puts,可以进行泄露得到 libc 基址
nfrom pwn import *from LibcSearcher import *
more...柏鹭杯2023 pwn()
# pwn1 eval
漏洞利用参考:
https://xuanxuanblingbling.github.io/ctf/pwn/2020/02/01/calc/
https://juniorprincewang.github.io/2017/10/01/pwnable-tw 之 calc/
https://lonmar.cn/2022/02/23/pwnabletw-calc
more...柏鹭杯2022 pwn()
# pwn1 note1
# 1. 程序分析
64 位程序,发现保护全开了
~~![](/2022picture/1.png)~~
# ida 查看一下:
main:
~~![](/2022picture/2.png)~~
v3=1时:
这里发现对于输入的 tag 始终是在 先 创建的 0x20 的 chunk 中,而对于 name 的 chunk 是 tag 的下一个;并且这里发现 func1、2、3 没有任何区别
v3=2时:
看到这里对 name 、 tag 、 func 都可以重新编辑了
v3=3时:
more...FORTIFY_SOURCE(例题:CTFshow的pwn32)
# 1. 简介(在编译时进行设置):
fority 是轻微的检测,用于检查缓冲区溢出的错误,在程序采用打量的字符串或者内存操作函数适用,例如:memcpy、memset、stpcpy、strcpy、strncpy、strncat、sprintf、snprintf、vsprintf、gets 以及宽字符的变体。
# 2. 作用:
FORTIFY_SOURCE 是一个 C/C++ 编译器提供的安全保护机制,旨在防止缓冲区溢出和其他与字符串和内存操作相关的安全漏洞。它是在编译时自动 插入的一组额外代码 ,用于增强程序对于缓冲区溢出和其他常见安全问题的防护。 FORTIFY_SOURC
more...large bin attack(为house利用系列打下基础)
# 1.Large bin
# 1.
在释放堆块时,想要进入 large bin 的堆块需要大于等于 512 (1024)字节【用户空间需要 大于等于 0x3F0,用户空间小于 0x3F0 进入 small bin 】
而 largebin 还要考虑 fd_nextsiez 和 bk_nextsize ,这两个是因为,在 largebin 中,会按着相同大小的 chunk 归到一起,不同 chunk 组直接的联系就需要 fd_nextsize 和 bk_nextsize 。这里除了每组的第一个 chunk ,其他的 fd_nextsize 和 bk_nextsize 都为 0
f
more...ASLR与PIE(例题:CTFshow的pwn31)
# 前言
ASLR 与 PIE 是不同的,两者不能认为是同一个机制,但是他们都是对地址进行 随机化 ,只不过作用的 对象 和作用 时期 不太一样
# 1.ASLR (操作系统的功能):
ASLR 是 Linux操作系统 的功能选项,作用于程序 (ELF) 装入 内存 运行时。是一种针对缓冲区溢出的安全保护技术,通过对加载地址的随机化,防止攻击者直接定位攻击代码位置,到达阻止溢出攻击的一种技术。
# 打开 / 关闭 ASLR:
# 查看 ASLR 打开情况:
lsudo cat /proc/sys/kernel/randomize_va_sp
more...hitcon2014_stkof(unlink)
# 1. 程序分析
64 位程序,没有开启 pie
# 利用 ida 进行分析
发现是一个流程
# 当 v3=1 时
此处先让我输入,然后根据输入的值开辟一个对应大小的堆
(&::s)[++dword_602100] = v2; 这里是存放chunk地址的数组;
这里是一个数组里面一个元素有八个字节,这里将我们开辟的堆的地址存放在这里
前面的::s这是因为ida在编译伪代码的时候出现了一些问题,这个s和其他变量名重复了
所以我们只需要选中`::`后面的s然后右键选择Rename global item更改一下变量名就可以了
printf(
more...堆利用之unlink(例题:hitcon2014_stkof)
libc 源码下载:
http://ftp.gnu.org/gnu/glibc/
# 1.Unlink
这里参考了博客:
https://hollk.blog.csdn.net/article/details/108481889?spm=1001.2014.3001.5502
unlink 是一个宏,定义在 malloc.c 里
c#define unlink(AV, P, BK, FD) {
more...hitcontraining_uaf(use after free)
# 1. 程序分析
32 位程序,开了 NX
伪源码:
main
cint __cdecl __noreturn main(int argc, const char **argv, const char **envp){ int v3; // eax char buf[4]; // [esp+0h] [ebp-Ch] BYREF int *v5; // [esp+4h] [ebp-8h] v5 = &argc; setvbuf(stdout, 0, 2, 0); setvbuf(std
more...