- 博客(46)
- 收藏
- 关注
原创 ctfshow 框架复现
又出现 debug 页面了。而且还得换 RCE9。Laravel RCE3 用不了了,我们用 4。生成后发现不行,反序列化结果会被调试页面覆盖。我们已经知道原理了,直接工具打吧。生成链子,这里我们用 RCE3。然后访问 1.txt 就行了。查看各种应用各种版本的链子。写一个脚本遍历所有 rce。快一点吧直接工具梭哈了。但是没有回显,写🐎进去。然后访问 1.txt。
2024-05-05 20:15:20
615
原创 Laravel5.4 反序列化
复现的第一条 php 的链子,真的比 java 友好太多了 555。另外不止这一条链子,这位师傅给了4条Laravel5.4 反序列化漏洞挖掘 - 先知社区 (aliyun.com)
2024-04-30 22:21:30
1196
5
原创 JavaSec 基础之 URLDNS 链
然后设置 hashCode 为 1234,这样put时 hashcode 不是默认的 -1 就不会走后面的逻辑而是直接返回 1234,所以 put 之后不会产生 dns 解析,然后我们设置 hashCode 为 -1,接着序列化 U,所以反序列化进入 hashCode 时 hashCode 为 -1,产生 dns 解析。也会触发 URL 的 hashcode 方法,第一次因为 hashcode 默认 -1 ,所以可以触发下面的方法,但是返回值赋给了 u 这个对象的 hashcode 再序列化 u。
2024-03-08 23:33:02
1042
原创 JavaSec 基础之反序列化
Java 序列化是指把 Java 对象转换为字节序列的过程;Java 反序列化是指把字节序列恢复为 Java 对象的过程;
2024-03-08 14:51:19
428
1
原创 JavaSec 基础之五大不安全组件
Fastjson 是阿里巴巴的开源 JSON 解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。攻击者可以通过在 json 字符串中指定变量的具体类型 (子类或接口实现类),来实现实例化指定的类,借助某些特殊的 class,如 TemplatesImpl,可以实现任意代码执行。该内容传递到后端被log4j2打印出来,就会触发恶意的Class的加载执行(可执行任意后台指令),从而达到攻击的目的。
2024-03-03 20:14:48
1136
原创 JavaSec 基础之 JNDI 注入
JNDI(Java Naming and Directory Interface)是一个应用程序设计的 API,一种标准的 Java 命名系统接口。JNDI 提供统一的客户端 API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将 JNDI API 映射为特定的命名服务和目录系统,使得 Java 应用程序可以和这些命名服务和目录服务之间进行交互。通俗一点讲:JNDI对访问rmi或者ldap服务的代码进行了封装,我们使用JNDI就可以访问这些服务,不需要自己再去关注访问服务的细节。
2024-03-02 21:19:47
829
原创 JavaSec 基础之反射
的第一个参数是对象实例,即在哪个实例上调用该方法,后面的可变参数要与方法参数一致,否则将报错。的所有信息,包括类名、包名、父类、实现的接口、所有方法、字段等,因此,如果获取了某个。如果获取到的Method表示一个静态方法,调用静态方法时,由于无需指定实例对象,所以。所以,反射是为了解决在运行期,对某个实例一无所知的情况下,如何调用其方法。通过Field实例既然可以获取到指定实例的字段值,自然也可以设置字段的值。实例只是第一步,我们还可以拿到一个实例对应的该字段的值。类型的实例,并关联起来。
2024-02-28 15:38:35
277
原创 JavaSec 基础之 Maven
Maven是一个跨平台的项目管理工具。作为Apache组织的一个颇为成功的开源项目,其主要服务于基于Java平台的项目创建,依赖管理和项目信息管理。maven是Apache的顶级项目,解释为“专家,内行”,它是一个项目管理的工具,maven自身是纯java开发的,可以使用maven对java项目进行构建、依赖管理。基于 POM(项目对象模型) 的概念。
2024-02-27 15:18:01
1008
原创 JavaSec 基础之 XXE
白盒测试就看关键类 XMLReader,SAXBuilder,SAXReader。。。黑盒测试就抓包看看有没有传 xml 数据的,有传的直接改了外部实体引用试试。其实 php和 java 的 xxe 没什么区别。
2024-02-23 22:32:04
638
原创 JavaSec 基础之 SQL 注入
in之后多个username查询时使用 # 同样会报错(因为预编译机制,系统将我们输入的字符当作了一个字符串,因此查询结果为空,不能满足业务功能需求),因此很多研发会采用${}来解决,从而造成SQL注入。编写xml文件时,Mybatis支持两种参数符号,一种是#,另一种是$。由于使用 #{} 会将对象转成字符串(因为预编译机制,系统将我们输入的字符当作了一个字符串)根据字符串排序是不生效的。Mybatis的SQL语句可以基于注解的方式写在类方法上面,更多的是以xml的方式写到xml文件。
2024-02-22 22:43:13
869
原创 格式化字符串的简单学习
通俗来说,格式化字符串函数就是将计算机内存中表示的数据转化为我们人类可读的字符串格式。这样就能泄露栈上第 25 个字节处的值 也就是这道题的 canary。这个地方有异或操作,而且之后就跳转回 main 函数,所以 [rbp-0x8] 应该就是栈中存放 canary 的地址。对于 2,3 来说倒还无妨,但是对于对于 1 来说,如果提供了一个不可访问地址,比如 0,那么程序就会因此而崩溃。在进入 printf 函数的之前 (即还没有调用 printf),栈上的布局由高地址到低地址依次如下。
2024-02-13 12:08:58
1919
原创 CTFshow-pwn入门-栈溢出 (慢慢更
当应用程序试图对无权访问的内存地址进行读写操作时,会调用 sigsegv_handler 函数,sigsegv_handler 函数 会把stderr打印输出,即将flag的值打印输出那么我们直接输入超长数据就会溢出,程序就会崩溃进而打印出flag。char dest;该函数无法限制输入的长度,可能会超出s数组的容量,导致覆盖栈上的其他数据或执行任意代码。这也是明显的栈溢出漏洞,且提供后门函数 get_flag()堆栈不可执行,不过有后门函数,跟进 ctfshow 函数,read 可以读取 50 个字节。
2024-01-31 15:09:10
3144
5
原创 ret2csu 从 0 到 0.1
在 64 位程序中,函数的前 6 个参数是通过寄存器传递的,但是大多数时候,我们很难找到每一个寄存器对应的 gadgets,比如说我们想构造 64 位程序 write 函数的三个参数,那就需要操作 rdi,rsi,rdx ,三个寄存器,如果找不全关于这三个寄存器的 gadget 呢,比如下面用的上的就只有 pop rdi;可以看到 gadget1 对 rdx,rsi,edi 赋值 r14,r13,r12,这不刚好就是我们想要的参数吗,而且 gadget2 又可以操控 r14,r13,r12 的值。
2024-01-27 18:57:02
416
原创 脱壳简单了解
为了防止程序被非法修改或反编译,开发人员通常会在二程序中加入一段如同保护层的代码,使得原程序代码失去了原本的面目,这段如同保护层的代码和自然界的壳在功能上十分相近,因此把这样的程序称之为“壳”。壳一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。
2024-01-25 16:59:01
2213
原创 ret2shellcode 学习
shellcode 之前提了,ret2shellcode是指攻击者需要自己将调用shell的机器码(也称shellcode)注入至内存中,随后利用栈溢出复写return_address,进而使程序跳转至shellcode所在内存。若某个程序的bss段可写且可执行,攻击者就可以尝试将shellcode注入写入全局变量或静态变量中。若某个程序的heap段可写且可执行,攻击者就可以尝试将shellcode注入至动态分配的变量中。在虚拟内存中,data段主要保存的是已经初始化了的全局变量或静态变量。
2024-01-24 17:14:26
779
原创 ret2syscall 入门
系统调用是操作习系统提供给应用程序的一种接口,允许应用程序请求操作系统执行特权指令,如文件操作,网络通信,进程管理等。x86 通过 int 0x80 指令进行系统调用,amd64 通过 syscall 指令进行系统调用比如 write 函数32位汇编代码系统调用号,触发 nr_writemov ebx,1mov edx,13int 0x80;中断触发系统调用‘’
2024-01-24 12:06:14
588
原创 初探 ret2libc
可执行二进制程序调用函数A时,会先找到函数A对应的PLT表,PLT表中第一行指令则是找到函数A对应的GOT表。此时由于是程序第一次调用A,GOT表还未更新,会先去公共PLT进行一番操作查找函数A的位置,找到A的位置后再更新A的GOT表,并调用函数A。简单来说就是程序第一次调用某个函数 got 表里放的还不是 这个函数的真实地址,但是第二次调用 got 表放的是 这个函数的真实地址了。我们可以发现 puts 函数运行过了,所以就用 puts 了,分别拿 puts 的 plt 表和 got 表的对应地址。
2024-01-23 17:16:18
1067
原创 浅谈 ret2text
而此时栈顶指针指向 ‘/bin/sh’ 的地址,于是 ‘/bin/sh’ 被放入 rdi 中,然后执行 ret,此时后门函数地址顶上来了,于是就 ret 到了 func 的地址 (这就是为什么找的是pop rdi;我瞎猜的,不然不好解释)而拿去参数也是同过 EBP 偏移量来实现的,本来有返回地址时通过 [EBP+8] 来拿参数一,但是因为没有返回地址 此时 EBP 和 参数相邻相差 4 个字节,所以 EBP + 8 就不是参数一的地址了。前六个参数依次存放于rdi,rsi,rdx,rcx,r8,r9中。
2024-01-21 15:57:14
1497
原创 gdb 简单使用
可以发现确实写进去了 有三个 616161,那如果我们写多点岂不是就能使之溢出覆盖 0x0x7fffffffe030 处的值了?然后继续执行果然进入了函数里拿到 shell 了,本地验证了一下只要让 al = 0x61 就是能拿到 shell 的。eax = byte ptr [rbp -0x10] ,所以我们看一下 rbp -0x10 地址处有些什么内容。如果 al = 0x61 就会跳过 jne 执行后面的代码。我们先执行到这一步,然后查看 rbp -0x10 地址处前 20个字节的数据。
2024-01-18 15:16:06
349
原创 CTFshow-pwn入门-前置基础
esi 存储的是 msg 的地址,然后寄存器间接寻址把 msg 地址的内容拿出来给 eax 了。我们直接用 ida 看看 080490E8 地址上的值就行了。:运行此文件,将得到的字符串以ctfshow{xxxxx}提交。计算一下 eax 寄存器的值就行了(好臭的 flag,悲。所以我们把下载好的 elf 文件拿去执行即可。:寄存器间接寻址方式结束后eax寄存器的值为?: 立即寻址方式结束后eax寄存器的值为?:寄存器寻址方式结束后edx寄存器的值为?:直接寻址方式结束后ecx寄存器的值为?
2024-01-15 16:46:21
756
原创 CTFshow-pwn入门-Test_your_nc
ida64 看一下,原来直接就把执行 shell 权限给我们了(喜。nc 连接 输入 “CTFshowPWN”,拿到 shell。直接 nc 连一下程序,直接可以执行 shell 了(雾。ssh 连接后等一段时间拿到 shell。新版看不了架构(悲 用 file 命令。直接运行程序,选择 6 答案就出来了。所以我们的目的是让 s1 = s2。还是把文件下下来分析一下吧。nc 连上就给 flag。checksec 一下。
2024-01-14 16:15:09
666
原创 杂项入门-图片篇(颜色通道)
一个 279 次,一个 282 次。stegsolve 打开,在 rgb 三个层次上有发现 flag 碎片。和上一题差不多,这一次是选最少的 10 种像素。在 R0 G0 B0 通道都发现隐写痕迹。然后重新扯一块黑布,把这两种像素点描白。统计每个像素点出现的次数,排好序。勾选 R0,G0,B0。
2023-12-22 17:56:48
138
原创 杂项入门-图片篇(文件结构)
文件尾:675053 (最后的 00 00 不算,是 windows 补充的,算到 FF 结尾即可)直接 010 打开,修改 0010h 行 6 列的 96 为 FF 然后再打开图片即可。本着宽度不变,高度应该 = 225000 / 900 = 250 px。所以原有的像素值 = 675000 / 3 = 225000 px。我们右键图片查看属性:像素点 = 900*150 < 225000。因为一个像素点由 RGB 三个通道组成,一个通道一个字节。所以这道题应该是要修改图片的高度。一样的把图片拉高即可。
2023-12-13 01:36:25
958
1
原创 记一次 docker 复现 web 题
但是我试了不知道为啥没用(有成功的师傅可以告诉我一声),最后重新在 linux 下 git clone 才解决了。想要删除untagged images,也就是那些id为 None 的image的话可以用。如果想主机访问的话,ifconfig 看一下虚拟机网卡的 ip,然后端口一样访问就行。可以用notepad++转换成unix格式,在拷贝到linux环境。如果在linux环境下,我们可以用vi命令打开文件,再按组合建。删除images(镜像),通过image的id来指定删除谁。为字母L右边的按键)
2023-12-08 10:35:30
134
原创 [安洵杯 2019]easy_serialize_php
可以看到我们最终目的是构造 $userinfo[‘img’] = d0g3_f1ag.php 的 base64 值。可以看到 user 字段的 php 被过滤了,虽然长度为 3,但是已经空掉了,所以 php 解析器会往后读 ";因为字符串是再变少,所以我们要构造的字符串要过滤后 php 解析器会把后面的字符串包含进来。但是这样的话我们最终只能拿到 guest_img.png 的值了,这肯定不是我们想要的。因为 extract($_POST) 在 $_SESSION[‘img’] 赋值的上面。
2023-12-07 01:17:47
72
1
原创 [强网杯 2019]高明的黑客
下载题目附件,有很多 php 文件。打开其中一个能发现有很多类似后门的代码,有 assert,eval,system。但是很多都用不了,应该是要爆破搜索能用的后门了。
2023-12-06 01:05:18
101
1
原创 Flask 学习
是一个非常小的框架,可以称为微型框架,只提供了一个强劲的核心,其他的功能都需要使用拓展来实现。意味着可以根据自己的需求量身打造;快速上手_Flask中文网 (github.net.cn)
2023-12-03 14:59:08
85
1
原创 小迪安全第十四天
在Javascript中也存在变量和函数,当存在可控变量及函数调用即可参数漏洞JS开发的WEB应用和PHP,JAVA,NET等区别在于即没有源代码,也可以通过浏览器的查看源代码获取真实的点。获取URL,获取JS敏感信息,获取代码传参等,所以相当于JS开发的WEB应用属于白盒测试(默认有源码参考),一般会在JS中寻找更多的URL地址,在JS代码逻辑(加密算法,APIkey配置,验证逻辑等)进行后期安全测试。
2023-11-21 22:39:59
61
原创 小迪安全第三天
原理:Web应用防火墙,旨在提供保护影响:常规Web安全测试手段会受到拦截演示:免费D盾防护软件Windows2012 + IIS +D盾。
2023-11-16 22:46:40
75
1
原创 小迪安全第二天
前端js框架,用 api 传输数据。前端页面大部分不存在漏洞,后端和前端也不在同一域名下,就算获得前端权限也可能不影响后端。虚拟化技术独立磁盘空间,非真实物理环境,拿下权限也只是虚拟磁盘的权限,还要 docker 逃逸。宝塔和 phpstudy。打包类集成化环境,权限配置或受控制。源码数据库不在同一服务器,数据库肯放在云数据库产品上。利用别人域名模版建立,实质安全测试非目标资产。原理:数据没有传输性(js传输不算)例子:大学学的html设计的网站。动态转为静态技术,伪装的静态。源码数据库在同一个服务器。
2023-11-16 22:14:55
52
1
原创 杂项入门-图片篇(信息附加)
StegSolve 打开图片,选中 Analyse 的 File Format 模块。或者 010 最下面得到 flag。
2023-11-16 08:22:54
366
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人