- 博客(35)
- 收藏
- 关注
原创 HTB gamepwn CubeMadness1&CubeMadness2
HTB gamepwn CubeMadness1&CubeMadness2
2024-02-13 17:32:50 413
原创 house of cat
其中rax, qword ptr [rdi + 0xa0] rax会被赋值为wide_data结构体的地址(rdi是我们伪造的io结构体地址)mov rax, qword ptr [rax + 0xe0] rax被赋值为指向wide_data结构体+0xe0的地址。在_IO_switch_to_wget_mode 函数可以进行一次任意执行。最后可以进入_IO_switch_to_wget_mode 函数。首先进入_IO_flush_all_lockp 函数。增删改查有exit函数调用。
2024-02-10 13:40:55 356
原创 l3hctf2024 pwn treasure_hunter
可以看到上面的大块可以覆盖到0x20小块的数据区,正好这个小块存放着hashmap的pairs指针我们只需要覆盖其低地址并且在可控制的块伪造pairs和修改一些关键字符(dream操作)就可以完成伪造,伪造之后就可以实现将任意的key放在hashmap中从而实现任意读任意写。我刚才提到了" 修改关键字符 ",如上图在hashmap每插入一对pair的时候都会产生一个字符用于标识key,所以我们只需要搞明白字符是怎么来的和字符应该放在哪里。上图我也写了注释,v8就是我们要确定的字符。成功getshell。
2024-02-07 01:03:16 486 1
原创 dicectf2024 pwn
strtok函数在分割字符串的时候会将delim置为\x00这将导致前面的字符串在分割的时候把后面的堆块size某些字节置为\x00,因此可以利用这个漏洞打off by null。打完off by null向前合并之后就简单了直接控制tache块申请到free_hook直接改写就行。主办方虽然没有给libc但是给了题目所使用的dockerfile。本题使用的是Ubuntu18。查看函数,此处调用了strtok函数来分割字符串。也就是2.27版本的库。删除函数无uaf存在。
2024-02-04 22:30:00 386
原创 pwn-college kernel l1
模块在初始化的时候就已经将flag读出来了所以本题并不需要提权。read函数从用户空间读入一串字符作为password进行比较。write函数下,如果read函数比较正确就返回flag。
2024-01-29 20:24:40 376
原创 春秋杯2024 house of some
fopen函数会在打开设备以后会在_IO_list_all_插入新的IO结构,这一点在后面会用到。在菜单函数这里显然有一个未初始化的变量v4由于getint使用了scanf,"%lld"接收数据在遇到’-'时不会覆盖栈上的数据又由于下面会打印出栈上的值存在一个泄露问题。第一次利用写在114514上面写入新的任意读fake_io1和fake_io2,同时这个fake_io1的chain成员应该是一个任意写的fake_io2方便循环利用。读出任意函数的返回地址所在的栈的地址。下面是模板任意读和任意写的模板。
2024-01-26 22:46:28 402 2
原创 mapnactf2024 pwn ninipwn&protector
tips:之所以两个不一起泄露是因为在调试的过程中两个一起泄露需要10个字节刚好覆盖了text_len会导致后面的加密函数越界使得程序崩溃,故分开泄露。先溢出泄露库地址然后将剩下的语句写到bss段上面,然后栈转移,接着调用mprotect函数将bss段改为可执行,最后跳到shellcode处读flag。2.通过格式化字符串泄露程序加载地址最后将win函数的加载地址覆盖回返回地址。开启了沙箱根据其提供的可使用的syscall可以推断是要使用orw。提供了可以使用的汇编。成功getshell。
2024-01-23 21:48:49 383 1
原创 mapnactf2024 pwn buggypaint
现在申请一次context为0x40的块(称为a块) 这样的话a块就可以控制paint结构体,也就间接控制了一个paint结构体。用任意写将链表的数量改大方便块进入unsortedbin内,然后任意读泄露库的地址。题目所给库版本是2.35存在tache机制,依据tache后进先出的机制,可以先申请一个context大小为0x40的块和三块context超过0x70大小的块(方便待会泄露libc基址)。qword6060的作用是存储用于show和edit功能的paint结构体指针。成功getshell。
2024-01-22 16:13:02 441
原创 HGAME 2023 new_fast_note
因为无编辑功能,所以无法绕过被释放堆块的key字段,要达成doublefree可以将申请多个堆块释放到fastbin上面构造成A->B->A完成利用。接下来就很简单了2.31 几个常用hook还在还可以利用。free函数下存在uaf。成功doublefree。成功getshell。
2023-09-27 17:47:23 207 1
原创 2023羊城杯决赛 pwn
因为库版本是2.23没有对top块大小做检查所以可以正应了题目的名字(house of force)发现第一次申请一个巨大的块泄露地址,第二次可以申请小于0x30的堆块修改top块的大小。第三次申请把malloc_got拿出来写上system第四次申请就成功getshell。注意:直接覆盖成后门地址会因为对齐出问题所以应该跳过push命令以后。没有开pie 堆地址存在固定位置上可以使用unlink攻击。-7的位置上面存在函数返回地址。成功getshell。成功getshell。成功getshell。
2023-09-18 16:42:30 258
原创 HGAME 2022 ezvm
结合刚才调试的操作码可以在原h的位置下写入断点判断加密方式。无pie可以轻松从寄存器找到相对应的加密数组和加密之后的数。断点下在switch就可以知道vm做了什么。既然flag是输入的所以一定有比较函数。在操作码15处有一个比较函数。知道了谁和谁比接下去就是动调。调试可得需要输入32个字母。无壳 放入ida分析。输入h * 32观察。可得加密为异或与移位。
2023-09-13 20:02:28 131
原创 细究sql注入漏洞
它是一种专门用于定义、操作和管理关系型数据库的语言,广泛应用于各种数据库管理系统(DBMS)中,如MySQL、Oracle、SQL Server、PostgreSQL等。虽然各个数据库管理软件遵循sql标准但是相对来讲各个数据库管理软件是作为sql的超集也就是说它们有自己独特的功能。SQL允许用户通过使用预定义的命令和语法来执行各种数据库操作,包括创建、修改和删除数据库、创建和修改表格、插入、更新和删除数据、执行查询和排序等。它提供了一种简单而强大的方法来管理和操作存储在关系型数据库中的数据。
2023-09-07 09:09:54 60 1
原创 ciscn 2019 game
漏洞点出在移动功能上面未检查移动前后的坐标导致了越界赋值行为,所以这是一个任意字节写功能。使用这个任意写我们可以修改堆块的大小造成堆块重叠结合tcahe任意地址申请向free_hook写入setcontext+53。最后构造堆块完成利用。开启了沙箱 ,注意了原本这个函数调用了prctl函数进行反调试所以要将这个调用nop掉才能进行调试。有地图创建,人物创建,人物删除,打印人物信息,以及上下左右移动功能。阅读后可知这是一个小游戏。
2023-08-09 10:33:21 35 1
原创 2018 铁人三项信息安全竞赛 bookstore
总体思路为利用溢出造成overlap,free掉使得libc信息落入其他块中泄漏地址,最后和house of orange一样的手法打io不过2.23的fsop比较原始没什么看头。最近学习了house of cat以后萌生了想看看远古fsop的想法,最近又刚好打完了第四届铁人三项信息安全竞赛所以顺便拿了18年的题目来做,这波属实冷饭热炒了。add 限制了malloc的大小 但是没有限制大小不能为0 溢出点。readn函数 当size即a2=0时存在溢出。按照惯例先扔到ida分析。free函数没有uaf。
2023-05-11 08:56:20 57 1
原创 2021 allesctf jumpy
发现b8 和 eb 指令 其中b8指令接收后面四个字节作为立即数 eb指令接收一个字节作为立即数,正常通过moveax指令写入汇编会被当做立即数而被破坏,这个时候jmp指令就起作用了配合moveax 0xb8使得上一个b8指令将下一个b8指令作为立即数接收 如图。通过jmp与moveax配合第二个moveax的立即数就会被当成指令继续执行由于rax的值一直被改变所以采用rbx寄存器存储/bin/sh注意:一次shellcode写入必须为4个字节不足使用nop占位。getshell代码如下。
2023-04-03 20:26:02 111 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人