自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于堆的一些数据结构(个人笔记

unsort bin链表中的大小可以是不一样的,部分在chunk被free时,在进入small bin和large bin 前会先进入unsort bin,在下一次malloc检查bins时会分配给small bin和large bin。例如,一个0x20大小的free chunk紧邻着一个malloc_chunk,malloc(0x28),便可以将这个malloc_chunk的prev size作为free chunk的一部分分配出去。新进入的chunk插入尾端,分配出去的chunk从链表头部取。

2024-06-07 20:14:07 335

原创 第六周周报

通过off by one漏洞将自定义1的chunk跟0x10的chunk倒过来,并修改chunk的大小,使其可以覆盖0x10的chunk。我们再add一个0x100的chunk,堆管理器就会从top chunk中重新划出一个新的0x80的chunk来,这样add出来的0x100的chunk就可以堆溢出了。add函数先malloc一个0x8大小的chunk,将puts函数的地址和自定义chunk的地址存放在其中,再malloc自定义的chunk。申请两个chunk并释放,再申请一个0x8大小的chunk。

2024-06-02 21:49:39 606

原创 第五周周报

然后将fakechunk申请出来,在0x6020E0处写入freegot,此时chunk0的指针便修改为了freegot,我们editchunk0也就是在对freegot的内容进行修改,于是写入systemplt,此时调用free就是调用system。先创建三个堆块,为了方便使用off by one 漏洞,第一个chunk的大小设置位0x18,,随后通过off by one 漏洞将下一个chunk的大小改为0x81,然后free掉,再申请回来,这样就可以对其他堆块读写了。

2024-05-27 12:39:12 901

原创 第四周周报(NSS刷题记录)

使用fork()函数开启了子进程,所以我们可以使用爆破的方式泄露canary,爆破过程漫长,耐心等待,我不小心又开了一道题,然后这个靶机自动关了,又要重新来,哭死。show函数非常关键,它将prev size处的数据作为函数指针使用,将prev size+0x10处的数据作为参数,而prevsize处存放了puts函数。将exit的got改为vuln函数,然后泄露puts函数的got,获得libc_base,然后将puts改为system。用mmap函数开辟了一段可读可写可执行的地址,并read数据。

2024-05-19 21:34:44 929 1

原创 第三周周报(XYCTF,NSS)

思路是:先通过srop调用read函数,接下来用read函数读入用srop写的open和sendfile函数的调用,输出flag。所以我们的解题思路就是,先利用格式化字符串泄露canary,再通过栈溢出泄露libcbase,构造rop链获得shell。在卖东西时会创建一个新的线程,,我们可以快速卖出东西,在程序反应过来之前,我们就可以拥有大量的钱了。根据程序可知,我们需要用格式化字符串漏洞将key改为102,然后进入存在栈溢出的read函数。64位,题目给出的提示是shellcode,但保护全部打开了。

2024-05-05 19:20:16 972

原创 第二周周报(BUU)

但不能直接返回到shell函数,需要调用system函数再传参,由于给出的溢出空间很小,所以我们不能调用systemplt,但是已经给出了system函数的话,直接找到call system即可。可以看到,选择1后,会直接将我们的输入作为system的参数,所以直接传入cat flag即可,要注意使用||或&分割,不然会传入其他数据,导致命令无法执行。直接给出了shell,但是关闭了标准输出和标准错误,所以我们无法看到flag,可以使用exec 1>&0命令打开标准输出。

2024-04-28 17:16:21 828 1

原创 周报(校赛复盘与学长题目的复现)

给出了可以修改任意地址八字节的函数存在栈溢出可以将 ___stack_chk_fail改为ret,直接绕过canary,进行ret2libc。exppthread通过栈溢出修改canary的值来绕过canary。exp以上方法由于保护机制不同要在ubuntu18的环境下操作。pie栈溢出一个字节将返回地址改为backdoor的地址。exppie_two栈溢出修改ret最后一字节返回到put函数,打印出 funlockfile函数地址,获得libcbase。再构造ROP链获得shell。

2024-04-20 23:12:22 1016 2

原创 BUU第二页wp(除堆题)

可以看到,选择1后,会直接将我们的输入作为system的参数,所以直接传入cat flag即可,要注意使用||或&分割,不然会传入其他数据,导致命令无法执行。vuln函数中存在栈溢出,接下来就是ret2libc了。32位,开了canary,下载这个附件居然有病毒,离谱。gift中存在格式化字符串漏洞,可泄露canary。存在后门函数,直接栈溢出返回到后门函数即可。64位开启了NX保护和canary保护。存在栈溢出,典型的ret2libc。64位RELRO全开,开启了pie。直接写入shellcode即可。

2024-03-15 18:48:04 265 1

原创 BUU第一页wp

注意strlen()函数,使用\x00截断,接着使用ret2libc的方法解决。func函数中存在栈溢出且存在system函数,可直接获取flag。vuln函数中,会将输入的I转化为三字节的you可以实现栈溢出。checksec发现为64位文件,开启了NX保护。存在system函数,/bin/sh字符串与栈溢出。发现后门函数,直接栈溢出到后门函数获取shell。观察主函数,发现system("/bin/sh")checksec发现为64位文件,开启了NX保护。栈溢出到后门函数,直接将flag打印出来了。

2024-03-09 17:49:55 422 3

原创 PWN学习笔记 NSS

payload1=b'a'*(0x10)+p64(rdi)+p64(0)+p64(rsi)+p64(buf/*写入/bin/sh的地址,如bss段*/)+p64(rdx)+p64(8)+p64(elf.sym['read'])#调用read函数,将/bin/sh写入buf。syscall:ROPgadget --binary 文件名 | grep syscall。在gdb中 i r fs_base #得到fs_base 十六进制数据 十进制数据。关闭canary:-fno-stack-protector。

2024-02-19 11:03:47 243

原创 pwn学习笔记 BUU

本来配完20和22以后以为自己已经会配基本的环境了,结果18又让我看到了很多新的问题。搜出来的文章大部分都没用,找到有用的文章也忘记保存了,以后如果有缘要重新配环境应该会吃很多亏。之前一直没有做笔记,现在开始正式进入寒假学习。这Ubuntu18的问题比20和22多好多,不停的报错,报错方式不停地变,已经麻了。刚回家,一堆事要搞,没学什么,主要还是配环境。

2024-01-11 16:47:39 527 2

空空如也

空空如也

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

TA关注的人

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