首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏玄魂工作室

    Unlink的学习与利用

    本文转载自 订阅号“安全初心” 原理 0x00 unlink是什么 unlink说的是linux系统在进行空闲堆块管理的时候,进行空闲堆块的合并操作。一般发生在程序进行堆块释放之后。 ? 其实操作就是(学过数据结构应该很好理解) p->fd->bk = p->bk p->bk->fd = p->fd 0x01 从源代码理解unlink #define unlink(P, BK, 0)) malloc_printerr (check_action, "corrupted double-linked list", P); //这里有一个unlink 释放内存块) useless (无用函数) 0x02 利用过程 首先构造3个chunk:chunk1、chunk2、chunk3, 利用漏洞溢出chunk2,使chunk2和chunk3合并,利用unlink alloc(0x100) # id 1 # begin alloc(0x40) # id 2 # small chunk size in order to trigger unlink

    98830发布于 2019-09-24
  • 来自专栏渗透云笔记

    Unlink漏洞简单分析

    0x1,堆溢出漏洞; 0x2,闲聊:Unlink的难度不小,现在也只能勉强理解; 关于unlink的漏洞简单说一下 1,第一个判断 if(chunksize (p) ! 记录当前size的地方有两处一个是为当前chunk的size字段和下一个chunk(物理地址上相邻的高地址的chunk)的prev_size字段如果这两个字段的值不等,则unlink会抛出异常。 如过此时想要free chunk3那么要进入unlink则需要使unlink函数认为伪chunk是空闲的并绕过检查。 # idx 1 # begin alloc(0x30) # idx 2 # small chunk size in order to trigger unlink it believe that prev chunk is free payload += p64(0x90) edit(2, len(payload), payload) # unlink

    80410发布于 2019-10-31
  • 来自专栏陈冠男的游戏人生

    PWN入门(unsafe unlink

    接下来释放掉 chunk1 因为 fake chunk 和 chunk1 是相邻的一个 free chunk,所以会将他两个合并,这就需要对 fake chunk 进行 unlink,进行如下操作 FD 这样,对第 3 个进行 free 的时候会发生 unlink,head + 16 与 head +16 -0x18 那么最终的效果就是我们编辑第二个的时候就是编辑的 head + 16 - 0x18,也就是

    1K31发布于 2020-08-05
  • 来自专栏漫流砂

    堆溢出 —— unlink | PWN

    知识 wooyun-drops_Linux堆溢出漏洞利用之unlink https://wooyun.js.org/drops/Linux%E5%A0%86%E6%BA%A2%E5%87%BA%E6% /drops/%E5%A0%86%E6%BA%A2%E5%87%BA%E7%9A%84unlink%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95.html ctf-wiki_unlink h=unlink#unlink [Unlink] 2014-HITCON-stkof | LiuLian http://liul14n.top/2020/02/03/Unlink-2014-HITCON-stkof unsortedbins fd bk top_chunk unlink /*unlink操作的实质就是:将P所指向的chunk从双向链表中移除,这里BK与FD用作临时变量*/ #define unlink ——bamboobox https://github.com/bash-c/pwn_repo/tree/master/HITCON/hitconTraining_unlink

    1.3K31编辑于 2022-08-31
  • 来自专栏零域Blog

    php删除文件unlink

    本文章来讲讲用php的unlink函数来删除文件和文件夹吧,下面来看看unlink的实例教程 你知道如何建立一个档案。您知道如何打开一个文件中各种各样的方式不同。 php的-文件unlink 当您查看的内容目录,您可以看到所有的档案,存在于该目录,因为作业系统或应用程序,您使用的是显示一个列表文件名。你可以把这些文件名作为链接,加入档案的目录您正在浏览。 php的-文件unlink 请记住从php文件创建的教训,我们创建了一个文件,名为testFile.txt 。 $myFile = "testFile.txt"; unlink($myFile); 删除文件.注明,删除文件夹在php里面只有文件夹为空时才能用unlink 进行删除操作.

    2.3K20编辑于 2022-03-02
  • 来自专栏程序手艺人

    unlink 和 remove 的区别

    Linux下开发的时候,会经常使用unlink来删除文件的,而用C的时候,经常用remove删除文件. 这两者的去区别通过man手册发现:  ? 当remove() 中的pahtname指定为目录时,相当于调用rmdir 删除目录, 当remove() 中的pathname指定问文件时,相当于调用unlink 删除文件链接 所以发现remove是间接调用 unlink来删除文件的目的 参考 unlink remove 函数详解

    2.3K30发布于 2019-02-21
  • 来自专栏赤道企鹅的博客

    2016_zctf_note2 (Unlink)

    算是unlink的一道经典题目,借助这道题来整理一下Unlink任意写的基本使用方法与注意事项。exp参照官方wp做了调整。 这里不对题目本身做太多逆向分析,下面是下载链接,包含了题目和exp: 点击下载 0x00 Unlink的原理 unlink的过程 Unlink顾名思义就是把元素从链表取出的一种操作,这种操作常常发生在malloc (av, p, bck, fwd); } 其实我不能从linux开发者的角度而言完整的解释unlink存在的必要性。 0x02 exp思路 这题的堆块创建次数最多4次,所以不太方便用fastbin attack进行任意写,于是尝试unlink。 此时free掉chunk[2]便可以触发unlink,使得原来存放 &chunk[0] 的地址存放了 &chunk[0]-0x18 。

    72510编辑于 2022-08-01
  • 来自专栏宸机笔记

    Heap-Unlink&DoubleFree之FreeNote

    指针泄露出main_arena+88的地址,进而泄露libc地址 详情见: https://oneda1sy.gitee.io/2020/10/07/Heap-LeakMainarena-Heap/ Unlink unlink的目的就是把一个双向链表中的空闲块拿出来。 = P, 0)) malloc_printerr ("corrupted double-linked list"); 上面的意思也就是在unlink前,首先要获取P的fd指针和bk指针分别记作 FD、BK,在unlink时需要使要被free的chunk(P)的前一个chunk(FD)的bk指针和这个chunk的后chunk(BK)的fd指针指向这个即将free的chunk(P)才可以执行。 删除chunk_1,触发unlink使chunk_0脱链,使得chunk_0的内容落在&(chunk_0-0x18)的位置 ?

    83740发布于 2020-11-04
  • 来自专栏氧化先生的专栏

    unlink漏洞的原理和利用

    0x2 unlink是什么 unlink说的是linux系统在进行空闲堆块管理的时候,进行空闲堆块的合并操作。一般发生在程序进行堆块释放之后。 继而对堆块P进行unlink的操作,下面看一下unlink的操作过程(以32位系统说明问题): 1. FD = P->fd = addr - 3*4 2. 0x4 加了防护机制的unlink unlink其实是libc中malloc.c文件中的一个宏定义,代码如下(P代表当前堆块,FD代表下一个堆块,BK代表前一个堆块): #define unlink(P 0x5 分析unsafe unlink的代码,理解unlink漏洞 unsafe unlinke的代码在这里:https://github.com/Escapingbug/how2heap/blob/master t *chunk0_ptr; int main(){    printf("Welcome to unsafe unlink 2.0!

    2.3K20发布于 2018-08-21
  • 来自专栏ytkah

    解决Warning: unlink(storagecachecache.catalog.language.1556158719)

    ytkah在调试opencart项目时提示Warning: unlink(/storage/cache/cache.catalog.language.1556158719): No such file @unlink($file)) { clearstatcache(false, $file); } }

    1.5K20发布于 2019-05-25
  • 来自专栏蔻丁杂记

    Git 无法拉取 Unlink of file failed

    现象 Git 无法拉取,提示: Unlink of file ‘.git/objects/pack/pack-***.pack’ failed. Should I try again? 参考资料 windows - Unlink of file failed - Stack Overflow git操作中出现Unlink of file ’…’ failed.

    64710编辑于 2024-12-25
  • 来自专栏Ms08067安全实验室

    一道题彻底理解 Pwn Heap Unlink

    基本原理 unlink是一个宏操作,用于将某一个空闲 chunk 从其所处的双向链表中脱链, 我们来利用unlink 所造成的漏洞时,其实就是对进行 unlink chunk 进行内存布局,然后借助 unlink 已知位置存在一个指针指向可进行 UAF 的 chunk 利用思路 设指向可 UAF chunk 的指针的地址为 ptr 修改 fd 为 ptr - 0x18 修改 bk 为 ptr - 0x10 触发 unlink 实现效果 使得已指向 UAF chunk 的指针 ptr 变为 ptr - 0x18 源码分析 源码路径 malloc.c _init_free #define unlink(AV 当满足以上条件时,才可以进入 Unlink 断链的环节: 因为 P 只可能从 smallbin 或者 largebin 中脱链,而这两个 bin 都是双向链表,因此脱链操作必须同时修改前后 chunk 例题和完整 exp :https://url.cn/5BMP2pA 感谢 https://ctf-wiki.github.io/ctf-wiki/pwn/linux/glibc-heap/unlink-zh

    4.4K30发布于 2019-12-23
  • 来自专栏运维经验分享

    Failed to unlink socket file tmpmongodb-27017.sock Operation not permitted

    mongodb/data/mongod.lock is not empty. 2019-09-05T14:59:25.718+0800 E NETWORK  [initandlisten] Failed to unlink transport/transport_layer_asio.cpp 171 2016-07-12T16:52:28.912+0800 E NETWORK  [initandlisten] Failed to unlink

    2.4K20发布于 2019-09-06
  • 来自专栏行者常至

    error: unable to unlink old antzb-websrcmainwebappjsny-details.js: Invalid argument

    false -c core.quotepath=false checkout – antzb-web/src/main/webapp/js/ny-details.js error: unable to unlink

    84730发布于 2018-08-15
  • 共享内存cmake报错undefined reference to symbol ‘shm_unlink@@GLIBC_2.2.5

    CMakeLists.txt但是会报错 /usr/bin/ld: CMakeFiles/main.dir/main.cpp.o: undefined reference to symbol 'shm_unlink

    18010编辑于 2025-07-19
  • 来自专栏原创分享

    linux系统调用之sys_unlink(基于linux0.11)

    sys_unlink是删除硬链接的系统调用,引用数为0时底层的文件会被删除sys_unlink是删除硬链接的系统调用,引用数为0时底层的文件会被删除 // 删除硬链接 int sys_unlink(const

    2.9K20发布于 2019-05-14
  • 来自专栏鹿苑

    PHP unlink与rmdir删除目录及目录下所有文件实例代码

    在php中删除文件与目录其实很简单只要两个函数一个是unlink一个rmdir函数,如果要实现删除目录及目录下的文件我们需要利用递归来操作. is_dir( “$dirName/$item” ) ) { delFileUnderDir( “$dirName/$item” ); } else {//开源代码phpfensi.com if( unlink {unlink($pathdir.'/'.$a);} //如果是文件就直接删除 if(is_dir($pathdir.'/'.$a) && ($a!='.') && ($a! = “..” ) { if ( is_dir( “$dirName/$item” ) ) { delDirAndFile( “$dirName/$item” ); } else { if( unlink > 以上所述是小编给大家介绍的PHP unlink与rmdir删除目录及目录下所有文件实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

    1.8K00发布于 2021-07-13
  • 来自专栏信数据得永生

    Linux (x86) Exploit 开发系列教程之九 使用 unlink 的堆溢出

    使用 unlink 的堆溢出 译者:飞龙 原文:Heap overflow using unlink 预备条件: 理解 glibc malloc 这篇文章中,让我们了解如何使用 unlink 技巧成功利用堆溢出 看一看漏洞程序的堆内存图片: unlink:这个技巧的核心思想,就是欺骗 glibc malloc 来 unlink 第二个块。 例如,从 binlist unlink(移除)前一个块,将前一个块的大小与当前块相加,并将块指针指向前一个快。但是我们这里,前一个快是分配的,因此 unlink 不会调用。 例如,从它的 binlist 中 unlink(移除)下一个块,并将下一个块的大小添加到当前大小。但是我们这里,下一个块是分配的,因此 unlink 不会调用。当前空闲块first不能向前合并。 例如,从 binlist unlink(移除)前一个块,将前一个块的大小与当前块相加,并将块指针指向前一个快。但是我们这里,前一个快是分配的,因此 unlink 不会调用。

    93130编辑于 2022-12-01
  • 来自专栏云微的一点分享

    eBPF 入门开发实践教程二:在 eBPF 中使用 kprobe 监测捕获 unlink 系统调用

    本文是 eBPF 入门开发实践教程的第二篇,在 eBPF 中使用 kprobe 捕获 unlink 系统调用。 本文会先讲解关于 kprobes 的基本概念和技术背景,然后介绍如何在 eBPF 中使用 kprobe 捕获 unlink 系统调用。 unlink 系统调用的功能是删除一个文件,这个 eBPF 程序通过使用 kprobe(内核探针)在do_unlinkat函数的入口和退出处放置钩子,实现对该系统调用的跟踪。 4710.951895: bpf_trace_printk: KPROBE EXIT: ret = 0总结通过本文的示例,我们学习了如何使用 eBPF 的 kprobe 和 kretprobe 捕获 unlink 下一篇文章将介绍如何在 eBPF 中使用 fentry 监测捕获 unlink 系统调用。

    88520编辑于 2023-08-14
  • 来自专栏算法微时光

    android信号量问题(sem_open、sem_close、sem_unlink)

    但是在libc库中,函数sem_open、sem_close、sem_unlink只有声明,并未实现。 可以从一下代码中找到证据。 implemented. */ sem_t* sem_open(const char* __name, int _flags, ...); int sem_close(sem_t* __sem); int sem_unlink

    1.9K30发布于 2020-04-24
领券