自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 NJUOS:多处理器编程

进程是资源分配的基本单位,linux线程其实是通过轻量级进程实现的LWP(light weight process),所有Linux内核的角度去看线程和进程并没有区别,只不过他和主线程共享一些资源,线程是最小的执行单位,调度的基本单位。同时也是资源竞争的基本单位。

2023-05-19 10:53:37 311

原创 NJUOS操作系统上的程序

程序就是状态机状态 = 堆 + 栈初始状态 =main的第一条语句迁移 = 执行一条简单语句递归的汉诺塔,经典分治算法,每次都把n-1当作一个整体,把n-1挪到辅助位,把最下面移到目标,再把辅助位上n-1移到目标else {} return;非递归,个人感觉其实还是一个递归的思想,只是我们没有用c来帮助我们调用函数,而是在c的层面上做了一层抽象,把底层的栈帧给抽象出来,来模拟调用,让我们更形象的看到状态的转移,理解程序是个状态机int pc , n;} Frame;

2023-05-19 10:46:17 271

原创 House Of Spirit 2014 hack.lu oreo

我们申请只能在add函数里面malloc(0x38),也就是说size必须控制为0x38+0x8来申请,这样我们申请0x40个chunk,再控制最后一个next指针指向0804A2A8,这个伪造chunk next域必须为空,防止free chunk->next,这里是往0804A2A8里面的地址0804A2c0去写数据。这里我们可以控制next,可以free(next),可以修改notice,而且notice指针上面就可以控制size大小,天生的伪造,再申请控制0804A2A8。这里需要绕过一些检测。

2023-03-21 07:30:57 227

原创 2017 insomni‘hack wheelofrobots

robots指针地址大小程序add()里num = read_num((char *)&choice, 5uLL);存在off by one漏洞,会覆盖掉robots 2的inuse位,一切的一切都从这里开始。

2023-03-21 07:30:30 101

原创 2016 ZCTF note2 and note3

改写另一个chunk指针为puts_plt,free这个chunk可以泄露地址,再改写atoi-got为system即可。

2023-03-21 07:30:19 123

原创 2017 0ctf babyheap

刚开始的init_my会利用/dev/urandom随机函数用mmap随机映射一块内存给我们存放指针,没有了确定地址,我们就不好去构成unlink攻击allocate()根据我们输入的size构成如下一个结构体,把指针放在mmap的堆上fill()也会根据我们的size进行读写,任意堆溢出,这就好办了freechunk()挺好的,该置零的都置零。

2023-03-21 07:29:32 216

原创 Arbitrary Alloc 2015 9447 CTF:Search Engine

这道题静态分析起来挺复杂的,自定义的输入函数,各种阻力,最后配合gdb动态才搞明白index_sentence()读取用户输入size长度的sentence,他还会用下面的结构把每个句子的单词分开构成一个单链表,单链表的content是从sentence地址上原数据地址,表头在0x6020B8,单链表表头是最后一个单词这里由于空间复用其实heap manger给我们0x30大小chunksearch_word()读取一个输入长度比较。

2023-03-21 07:29:01 109

原创 ELF文件解析 ELF File Parsing

​实验材料:010editor readelf objdump linux_ls文件(x86-64)资料讲解32位elf,实验解析64位elfls文件信息链接:https://pan.baidu.com/s/17ElUYwRhtW0eRRED4SgNDA提取码:ldss。

2023-03-21 07:28:44 756

原创 Unlink 2014 HITCON stkof

如果我们找到或伪造地址里面的值是伪造的chunkP的地址值一个地址我们把该地址tar,tar-0x18填入fd绕过FD+0x18=P,tar-0x10填入bk绕过BK+0x10=P最终实现效果是在该tar地址写入tar-0x18两个地址tar1 和 tar2 tar1-0x18写入fd,tar2-0x10写入bktar1地址写入tar2-0x10|bk值tar2地址写入tar1-0x18|fd值。

2023-03-21 07:27:39 78

原创 ciscn 2019 es 2

漏洞函数只有0x8字节可控,有system函数在考虑栈迁移,常规我们会往bss段迁移,但是这次可以泄露处ebp。

2023-03-20 19:58:17 76

原创 ciscn 2019 s 3

这里我们利用40059A处的rdi,再返回到0400580,可以控制rdx,同时将rbx置零,就会call [r12+rbx*8]里的内容,也就是说这里控制流会被劫持,我们将r12里的内容控制为我们原本要ret的mov_rax即可,只不过这里是call,有意思的就是这里。输入0x30字节,我们的buf只是在0x10位置会把ebp给输出来,我们可以利用泄露的ebp,来寻址我们的输入,通过输入构造binsh。再次返回vuln函数,泄露地址-0x118,就可以得到输入栈地址。rax,rdi,rsi 好说。

2023-03-20 19:58:11 136

原创 Chunk Extend and Overlapping

这样我们的 *heap会申请到0x20的chunk,content会申请到0x40的chunk,我们的0x40chunk会overlap到0x20的chunk,从而控制其内容,我们把他的content指针改为got就,可以在show的时候输出地址。会在main()函数调用前执行,这样可以通过修该地址的指针来将控制流指向病毒或者寄生代码,因为比main执行还早,大部分恶意软件都是hook这个,感觉c++的构造函数或许和这个相关。这样我们就可以改写这个main的返回地址为one_gadget地址。

2023-03-20 19:54:43 150

原创 2023黄河流域公安院校网络空间安全技能挑战赛 PWN

链接:https://pan.baidu.com/s/1l3NhZ1xYwca48nf1p88iDg提取码:05zg题目开启了沙箱机制沙箱(Sandbox)是程序运行过程中的一种隔离机制,其目的是限制不可信进程和不可信代码的访问权限。计算机领域的虚拟技术,常见于安全方向。会禁用一些系统调用实现沙箱机制一种采用prctl函数调用一种是使用seccomp库函数。more。

2023-03-20 19:52:25 487

原创 Using After Free

总之就是free后没有将指针置为null造成的,我们一般称被释放后没有被设置为 NULL 的内存指针为 dangling pointer。

2023-03-20 19:44:46 158 1

原创 OFF BY ONE AsisCTF2016b00ks

题目链接:https://github.com/ctf-wiki/ctf-challenges/tree/master/pwn/heap/off_by_one/Asis_2016_b00ksmore有漏洞会多读取一个字节的/x00author name存放在unk_202040+pie处,32个字节分析后可以推断出book结构体是如下的,而且在unk_202060+pie处开始存放结构体指针,我们可以进行一个字节的溢出,来控制book1的最低位地址。

2023-03-20 19:41:00 147

原创 __malloc_hook和__free_hook劫持原理

Hook即钩子,截获API调用的技术,是将执行流程劫持到你自己的代码。刚开始在Ubuntu22上做实验,一直不成功,又换了kali,还是不行,最后发现__free_hook,__malloc_hook,__realloc_hook,_after_morecore_hookg在libc-2.34的patch中被移除了,换了Ubuntu16 libc版本2.23,但是发现只是在ld链接时会找不到definition,也就是无法通过链接的环节,但是在libc库里还是有的,可能是考虑之前使用hook程序的兼容。

2023-03-20 19:36:51 1748

原创 HEAP MANGER 堆管理器

也就是当前一个chunk是malloced,那么这个字段是无用的,为了不浪费,我们会把这块内存在必要时给到前一个chunk,比如我们在64位程序下,malloc(0x10),实际会分配0x20个字节,会包括chunk_head,free掉后,我们再次malloc(0x18),该chunk的高地址处的chunk的pre_size字段是无用的,会被利用起来,也就是会再次把之前malloc(0x10)的chunk给到我们,一般空闲的 large chunk 在 fd 的遍历顺序中,按照由大到小的顺序排列。

2023-03-20 19:29:40 200

原创 几经周折rop

链接:https://pan.baidu.com/s/1_EXQHF0uumBE2tWhloeiNg提取码:2thf某大学冬令营,题目本来是很简单的,但是刚开始出题方靶机环境可能出现了某些问题,导致exp一直可以打通本地,打远程一直打不出flag,也不敢质疑是官方的问题,一直在改自己的exp,不过也引发了自己的一些思考,写出了多种思路,最后官方修复了,写的几个exp也都打通了好家伙保护开满了很快发现了两处输入都有漏洞函数点,buf只有8byte容量,却分别读入0x1e和0x5a,还有后门函数win嘿嘿很明

2023-03-20 19:24:15 96

原创 非栈上的格式化字符串漏洞

利用1处栈地址,也就是将0xffffcfa8地址处内容0xffffcfb8修改为0xffffcfac,由于开启pie保护,0xffffcfac处所存内容是elf文件所存地址+pie基址生成的,got表也在elf文件的数据区,也是有地址+pie基地址生成,所以我们只需要利用%$hn修改其低四位即可(小端序),buf地址可以利用%$p泄露,这样我们就可以输入buf为printf_got+payload,修改其got为system地址。(目标文件该节在磁盘不占空间,在运行时,内存分配,初始化0))

2023-03-20 19:18:30 964

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除