web签个到
buuctf[ACTF2020 新生赛]Include打开靶机看到页面只有一个tips 点击一下 看源码什么也没有,结合题目include猜测是文件包含 来个链接学一下 https://blog.csdn.net/m0_46467017/article/details/126380415 我们可以用php伪协议,再来个链接 https://blog.csdn.net/cosmoslin/article/details/120695429 我们可以用php://filiter读取源码 php://filter/read=convert.base64-encode/resource=flag.php base64解密以下得到flag 12好久没学新东西了,突然发现web的入门题还是很好玩的。脑子有点混乱了,还有很多东西要学啊,没关系,今天又进步了一点😊
hgame2025
hgame比赛有两周,可惜到最后没坚持下来☹️,能够自己解出来很简单的题,也是小小的收获 Hakuya Want A Girl Friend16进制文件正序是zip,倒序是png,png宽高爆破后得到zip的密码,解压得到flag Computer Cleaner找到一句话木马文件,得到第一部分flag,查看日志,攻击者试图读flag3文件,找到flag3,访问日志中的攻击者ip得到flag2 Compress dot new当时直接用AI生成脚本😣,现在没看懂,以后再学吧 Turtleupx壳,用工具脱不下来,于是用x64dbg手脱。打开ida理清逻辑,key用RC4加密,密文是用魔改RC4加密,用脚本解密成功 😔虽然很简单的过程,这道题做了好久,还需要学好多 剩下的题还没有学会啊
VNCTF-re
😫今天终于想起来复现了,这次比赛没做出来一道题,好惨 hook_fish分析过程 总之就是输入flag验证是否正确 先找到主函数 check验证函数应该在hook_fish.dex中,根据fish函数的参数hookfish找到下载链接 输入的flag先经过本地encrypt函数加密,再经过hook_fish.dex中的check方法进行混淆 解密过程 check方法用哈希映射加密,在mainactivity中保留了decode方法,可以用hook方法解密 123456789101112Java.perform(function() { var MainActivity = Java.use("com.example.hihitt.MainActivity"); console.log("找到类: com.example.hihitt.MainActivity"); //hook 掉删除的方法,并直接在此方法中进行解密 MainActivity.fish_fade.implementation...
TEA
TEA原理TEA是一种分组加密算法,使用64位的密文分组和128位的密钥,它使用Feistel分组加密框架,需要进行 64 轮迭代,尽管作者认为 32 轮已经足够了。该算法使用delta作为倍数,以保证每一轮加密都不相同,TEA中定义为0x9e3779b9 加密函数: 12345678910111213141516171819void Encrypt(long* EntryData, long* Key){ //分别加密数组中的前四个字节与后4个字节,4个字节为一组每次加密两组 unsigned long x = EntryData[0]; unsigned long y = EntryData[1]; unsigned long sum = 0; unsigned long delta = 0x9E3779B9; //总共加密32轮 for (int i = 0; i < 32; i++) { sum += delta; x += ((y << 4) +...
简单的z3
z3-solver求解器z3-solver是由Microsoft Research(微软)开发的SMT求解器,它用于检查逻辑表达式的可满足性,可以找到一组约束中的其中一个可行解,缺点是无法找出所有的可行解 pip安装:pip install z3-solver 基本用法: 123456789import z3x.Int('x')y.Int('y')s=z3.Solver()s.add(x+y=4)if s.check() == z3.sat: print(s.model())else: raise Exception("NO SOLUTION!") 实数:y = z3.Real(name = 'y') 位向量:z = z3.BitVec(name = 'z', bv = 32) 布尔:p = z3.Bool(name = 'p') 对于布尔类型的式子而言,我们可以使用 z3 内置的 And()、Or()、Not()、Implies()...
RC4
原理RC4是一种流加密算法,密钥长度可变,可变范围是1-256字节,属于对称加密算法 生成S-boxKSA算法初始化长度为256的S盒,用种子密钥(就是我们的秘钥)循环填充另一个256字节的K表,用K表对S表进行初始置换 123456789def KSA(key): key_length = len(key) S = list(range(256)) j = 0 for i in range(256): j = (j + S[i] + key[i % key_length]) % 256 S[i], S[j] = S[j], S[i] # 交换S[i]和S[j] return S 生成密钥流PGRA算法根据S盒生成与明文长度相同的密钥流 12345678910def PRGA(S): i = 0 j = 0 while True: i = (i + 1) % 256 j = (j + S[i]) % 256 S[i], S[j] = S[j], S[i] ...
python逆向
[Litctf 2024] ezPython!!! 今天见到一道python打包成exe文件的逆向题,虽然很简单,但是安装工具遇到了一些麻烦 将.exe文件反编译为pyc文件.pyinstxtractor.py工具安装地址:https://sourceforge.net/projects/pyinstallerextractor/ 先将pyinstxtractor.py工具与我们要反编译的.exe文件放入同一个工作目录下,在终端输入python pyinstxtractor.py 文件名.py 😕因为python版本问题,imp模块无法安装,需要替换为importlibc,(pip install importlib)但是又提示importlibc没有get_magic方法,需要替换为importlib.util.MAGIC_NUMBER,又又提示module ‘importlib’ has no attribute ‘util’,于是写上from importlib.util import find_spec...
Reverse刷题笔记
[HUBUCTF 2022 新生赛]simple_RE附件是.exe文件 用ida打开F5反汇编得到: sub_401570函数对输入的flag进行变换,memcmp函数用于判断两个字符串的前n个字符是否相等 进入sub_401570: (经过chatgpt分析) 分析出这个函数的功能: 到这里我认为只要把已知字符串进行base64解码就行,发现是乱码 经过wp提示,原来是base64换表 aQvejafhmuyjbac=”qvEJAfHmUYjBac+u8Ph5n9Od17FrICL/X0gVtM4Qk6T2z3wNSsyoebilxWKGZpRD”是映射表 写脚本复原: 123456789101112131415import base64c = "5Mc58bPHLiAx7J8ocJIlaVUxaJvMcoYMaoPMaOfg15c475tscHfM"flag = ""table =...