- 博客(30)
- 收藏
- 关注
原创 vulfocus/thinkphp:6.0.12 命令执行
在其6.0.13版本及以前,存在一处本地文件包含漏洞。当多语言特性被开启时,攻击者可以使用lang参数来包含任意PHP文件。虽然只能包含本地PHP文件,但在开启了register_argc_argv且安装了pcel/pear的环境下,可以包含并写入任意文件。
2025-01-29 16:52:23
833
原创 vulfocus/fastjson-cnvd_2017_02833复现
Fastjson 是阿里巴巴开发的一个高性能的 Java 库,用于将Java 对象转换成JSON 格式序列化),以及将JSON 字符串转换回Java 对象反序列化fastjson在解析json的过程中,支持使用@type字段来指定反序列化的类型,并调用该类的set/get方法来访问属性,当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使目标应用的代码执行流程进入特定类的特定setter或者getter方法中,即可构造出一些恶意利用链。
2025-01-23 22:18:11
907
原创 2024单身杯——Crypto
rail fence 3栏:QZNALEW{QZNOB_ZL1A_1A_BOS11U_NHSM}总结:最后一道题还是比较有意思的,那道古典古典古典题也可以好好了解下,其它的就比较简单了。rot13 7轮:XGUHSLD{XGUVI_GS1H_1H_IVZ11B_UOZT}第一步容易看出,第二步用栏栅移动‘{’的位置也比较容易,就是倒数两步不太容易看出来。注意这里求解n阶乘的素数的指数过程(即solve_e函数)这道题只需要简单遍历一下(从前一个素数到后一个素数)一开始做的时候看错了,直接以为m就是素数。
2024-11-25 10:52:23
808
原创 高可用应用架构
单点故障:如果小云的业务只运行在一台服务器上,这就存在极大的风险,因为随着时间的推移,物理硬件的损坏是肯定的,而且除了硬件可能会损坏,还会有管理员的运维失误、软件故障、受到攻击等情况发生,一旦这些情况发生,由于业务只运行在一台服务器上,这就会造成业务中断,甚至数据丢失。高可用架构:是指计算机系统能够保证无故障持续运行的概率,通常采用百分比的方式来表示系统的高可用性等级,我们在生活中采用高可用概率=可用时间/总时间*100%来计算实现的高可用性等级,要想实现较高的高可用性等级,需要引入系统冗余的理念。
2024-11-21 21:49:55
1198
原创 Crypto之LFSR
LFSR又称线性反馈移位寄存器是在GF(2)有限域上的一个n级反馈移位寄存器其由n个二元存储器与一个反馈函数组成或者用下图更清楚的描述每当最高位(如a1)输出时,会根据反馈函数计算得到一个an1,每个存储器向右移动一位,然后将an1放到最低位这样就实现了一次完整的移位运算,如下图所示而在ctf中,c1,c2,…cn的状态常用mask表示其中mask的位数也就代表了存储器的个数,即我们想要求出的flag长度比如mask是32位,通常会给出每次循环移位的最低位an。
2024-11-12 10:59:20
1021
原创 2024SICTF #round4
首先讲一下非预期做法:或许建议这里这样写:monic()函数用于将x**2的系数进行首一化,例预期解:转换成求解先来看一下的算法:这里也只是将数变成矩阵进行运算这里存在一种递推关系:可以用以下矩阵表示:完整的脚本如下:Smooth题目:,这里的素数集最大应该小于等于按之前的脚本发现有点问题,因为我之前脚本设置的那个上界是e=65537,即公钥先上脚本:这里的第一部分先求2-8000的模运算(加快运算)也可以和下面写到一起另外下面的每15次进行一次判断,也是为了加快速度这里的
2024-11-05 11:47:16
1217
原创 related message attack/相关消息攻击
以rsa中加密为例,其中若这里的e为3,可参考其中指出:由以上公式,我们可以轻松得到m其实这个条件的应用还是挺难,因为要求e为3不过下面即将给出一个通用的做法。
2024-11-03 14:37:07
607
原创 2024网鼎杯青龙组初赛Crypto
这道题目涉及了ECDSA(椭圆曲线数字签名算法),AES_CBC模式加密,维吉尼亚加密先来了解下什么是ECDSA共享kk部分泄露这里是利用了共享k的攻击姿势来解题这里是将椭圆曲线上一点G点乘k和dA但在这里求解不出私钥进行数字签名这里涉及到两对数字签名,同时选用k来生成dA基于以上的签名,我们可以得到等式一与等式二左右相减,得到得到k之后,求解dA将k带入等式一或二皆可第二部分是AES_CBC解密。
2024-10-29 20:45:10
1183
原创 2024_SHCTF_week2_Crypto
这里的明文换成了flag+pad,pad长度与内容我们已知,flag我们已知其长度这里涉及到(基于LLL算法),Coppersmith可以用于求多项式的小根经常用于“”的问题而其应用之一是已知明文攻击,就是已知部分明文,我们能求出全部明文但其也有局限性:已知明文长度不能过短flag的二进制位长度:8*39=312,e次方后位936位n的二进制长度:1024epsilon(ε)的值通常设定为β的1/8,即ε = β / 8。
2024-10-27 20:55:27
884
原创 2024_Newstar_week3_Crypto
题目思路:维吉尼亚编码这里没有key,需要根据频率分析得到对应key长度和key具体的值发现这句话原来出自于《python之禅》这里得到的解码结尾加上一个换行符,不懂出题人为啥这样搞。
2024-10-24 18:49:59
1292
3
原创 RSA_dp泄露
dp是什么,其实dp就是由下面公式得到的一个数值而已引入公式:dp=d mod (p-1)如果题目给出dp和e的值,那我们如何求d和p-1呢公式转换:dp≡---->可以看出dp<p-1,因为模数是p-1所以X<e遍历X即可得到相应的p-1,从而确定得到的p-1是否正确公式转换原理:已知两边乘e变形RSA中已知代入变形移项令X=k2*(q-1)-k1。
2024-10-24 11:26:58
1079
1
原创 Pollard‘s p-1算法
光滑数 (number):指可以分解为多个小素数乘积的正整数当p是N 的因数,并且p−1是光滑数,可以考虑使用Pollard's p-1算法来分解N当p是N的因数,并且p+1是光滑数,可以考虑使用Williams's p+1算法来分解N这里只介绍pollard p-1算法。
2024-10-16 21:33:04
668
原创 2024_SHCTF_week1_crypto
这里只知道p和q的关系,如果我们能知道其中一个就很好做了,但我们p和q都不知道。因为r和t都是素数,gcb(r,t)=1,满足求逆元的条件即。所以我们可以对n开平方根求出p和q中间的某个数x。常规的sqrt函数这里行不通,因为n数值太大。我们知道两个素数之间间距大概不超过1500。已知p*r-q*t=tmp+leak。r,t已知,等号右边是已知的。等式一与等式二左右互相乘得到。tmp比较小,所以可以通过。得到p后,正常RSA即可。这里推荐一种牛顿法求平方根。
2024-10-16 20:44:12
577
原创 【SSRF漏洞】——gopherus工具伪造
Gopherus是一个专为生成Gopher协议Payload的工具,通过构造特定的Gopher协议数据包,攻击者能够利用SSRF漏洞对内网资源进行访问,甚至可能进一步执行远程代码(Remote Code Execution,RCE)。
2024-09-13 20:39:16
1201
原创 【SSRF漏洞】——http协议常见绕过
改变的确很难,但结果值得冒险本文如有错误之处,还请各位师傅指正一.ssrf概述SSRF全称为Server-side Request Fogery,中文含义服务器端请求伪造SSRF是一种由攻击者构造形成由目标服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统(防火墙隔绝)。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)原由:大都是由于服务端提供了从其它服务器获取数据的功能,比如使用户从指定的URL web应用获取
2024-09-13 10:49:50
1406
原创 python之md5使用
md5对象生成16进制的md5值:xor_result = a_md5.hexdigest()生成md5对象a_md5:a_md5 = hashlib.md5()先将md5的text转换成字符串:a = str(j ^ i)更新字符串,编码成utf-8(模块:hashlib。
2024-09-10 21:51:01
340
原创 ctfshow之文件包含(web78~web86)
解法一:data伪协议??先在User-Agent处传参执行,从而让日志文件包含执行记录,一句话木马就写到日志文件上了file指向到日志文件,POST传参数a注意:这里本来想试下参数逃逸的,本质上也是使用伪协议,但这里被禁用了这里用input伪协议也不行。
2024-09-03 11:17:11
678
1
原创 BaseCTF之web(week2)
我们很容易发现Sea类中_get()方法有函数被执行了,即将$sea_ani()函数执行,那我们可以将$sea_ani变量值修改成Shark的对象,那么我们调用函数的时候,就是把Shark当做函数调用了,因为$sea_ani的权限是public,所以我们在类外面就可以修改$sea_ani为new Shark();4.接着该调用_get()方法,调用时机就是引用不存在的属性或者私有属性时,发现_destruct()方法调用了未定义的属性,那么就可以把see的属性值改成new Sea();
2024-09-01 11:35:09
1820
原创 ctfshow之web58~web71
include()函数的行为是,如果文件不存在,它只会发出一个警告,并且脚本会继续执行。ob_get_contents()是将缓冲区的内容输出,然后ob_end_clean()清空缓冲区,最后将缓冲区内容(flag)中的字符全部替换成?那么我们应该查找目录结构中包含的文件:c=var_dump(scandir("."));补充:include包含的文件如果不是php文件或者说是html文件,那么会自动输出文件内容,不用写echo $flag。扫描根目录(c=var_dump(scandir("/"));
2024-08-31 18:31:46
1842
原创 ctfshow之web52~web54
09${IFS}$IFS${cat,fl*}%20tac more less head tail nl od(二进制查看) vi vim sort uniq rev cp mvcp命令尝试:?php${IFS}a.txt||//(//后面的内容可以不写的,因为类似会被注释掉)答案也是不在这里,:这里通配符用不了,但可以用双单引号绕过flag:这里也可以不写目录结构,默认copy到/var/www/html/下)或者:?.php。
2024-08-30 09:42:20
677
原创 BaseCTF 高校联合新生赛Week1(web)
是将URL中的特殊字符转换为有效的ASCII字符格式的过程,以确保URL的正确解析和传输。:用于对URI的一个组件进行编码,需要编码的字符更多,因为它假定参数是URI的一部分,如协议、主机名、路径或查询字符串。反向代理是一种常见的网络安全技术,它通过在代理服务器上对客户端的请求进行转发,实现对目标服务器的访问。:用于对一个完整的URI进行编码,保留字符不会被编码,因为这些字符在URI中有特殊的用途,如分隔符。这里die函数执行完,后面的都不会再执行,所以要跳过if;这里的目录是用uploads连接。
2024-08-21 17:30:29
1587
原创 ctfshow之web29~web51
php://filter是php中独有的一种协议,它是一种过滤器,可以作为一个中间流来过滤其他的数据流。通常使用该协议来读取或者写入部分数据,且在读取和写入之前对数据进行一些过滤,例如base64编码处理,rot13处理等。system('ls'),('system')('ls'),("system")("ls")(system)('ls'),('system')(ls) 等效都是可以执行的。和 cat 命令一样,将每个文件连接到标准输出,但顺序相反,逐行打印,首先打印最后一行。本来以为不影响,直接上?
2024-08-20 14:23:46
1125
原创 简单的SQL字符型注入
输入:-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+输入:-1' union select 1,2,group_concat(username,'-',password) from users --+可以输入:1' and 1=2 union select 1,2,3--+ 或者-1' union select 1,2,3--+
2024-07-12 09:17:17
1200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人