自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SICTF 2023 #Round2 PWN-Baby_Heap

简单题,覆盖topchunk形成fastbin attack,任意申请到chunk ptr这里,改got就行。

2023-09-11 18:06:01 400

原创 2023 ciscn 华东北分区赛 pwn minidb

当type为1和2时,可以255个字节内的oob write \x00。没去打比赛,做了一下,本地通了,不知道远程可不可以。伪造对应的chunk即可实现任意地址读写。

2023-07-10 19:49:12 431

原创 2023 ciscn 华东北分区赛 pwn cgi

模拟了一个http协议的交互。

2023-07-10 19:47:14 392

原创 2023 ciscn 华东北分区赛 pwn vuln

还有一个漏洞点如下,可以利用buf覆盖到seed。如下就可以实现python和c的联合编程。

2023-07-10 19:45:47 312

原创 justctf 2023 pwn nucleus

在decompress中如果是$24a,那么会自动补上24个a,并且后面可以继续增加想要的东西,此时这里存在堆溢出漏洞。堆溢出+uaf打hook为ogg即可。

2023-06-12 16:19:01 107

原创 justctf 2023 pwn Welcome in my house

然后这里user需要为root才可以得到flag,user默认是admin并存放在一个chunk里,但是可以利用house of force申请到存放user的chunk那里,改成root,最后2即可得到flag。堆溢出,可以申请任意大小的size,所以可以使用house of force。

2023-06-09 21:40:10 105

原创 DASCTF 2023六月挑战赛 二进制专项 Approoooooooaching

控制v3减少4,然后控制case6,输入数据,就可以改程序流程了,做得很莫名其妙。输入后门的低字节即可。

2023-06-05 20:25:38 294

原创 DASCTF 2023六月挑战赛 二进制专项 server

两个函数的rbp - 0x40这里是重复使用的,漏洞点出在system可以执行输入的,14DA过滤字符,但是可以复用空间,然后\n分割命令即可。

2023-06-05 19:14:08 266

原创 DASCTF 2023六月挑战赛 二进制专项 easynote

uaf,堆溢出,2.23。

2023-06-05 19:06:14 324

原创 ciscn 2023 初赛 pwn shell we go

这个时候就需要用到+号,可以看到上面有一个判断是判断是否为+,如果为+则i++继续,所以就可以避免把一些重要的地址给覆盖掉,最后可以控制ret,一套rop即可。根着流程,可以看到这里有一个验证,以空格来分割,第一个参数会验证是否为nAcDsMicN。,如果是的则进入另一个处理流程。经过调试之后发现是由于下面的unk_func0b04:这里的地址被覆盖成了垃圾数据。上面验证成功之后可以用echo,这里的echo重写了一下,跟进4c1720。这题go pwn,符号恢复就恢复很长时间了,网上的插件好多都没用。

2023-06-05 15:35:50 815

原创 ciscn 2023 初赛 pwn StrangeTalkBot

这里坑点是sint64和int64,导致如果用int64需要把index*2,用int64死活不能成功。uaf,然后可以edit,但是需要写一个proto,然后生成一下序列化python文件。生成之后导入到exp中,正常的2.31 orw利用。

2023-06-02 20:48:18 488

原创 pwnhub 三月 内部 three_edit

看到名字还以为只有三次edit呢,漏洞点在edit这里,index可以为负数,那么就可以edit修改tcache struct这里的地方。然后打出unsorted bin,继续继续利用edit的漏洞把unsortedbin放入tcache中。没有show函数,所以需要打出一个unsorted bin,然后再打低字节为stdout那里。这里打远程要多运行几次,因为stdout这里的地址是随机的,笔者试了两次就成功了。然后再用相同的手法打fd为hook,打hook为system即可。

2023-03-15 12:13:20 206 1

原创 pwnhub三月 ttsc

age这里是lodword(v8),然后v2那里是hidwod,直接泄露出age这里的地址,发现是_IO_file_jumps。进一步获取libc,拿到libc之后就直接利用上面的漏洞打堆重叠,然后打fd到hook,打hook为ogg就行了。这里最大的坑就是有延迟,需要sleep来等一下,不然发瞎发送。一开始以为没什么用,在随便输的时候发现-可以直接泄露出地址。但是次数都很少,打起来太麻烦了,开头给了三次输入功能。拿到邀请码发现内部赛打不了,只能等比赛结束做了。漏洞点很简单,可以直接覆盖size。

2023-03-14 13:05:16 291

原创 pwnhub sh_v1_1

rm 0,然后ln之后再rm 0再ln 过去的直接就可以改fd了,坑点就是远程libc是2.31的9版本,本地用的9.9打不通。这题笔者操作了一会莫名其妙的就发现可以改fd了。

2023-03-14 12:54:13 152

原创 RCTF-pwn-diary

可以发现在enc这个功能里会calloc,calloc并不会从tcache里取,会从unsortedbin中取出,并会将content + offest的内容复制到fd中,所以可以控制offset为4,length为8, 并提前将一个chunk的fd,edit出带有hook的地址,这样enc之后hook上的地址成功跑进tcache的fd中。hook上的地址成功到第一位,再申请的时候就申请的是hook上的地址,这里设置的hook地址是free_hook - 8,因为add的时候前面会有4个空格,

2022-12-31 22:48:06 363

原创 2022强网拟态pwn-only

所以攻击思路大致是这样的,任意地址申请到tcache管理这里,打出290的key为7,这样再释放之后290这里会进入unsortedbin中,打刚刚释放的这个地方到stdout那里去泄露出libc。这里需要爆破,泄露出libc之后继续利用unsortedbin的分割来打hook到tcache里,接着申请出来,打hook为magic_gadget。这里的magic_gadget就是2.31下的orw的magic_gadget。这里需要注意的是seccomp上的沙箱,所以堆上会有残留的bins。

2022-11-23 15:41:17 385

原创 2022强网拟态pwn-store

首先是这个沙箱,64位只有r和w,一开始看的时候很纳闷多了32位的限制,64位还没有o,查了一下才知道这样的seccomp-tools是以64位的检查来检查的,所以上面显示的32位系统调用就是64位的系统调用,所以看一下上面在32位显示的这些实际上是多少。所以思路比较清楚,利用house of apple2控制程序流程,mprotect控制rwx权限,布置shellcode,需要注意的是远程flag文件名需要getdents找一下,找完了之后利用orw即可。chmod对应是0x5a,对应32位是mmap。

2022-11-22 16:57:33 697

原创 2022强网拟态pwn-webheap_revenge

这里的n会就是src里面的长度,没有限制大小,所以memcpy到dest中的时候就会发生堆溢出。笔者用的2.31的libc,这题不能直接用one_gadget了,需要打成system。通过堆溢打fd为hook,打hook为system即可。这个和上个题差不多,uaf变成了堆溢出。

2022-11-21 13:36:31 197

原创 2022强网拟态pwn-webheap

index代表的是上图中的index,p8(0x82)代表后面要接一个p32的数据(这些都可以在上面的encoding_byte中找到是什么意思)p8(0xbd)代表的是字符串,接着后面会接content的长度和content,遵循上面的反序列化格式即可。上面给出10, “foo”,下面的compose的第一个就是0xb9,第二个是有几个参数,第三个是第一个参数的值,第四个是string类型,第五个是对应的foo的长度,第6个是foo这个字符串。所以笔者就配合前期逆向,顺着这上面的初步写了一个序列化实例。

2022-11-21 09:27:39 917 4

原创 2022强网拟态pwn-bfbf

这题笔者感觉就是绕过这个read的限制,之前遇见过类似的,可以用close(0)然后read读flag的时候rdi可以置为0,就可以绕过line 0005的限制了,赛后看其他师傅的wp还看到了用sendfile的方法。控制好这里的数字然后泄露出libc,再打返回地址到rop链即可。漏洞点的话就是index这个下标没有限制从而导致的oob。

2022-11-16 18:46:59 485

原创 祥云杯2022 pwn - queue

show出堆地址之后接下来就需要泄露出libc地址,因为可以delete,所以可以delete出main_arena,这样通过泄露出的堆地址算出main_arena那个堆地址,再利用上面的666改star_cur为main_arena那个堆地址就可以泄露出libc地址了。idx_value_idx_value受我们控制,所以可以任意地址写,打hook为one_gadget,这里的one_gadget需要。这是Ex师傅当时给的结构体,之后Ex师傅一会就解出来了,也就没我这个菜鸡什么事了。

2022-11-12 16:30:53 545

原创 祥云杯2022 pwn - protocol

笔者这里的rop就是read(0, xxxxx, 0x50),execve(“xxxx”, 0, 0)来getshell。在拷贝username和password的时候发生了栈溢出漏洞,因为username和password可控。直接放rop的话是不行的,因为\x00在strcpy中会被截断,所以倒着写rop。一开始没看出来是Protobuf,搜了一圈里面的东西才知道是Protobuf。首先需要得到ctf.proto这个东西然后按着下面的顺序就行。这个时候就可以得到一个ctf.proto的文件。

2022-11-09 21:49:53 1087

原创 祥云杯2022 pwn - leak

wjh师傅的思路是利用botcake的方法,将unsortedbin和tcache重叠,使得unsortedbin的fd落到tcache的fd,再修改最后两字节,进行libc上地址的申请,可以申请到global_max_fast和stdout,这里由于地址随机化肯定是需要爆破的。算好size之后,delete掉,此时目标地址就会指向堆地址,从而实现了向地址中写入堆地址,因为flag在堆地址里,所以就可以泄露出flag,exp就用的wjh师傅的。当时比赛没有做出来,光顾着泄露libc地址去了。

2022-11-08 20:29:47 408 6

原创 祥云杯2022 pwn - sandboxheap

上了sandbox,需要逆一下,在0x2710这里的功能就是允许mport和orw,所以在上面第一次exp的基础上还要再加上一个。下面的exp是笔者第一次直接打sandboxheap的,可以实现orw,然后第二个exp是打题目的,因为题目上了sandbox。这里笔者没有使用SigreturnFrame,直接看的setcontext + 53的汇编然后自己写了一下布局。其实就是一个2.27下的orw,直接拿板子套,直接参考的这位。在上一个heap基础上加了一个沙箱。的2.27下的orw。

2022-11-02 10:58:44 415

原创 祥云杯2022 pwn - bitheap

需要注意的是d60这个函数,经过调试之后可以得知传入的内容需要使用二进制来表示,所以就写了一个decode。2.27下的off-by-one,其实也可以看成off-by-null。接下来就是板子直接套 2.27的off-by-null。

2022-11-01 16:04:12 389

原创 祥云杯2022 pwn - unexploitable

也没有输出函数,所以思路很明确,利用局部覆盖覆盖ret成7d0这个函数,然后使用爆破的方法,将libc_start_main的低地址改掉,改成one_gadget。一个栈溢出就没有其它的了。

2022-11-01 13:48:53 389 4

原创 DASCTF X GFCTF 2022十月挑战赛 - pwn

所以思路很好想出来,首先可以利用rax来控制rsi进行read任意写,再利用rax控制rsi到read_got这里进行任意地址写,写成syscall。这个时候我们把rax设置成0x3b也就是execve,控制rdi为bin_sh,把rsi和rdx置为0,最后直接调用read就可以getshell了。发现了这一个gadget,而404018正好是bss的地址,可读可写,所以我们可以利用上面第一次的任意地址写将bss这里的地址写成bin_sh。这里的地方,并且最后还可以控制ret。

2022-10-28 13:54:03 838

原创 2021 祥云杯 pwn-JigSaw’sCage

rdx是堆地址,rax是read的系统调用号,所以可以构造一个shellcode使得rdi为0,rsi为heap地址,rdx为0x1000,这样就是read(0, heap_addr, 0x1000)。v1是int,但scanf是ld,所以溢出了4个字节,这就导致了可以控制v2的值,这样只需要将v1改成0,v2改成大于14的值即可调用mprotect分配rwx权限到heap地址上。这道题属实是没有发现漏洞点在哪里,所以看了一下wm的wjh师傅的wp,发现漏洞出现下图。

2022-10-17 09:32:43 251

原创 2021 祥云杯 pwn-PassWordBox_ProVersion

这里就没有off by null了,size也只能是large bin的,那肯定就是large bin attack了,libc还是2.31的,所以笔者就直接用的ubuntu20.04自带的2.31做的。值得插一嘴的是这个key,笔者上一个free题是因为没注意\x00也会被计算,所以就造成了^ key的值不准确,这题笔者发现了这个问题后,就往后移了一个8字节,保证了key的准确性。这个函数将flags标志位设置为了1配合delete函数即可实现uaf功能。详写了2.31的large bin攻击手法。

2022-10-16 15:29:34 222

原创 2021 祥云杯 pwn-PassWordBox_FreeVersion

overlapping之后泄露出libc,算出freehook,再利用overlapping,打fd到free hook,最后改free hook为ogg即可。漏洞点一个off by null,libc是2.27下的。但是需要注意的是内容会被加密,加密的key可以泄露出来。拿到key就是一套2.27的off by null。需要注意的是add的值不准,需要加个偏移校验一下。当内容为\x00时,show出来的就是key。打法就是2.27下的off by null。

2022-10-16 12:12:23 111

原创 2021 祥云杯 pwn-note

在第一个图那里下个断点,查看stack时发现%11$p这里有一个stdout,这个给了我们泄露libc的机会,我们可以打stdout的flag和write_ptr,具体的可以看别的师傅对stdout泄露libc分析的文章。偏移为7, 这里笔者用的ubuntu20.04的2.31libc做的,不需要利用realloc来调整可以直接利用,题目给的libc需要利用realloc来调整一下即可。拿到libc之后,算出ogg,ogg出来了,可以再利用scanf任意地址写打malloc为ogg。

2022-10-14 19:54:24 342

原创 New 160 crack之每几天一个小crack - 02

再经过调试可知会得到指定卷名称然后与4562-abex拼接,并且,会将卷的前4个字节循环两次,每次加1,从原来的Shared变成了Ujcted。找到了判断分支,最简单的方法就是把cmp eax, 0改成cmp eax, 1,或者把jz改成jnz,这样输入错误的注册码也会提示正确。最后会让输入的注册码与L2C-5781Ujcted Folders4562-ABEX进行比较,对则对,错则错。搜索一下所有模块的strings,找到上面的跟进,然后在下图这里下个断点。f9跑起来,然后输入注册码(随便输入)

2022-10-03 12:29:15 501

原创 Bugku S3 AWD排位赛-5 pwn

修漏洞这里笔者直接把execve(“/bin/sh”, 0LL, 0LL);改成execve(0, 0LL, 0LL);,但转念一想,gets这个漏洞大部分人都不会修,所以笔者就直接写了第二份exp,也就是ret2libc。结果不出所料,有些队只会修execv,但是不会修gets,所以成功打到全场。栈溢出,直接ret2text。

2022-09-24 21:38:59 916 2

原创 美团MTCTF 2022 smtp pwn解

会将mail from的信息存在入from中,如果send to的长度大于0xff,会将sendto的数据赋值给s,需要注意的是这个数据我们可控,没有进行大小限制,而s是有大小限制的,所以直接strcpy会造成栈溢出漏洞,成功发现漏洞。接下来就是如何把flag给带出来,因为直接cat的话是没有回显的,笔者原本想着用wget下载一个木马,然后连上去(哈哈),但是感觉太麻烦了,所以问了些师傅有什么东西可以将cat的东西直接输出到屏幕上,>&1,可以把文件的东西给带出来。

2022-09-20 16:15:23 1829 1

原创 美团MTCTF 2022 ret2libc_aarch64 pwn解

这里,这条指令的含义是sp存储的地址放入x29,sp + 8放入x30,最后sp += 0x20,X30为程序链接寄存器,保存子程序结束后需要执行的下一条指令,所以我们需要将sp + 8这里填入system_addr。之所以不找mov是因为mov x0在pwn文件里是没有的,利用还是挺难的, 都有跳转指令,因为前面泄露出了libc地址,可以试着在libc里面寻找gadgets。粉色的是gadgets的地址,红色的最后会给到x0,所以我们在这里填入bin_sh地址。,先看一下pwn文件的gadgets。

2022-09-18 20:34:23 737

原创 2022 网信柏鹭杯 pwn2 note2

因2.34之后取消了malloc,free hook这两个在堆pwn中用的最多的hook,roderick师傅分享的house of apple学习了一下,是一个非常好用的调用链,包括house of emma, house of kiwi, house of banana, house of pig, house of cat都是极好的调用链,前天的网信柏鹭杯里的pwn2是2.35的,笔者学完apple之后这里拿的2.34做的,只需要改偏移就可以打通2.35的。

2022-09-17 21:41:40 605 2

原创 Bugku S3 AWD排位赛-4 pwn

设计的还有点有缺陷的,web和pwn都用的一个环境,web可以直接拿到pwn的flag(cat /home/ctf/flag),导致了web手能直接拿双倍的分(web+pwn),分两个环境就可以解决问题了。修起来也简单,直接把下面的fgets的64改成16就可以了,再提一嘴,pwn patch好了之后覆盖了原来的pwn会出现pwn运行不起来的情况:(,就出现了web+pwn双宕机。吐槽一下,好几个战队什么都没干的突然飞到前10,一轮开始几秒之后一个队直接飞到8千多分,pwn打完一轮从第二轮就打不了了。

2022-09-10 21:16:24 833 4

原创 Bugku S3 AWD排位赛-2 pwn

可以通过s溢出改掉v5,满足条件即可。

2022-08-13 20:53:01 550

原创 Bugku S3 AWD排位赛-1 pwn

利用格式化漏洞改a64l为system,v4传入/bin/sh即可getshell。因为s只能32,所以偏移可以采用gdb调试出来。

2022-07-31 22:49:07 1062

原创 2021 强网杯 [强网先锋]orw

开了沙盒,利用orw来读flag没有对index做出限制,可以进行oob。并且当size为0时,可以无限溢出往heap_ptr的上面找一下,看一下哪个got表可以被轻松利用。发现了三个常用的got表,因为提供了free功能,所以就直接oob到free的got表,改free为orw即可。(2020E0 - 0x202018)/ 8 = 25exp如下...

2022-07-13 22:09:38 494

空空如也

空空如也

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

TA关注的人

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