- 博客(18)
- 收藏
- 关注
原创 关于glibc-all-in-one下载libc2.35以上报错问题
xclibc -x ./pwn ./libc-版本。下载2.35时报错:原因是缺少解压工具zstd。xclibc -c libc版本。下载后重新输命令就可以了。附加xclibc命令。
2024-06-18 20:04:58 298
原创 nssctf刷题总结
首先就是关于"\x00"截断问题,'\x00'被当做字符串的截止字符,这就很有趣了我们可以把\x00放在我们要发送数据的前面,经过\x00截断,后面的数据就不用读入了。嘿嘿,好像听起来没什么用,确实我们在一般情况下需要注意这个问题,不能有\x00截断。现在我们要想想如何利用它,用它过检测机制如strlen一类的。看看下面的各种逆天映射,博🐖在第一次看的时候也是头昏眼花,本着小白的可爱,想着完成他的映射,后来实在射不出来,回头看了遍程序突然发现不用射了,可以直接绕过,吆西,管他映射干嘛,我用的可是溢出啊。
2024-06-01 15:23:07 334 1
原创 ret2text(system($0))
在正常的编程或系统使用中,system($0)本身并不会直接导致获取任何权限。$0是一个特殊的 shell 变量,它代表当前脚本或程序的名字。在 C 语言中,如果你使用system()函数来执行一个 shell 命令,那么传递给system()的字符串会被当作 shell 命令来执行。如果你尝试执行system($0),你实际上是在尝试执行一个名为当前脚本或程序名字的 shell 命令。这通常没有特殊的权限提升效果,除非该名字恰好指向了一个具有特殊权限的脚本或程序。
2024-03-15 18:22:35 923 1
原创 格式化字符串漏洞及随机数问题
格式化:我们发送v4=2,通过判断,利用仅有的一次读入,随便泄露个地址,找出偏移(老六)调试找出libc偏移(49),接收libcbase,后改掉exit,将其改为echoConch函数再次执行,我们可以无限制读入次数qwq,想怎么嘟就真么嘟,这里我们直接闪击其要害,第二次直接把printf函数改为system函数,它一直打印真嘟很烦,再次读入b"/bin/sh\x00"不多说了吧。rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。
2024-03-12 21:33:06 1129 1
原创 uaf漏洞例题
这里我们要注意由于系统不会直接回收内存空间,并且free后并没有将指针置0,create函数创建的chunk是不能自定义的,但是我们只要free后再申请一次,它就会把之前的chunk给我们复用。总结:以现在博🐖接触到的uaf来说,困难的不是原理,利用思路,难点在于代码的审计,毕竟博🐖学爪洼。,申请堆size时代码构造有困难,总的来说就到这里了。代码审计:只能说五脏俱全 ,add,del,free全都有,典中点,宣~~~本文并不是详细讲解uaf漏洞及double free利用的,只是实操。
2024-03-12 19:53:22 569 1
原创 ret2csu
+p64(0x400606)+p64(0x8)+(p64(rbx)+p64(rbp)+p64(r12)+p64(r13)+p64(r14)+p64(r15))(这里是为了方便对应数)+p64(0)+p64(1)+p64(write_got)+p64(1)+p64(write_got)+p64(8)+p64(0x4005F0 )+p64(0x38)+p64(main)如果我们没有读行权限,那就要合计用mprtect改bss段权限了。
2024-03-02 16:49:45 879
原创 关于堆的基本概念和uaf漏洞
malloc函数的返回的是无类型指针,在使用时一定要强制转换为所需要的类型,在使用malloc开辟空间时,使用完成一定要释放空间,如果不释放会造内存泄漏。关于malloc所开辟空间类型:malloc只开辟空间,不进行类型检查,只是在使用的时候进行类型的强转。2.管理用户的内存数据,释放堆内内存数据,但释放的内存不会还给操作系统,而是交由堆分配器进行分配,保证用户再次申请时有足够的堆空间进行分配。:malloc时动态内存分配函数,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址。
2024-03-01 23:59:01 527 1
原创 栈上格式化字符串漏洞
c为单个字符形式%s为多个字符形式%d为数字形式%f是转为浮点型%x是转为十六进制形式,不带0x%p是转为十六进制,但是带0x%n 将%n之前打印出来的字符的个数存入到参数中先了解一下printf函数printf函数的格式化字符串常见的有 %d,%f,%c,%s,%x(输出16进制数,前面没有0x),%p(输出16进制数,前面带有0x)等等。但是有个不常见的格式化字符串,它的功能是将%n之前打印出来的字符个数,赋值给一个变量。
2024-02-28 02:30:00 1371 1
原创 canary保护,pie,保护全开类型
此时程序已经运行到第一个printf函数,对v5进行一次转化,判断v8与v7的值是否等于v5的后四位,如果相等令v5的高四位等于1,然哦后判断v5的高四位是否为空,不为空就进行下去。这里我们查看v5,readint函数作用是将读入的数值转化成整数类型,atol函数是将数值转化成log型。举个例子:0x335353,高四位是0003,x的前面有3个0,后四位是5353。这里我们接受返回的数据,并且删掉“=”,只留下两个随机数相加。明显是pie地址,这时我们可以计算出pie的基址,这让我们计算两个随机数的和。
2024-02-27 14:26:05 1038
原创 栈迁移利用
但是我们面对只能控制一次返回地址的情况无法提前在bss段上写入rop链,而且写入的buf在栈里,我们并不知道栈地址,这里我们需要点新的思维了。这样rbp指向0x404020后可以再次读入,这时就可以利用puts函数打印出read函数的got地址,进而求出libc基址,这里利用栈迁移迁到bss段,这样就可以构造/bin/sh了,上代码。0x404020,因为0x4011FF+0x50=0x404020,而且0x404020是bss段上的地址,在ret到0x4011ff。这里先补充一点汇编知识。
2024-02-26 20:15:01 640 1
原创 非栈上格式化漏洞和手动rop链构造
地址,最后就是劫持流程。但是对于BSS段或是堆上格式化字符串,无法直接将想要改写的地址指针放置在栈上,也就没办法实现任意地址写。下面以SUCTF中playfmt为例,介绍一下常用的非栈上格式化字符串漏洞的利用方法。一般来说,栈上的格式化字符串漏洞利用步骤是先泄露地址,包括ELF程序地址和libc地址;然后将需要改写的GOT表地址直接传到栈上,同时利用。的地址,可以得到分别是第个参数和第个参数,直接传入。的基地址,这些地址可以很轻松的在栈上找到,其中。首先需要得到当前栈的地址和。
2024-02-24 22:52:41 296
原创 srop和ret2dlresolve
关于ret2dlresolve,建议去ctfwink具体了解原理,这里就直接上题了。找到syscall函数剩下的不用多说上代码。可以看到这里存在明显的栈溢出。
2024-02-23 19:02:02 424 1
原创 汇编学习 (1)
将bx赋值给ax,即ax=bx,ax,bx都是寄存器的代称;寄存器都在cpu中。cpu无法直接调取磁盘中的数据,即调取顺序:磁盘——内存——cpu 需经过内存。由于计算机只能读懂机器码,而机器码对于程序员来说太过繁琐,因此出现了汇编语言,指令数据:89D8H H代表16进制,B代表2进制,linux系统区分大小写。程序员写出汇编语言经过编译器编译为机器码,才能被计算机读懂。GPU:内部存在若干储存单元,可将数据读入运算后映射到屏幕。读入是内存数据进入cpu,写入是将cpu内的数据写入内存。
2024-02-22 17:30:02 243 1
原创 栈溢出,ret2libc和自动化rop链
思路:利用ret2libc泄露libc基址求个函数真实地址,构造system(/bin/sh)把pwntools的爱搬到exp里,稍微润色一下。注意:生成的链子使用了p,我们再写就换个字母。到这里时无法继续调试存在栈平衡所以调整exp。FBI例行检查:nx一开,谁都不爱啊。在第二个payload后rdi+1即可。直接利用rop链进行构造,肥肠方便。拨珠只能说相当白给,可惜不是妹纸。记得把溢出内容补上,还有结束格式。Shift+f12没找到后门。Shift+f12找到后门。栈溢出到后门函数地址。
2024-01-28 19:05:04 843
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人