pwn题目
文章平均质量分 71
HNHuangJingYu
看看我能发几篇文章
展开
-
2021 ciscn-pwn 初赛
2021全国大学生信息安全竞赛-pwny_init分析mainreadwrite这个程序其实就是两个核心函数,和名字一样,因为操作的fd指针是个随机参数文件,我们通过修改fd指针为0,也就是控制台就可以实现任意读写了,那么程序就简单了很简单我们看这个这里组的偏移是由我们决定的且没有大小限制(是int64类型的变量)。ok看看bss段qword_202060和随机函数的fd指针只相差0x100偏移,那么就可以间接的控制fd为0了,具体利用如下:这里就可以将fd置为0,我也是gdb调试调试着就发现的,仔细原创 2022-06-05 02:29:36 · 552 阅读 · 0 评论 -
2022春秋杯:chunzhiIot
题目2022年春秋杯:chunzhiIot一道vmpwn题,和今年(2022年)的国赛一道题类似保护$ checksec pwn[*] '/home/hnhuangjingyu/chunqiubei/chunzhiIot/pwn' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled$原创 2022-05-30 17:44:27 · 440 阅读 · 0 评论 -
沙盒禁用+tcache
题目2021全国大学生信息安全竞赛-ciscn_2021_silverwolf保护$ checksec silverwolf[*] '/home/hnhuangjingyu/sliverwolf_my/silverwolf' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled FO原创 2022-05-25 02:00:38 · 892 阅读 · 0 评论 -
沙盒禁用+堆栈结合+反调试-ciscn_final_4
这题比较好玩题目采用了沙盒禁用+堆栈结合+反调试保护分析main函数watch函数结合我的注释看,这题是有反调试的,所以就我们在本地打的时候可以将这文件的反调试部分就nop掉,之前会一点点逆向的题,所以也没耗多少时间,具体nop手法看我的另一篇文章[链接]:121312nop后的main函数:new函数mwrite函数delete函数总结:add函数可以malloc 32次有打印堆数据函数delete函数有uaf漏洞运行程序后说不能执行系统调用(嗯~)之前没遇到过原创 2022-03-24 17:41:08 · 441 阅读 · 0 评论 -
IO_FILE(npuctf_2020_bad_guy)
是一道入门IO_FILE的题目保护:分析:Add:Edit:dele思路没有常见的off-by-null,和uaf,但是edit函数可以编辑任意大小的size,且最多malloc10次,edit4次那么就可以利用堆重叠进行攻击因为这题需要爆破,所以为了在本地便于调试所以关闭系统的地址随机化(不是永久的)1.将chunk2放入到0x70fastbin,便于后面的修改fd指针指向__IO_2_1_stdout的上方处 malloc(0,0x10) malloc(1原创 2022-03-24 18:21:00 · 413 阅读 · 0 评论 -
off-by-null-b00ks
题目: asisctf2016_b00ks保护除了canary全开,因为是堆题,所以基本可以认为保护措施全开分析主函数程序封装的read函数add函数由add函数可得出以下结构示意图:dele函数edit函数show函数init_name函数重命名的bss段[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3pp7b6E3-1642340360854)(off-by-null.assets/image-2022011620005682原创 2022-01-16 21:43:10 · 367 阅读 · 0 评论 -
off-null-byte-plaiddb
题目: plaidctf2015_plaiddb ->datastore分析[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UTd2LGgx-1642508657858)(posion-null-byte(plaidctf2015_plaiddb)].assets/image-20220118010052651.png)这题不用纠结这个二叉树算法,解题思路和算法方面关系不大put函数:(用于添加键值对)[外原创 2022-01-18 20:27:27 · 451 阅读 · 0 评论 -
house-of-einherjar-tinypad
题目 : secconctf2016_tinypad保护分析add部分:edit部分:dele部分:自带的show部分:其中堆块信息保存在tinypad[0x100]处理解图如下:思路上面ida分析的注释中对应解释了程序漏洞所在,那么首先进行libc泄露,首先malloc 4个chunk其中chunkA :必须为unsort bin且size必须是8(十六进制)结尾,因为如果malloc 0xe8 ----真实大小—> 0xf0这时可以写入的数据为0xe8 通过原创 2022-01-19 19:21:15 · 424 阅读 · 0 评论 -
off-by-one-bookstore
题目 : hacklu2015_bookstore保护分析题目嵌入函数层级不多该程序和平时的堆体不太一样,漏洞很明显,没有提交malloc的选项,但是选项5有个malloc(0x140)那么因为存在堆溢出漏洞,所以通过溢出ptr1到ptr2的头部进行修改为0x150再释放ptr2进行提交时因为uaf的原因即可重新分配到ptr2+dest的堆块内容信息#------------start----------------dele(2)payload = b'A'*0x88edit(1,p原创 2022-01-23 19:20:24 · 2514 阅读 · 0 评论 -
house-of-force-bctf2016_bcloud
题目:bctf2016_bcloud不得不说这题细节做的真好,如果不认真看还真找不到利用点保护分析main函数:add函数:因为在malloc是加上了4所以通过这里off-by-null行不通dele、edit函数没有常见漏洞重要函数0x80487A1函数:0x804868D函数:注意看我注释上面的序号当我输入长度为0x40时,经过read函数会在后面填充一个null字节,但是因为原本这块栈空间本来就经过了初始化全是null,所以并不会对数据造成影响,到了第二步malloc原创 2022-01-28 01:27:16 · 1048 阅读 · 0 评论 -
house-of-spirit-pwn200
前言 : 因为期末考试加上复习的原因,接近一个月没有做pwn题了,放寒假就回来在物理机上面装了个ubuntu(折腾了几天,不过装好了做题环境还是挺好用的),打算这个寒假学习完堆知识.来年好好上课(大三压力大!)有空打打比赛.例题 : lctf2016_pwn200house-of-spirit利用条件:(1)想要控制的目标区域的上方空间与下方空间都是可控的内存区域(2)存在可将堆变量指针覆盖指向为上方可控空间,从而达到将非可控空间与可控空间进行合并变成fake_chunk(有点像unlink)(原创 2022-01-11 15:45:11 · 2561 阅读 · 0 评论 -
off-by-one-0ctf2018_babyheap
题目 : 0ctf2018_babyheap保护分析add:edit:deleshow因此程序保护较完善,且只能malloc最大值为0x58,参加的uaf漏洞也关闭了,那么这题还是有个off-by-one漏洞但足以致命,解题思路:—> 泄露libc —> 修改main_arena中的topchunk指针为__malloc_hook处 —> 申请一个chunk则是_malloc_hook写入one_gadget —> getshell利用堆重叠进行libc泄原创 2022-01-24 17:24:09 · 372 阅读 · 0 评论 -
uaf-逻辑题-BUUCTF hacknote
首先拿到题目是个菜单题,在ida中进行手动识别重命名函数如图:首先按照程序流程配合程序一起分析add函数如图:通过上面分析可知,ptr_array是一个全局数组长度为5,然后进入if判断这个“*(&ptr_array + i)”也就是ptr_array[i]那么这就对每个数组里面的内容进行判空,那就是说这个数组里面的数据是否被add过。然后就是给数组里面每个分配了一个大小为8byte的chunk实际分配是0x10,然后这句“**(&ptr_array + i) = m_puts”实原创 2021-11-28 14:10:45 · 330 阅读 · 0 评论 -
堆UAF-攻防世界time_formatter
终于来到了传说中的堆,这是攻防世界里面的堆第一次,刚遇到的时候有点懵逼,看了wp也看不懂,后来才知道是堆题。。。嗯,我回来了,哈哈哈哈,首先详细了分析了一波题目,先把重要的函数例举出来纵观全局在我菜鸟看来就只有个system(“asdadasd;/bin/sh;as21sad12e”);这个漏洞,因为system的参数由我们控制,所以就有无限可能,这里有两个全局变量,第一个被格式化为整型了,另一个是字符串类型,那么就是构造";/bin/sh;"的最好容器,嗯,如图:可以看到ida列出来对ptr原创 2021-11-23 18:35:11 · 3398 阅读 · 0 评论 -
unsort bin attack -攻防世界 noleak
带着问题的学习是有效的例题:攻防世界noleak ,这题解法好像有多种但是我是刚接触堆也是抱着学习的姿势学习攻击思路,这里就先例举我看明白的2种方式(爆破(在爆破__malloc_hook文章里面)、unsort bin攻击)在ida分析后得到以下结果:总结:1.用于保存chunk指针的bss数组最多存储10个2.free时有double free、uaf漏洞3.可以编辑free chunk数据,有堆溢出漏洞4.因为程序简单但是因为开了got不可写的措施导致题目有了很多玩法没有开N原创 2021-12-09 14:16:28 · 710 阅读 · 0 评论 -
爆破malloc_hook -攻防世界 noleak
例题:攻防世界noleak首先在不用unsort bin的情况下进行攻击,那么我们怎么拿到__malloc_hook的地址呢?攻击思路:将shellcode放入程序的bss段(0x601020)通过__malloc_hook执行bss中的shellcode,为什么需要爆破呢, 因为我们实际上是获取不到 maloc_hook的地址的只是将它写入到了一个地址处,然后通过fast bin attact 攻击,因为fast bin的fake chunk需要检查size位,既然创造size位,那么libc-2-2原创 2021-12-09 14:11:37 · 540 阅读 · 0 评论 -
东软杯-pwn-justdoit
第一届东软杯pwn-justdoitida分析通过伪函数分析发生没有什么漏洞,也没看到malloc、free、new关键字,那么一定是栈题、函数中也没发现缓冲区溢出,那么就找程序中一些奇奇怪怪的代码配合汇编一起看。最后在main汇编代码里面发现了这个加上测试程序时报了段错误那么程序漏洞利用点必是这里无疑,既然rbp的值可以控制,因为rbp与程序执行流密切相关,那么我输入一个地址将rbp置于它的上方即可达到劫持执行流。因为程序没有后门,嗯,保护措施如下:思路:可用got表劫持,libc泄漏原创 2021-12-10 20:22:20 · 640 阅读 · 0 评论 -
uaf-逻辑题-攻防世界 supermarket
刚开始我也被这题绕晕了,做这种题要画图画图!!!不然很容易做着做着忘了自己做到哪里来了本题环境是ubuntu16、glib2.23!!!我第一次做的时候用的ubuntu18也就是glib2.27这时有tcache freechunk的分配策略不一样死活跑不出来,这题我还要研究一下tcache版本的。首先申请了一个不在fastbin范围(0x10~0x58)的chunk0,然后再申请一个随便大小的chunk1,解释:因为下面我将要用remalloc重新分配chun0,remalloc如果重新分配的ch原创 2021-11-30 13:12:55 · 378 阅读 · 1 评论 -
tcache-off-by-null-LCTF2018_easy_heap
保护分析main:malloc:free:puts:这题的保护措施做的很好,常见的free函数也没问题,但是这题有个off-by-null的漏洞,因为这题的限制条件较多所以考虑用堆重叠(overlapping heap chunk),然后就可以进行对重叠的chunk进行double free写入one_gadget到free_hook进行getshell因为这题写入content时限制了\x00字符,那么在写入字节流时就会断掉写入首先构造unsortbin进行合并的prev_siz原创 2022-02-09 23:46:45 · 560 阅读 · 0 评论 -
unlink 攻防世界4-ReeHY-main
例题:攻防世界 4-ReeHY-main当一个chunk释放为unsort bin时会检查上下是否为free chunk,如果上为free chunk则发生合并、合并后会调用unlink函数:(2.23)/* consolidate backward */ if (!prev_inuse(p)) { //当前的p标志位为0(上个chunk free) prevsize = p->prev_size; size += prevsize; //本chunk的size原创 2021-12-10 12:39:10 · 584 阅读 · 0 评论 -
unlink(freenote_x64)
保护分析init_large_chunkshowneweditdelemalloc有限制,大小只能为0x80的整数倍如0x80、0x100、0x180edit有个realloc函数且带有uaf漏洞dele函数也有uaf漏洞,当时没注意到!!!因为dele函数有uaf所以realloc的uaf漏洞本exp没用到。。。。。。思路因为有uaf就可以很方便的泄漏heap地址和libc地址add(0x80,'0') #0add(0x80,'1') #0add(0x80,'2原创 2022-03-26 23:05:56 · 614 阅读 · 0 评论 -
fast_attack+unlink(wdb_2018_1st_babyheap)
题目:wdb_2018_1st_babyheap保护分析alloc函数:free函数:edit函数:这题我干掉了睡眠函数,idapython脚本如下:addres_start = 0x400CE3addres_end = 0x400CEDfor i in range(addres_start,addres_end): ida_bytes.patch_byte(i,0x90)这题的的漏洞还是挺多的uaf、off-by-null、double free但是off-by-nu原创 2022-03-01 16:46:01 · 312 阅读 · 1 评论 -
unlink-sleepyholder
unlink(sleepyholder)题目: hitconctf2016_sleepy_holder(就是进阶版的hitconctf2016_secret_holder)函数分析:addupdatedele总结 : 程序很简单,可以malloc三种类型的chunk,fast chunk \ large chunk \ large chunk(mmap()分配),明显的漏洞有uaf漏洞\double free漏洞,值的注意的是huge_chunk在被创建后就不能修改和删除了往往简单的一原创 2022-01-14 01:59:58 · 245 阅读 · 0 评论 -
unlink-secretholder
题目 : hitconctf2016-secretholder保护:add函数:dele函数:update函数:总体下来可以发现程序很简单,漏洞有uaf 和 double free,堆块类型是否可以malloc \ 修改由bss段中的xx_is_use决定,无pie,可通过修改got表或者将one_gadget写入__malloc_hook__free_hook中getshell,那么这里的限制条件就是只能malloc三种类型的chunk,分别是一个fast chunk和2个large原创 2022-01-13 15:28:46 · 227 阅读 · 0 评论 -
heap_overflow(OGeek2019-bookmanger50)
题目:OGeek2019-bookmanger50保护分析add_chapteradd_sectionadd_textrm_chapterrm_sectionrm_textshowedit思路这题的漏洞非常多有uaf,off-by-one,堆溢出因为漏洞太多以至于给我整不会了,ida逆向时看起来挺复杂其实就是一个常规的简单堆题,我在做unsort bin泄漏libc时把堆空间整坏了,做题时我没注意到泄漏方式的问题导致我后面做的怀疑人生,导致花了非常多时间,其实这原创 2022-03-25 17:13:07 · 429 阅读 · 0 评论 -
pwn-这里等学完堆再来记详细笔记
这题就简单的记录下吧。也不是很难,就是几个点,反之现在每做个题都能get到新知识嗯题目我简单的分析了下大概就是5个选项,我记得每次这种题就是靠你逻辑,每个选项都是有用的,代码量少的题目不会有无用代码每个选项就如puts函数提示所说有着对应的功能,这里说下每个函数注意的点Select1 : 对ptr进行了赋值为time_format,并占用了buf内存Select2 : 对dword进行了赋值为timeSelect3 :对value赋值为time_zone,但是之前在select1中也是调原创 2021-11-19 20:00:05 · 221 阅读 · 0 评论 -
记录一次64位构造读取flagROP链、远程关闭控制写入
原程序攻防世界Recho(这题本地测不出来,只能远程)根据大佬wp的情况下完成的整个程序是个死循环需要用到pwntools的p.shutdown(‘write’) #关闭控制台写入循环,然后这题没有后门函数,因为关闭了shutdown(‘write’)控制台输入后(远程)就输入不了了,只能等程序重新运行,因为程序压根就执行不到return指令,经过shutdown后也就是说return指令只会被执行一次,所以就只能一次性获取sh、或者cat flag这题通过ROPgadget的强大之处,因为程序里面原创 2021-11-16 21:38:19 · 466 阅读 · 0 评论 -
《攻防世界》forgot栈空间题
哈哈哈,讲下这题的思路,拿到题目又是一大堆的字符串显示在控制台上,本想着又是一道逻辑题,披着逆向算法的外套,害,没办法继续分析前面输入name用了fgets函数但是限制输入长度了,所以直接忽略,然后就是输入一个数对其进行简单的小算法了,我显示分析了一波算法,然后根据出题人的提示说这个,但是我好像还是摸不清题目的漏洞在哪里,就一直摸摸摸,先是简单的看了下全局伪代码,加上程序运行状况,发现你输入的数就算是通过了9层判断条件好像也是一样的打印一些字符串这十个函数里面都是一样的没什么区别然后出题人那个提示原创 2021-11-16 15:40:43 · 2975 阅读 · 0 评论 -
《攻防世界》stack2逻辑漏洞题
到了进阶题目越来越好玩了,发现解出来一道题有解数学那味了嗯,拿到题目一看逻辑题,做题刚打完比赛(第一次)被逆向和pwn的逻辑题给整怕了,这次遇到这种题目,我选择硬刚!首先读懂题目的内在逻辑,并关注常见的pwn漏洞,首先一步步分析这里有个循环100次接收输入,全局的看了下都是在对buf操作,先标志一手,但是这里无法产生溢出,那么看下面首先看到for里面初始化j = v5 ,那么这个j也就是我们可控的标记一下,然后就是死循环,每次循环后调用一次printfselect1就是显示所有值、select原创 2021-11-16 10:29:51 · 3676 阅读 · 0 评论