avatar
文章
41
标签
8
分类
6
首页
归档
标签
分类
友链
huanghunr's Blog
搜索
首页
归档
标签
分类
友链

huanghunr's Blog

D^3CTF2025 Re-wp&复现
发表于2025-07-10|WriteUp
D3piano按正确的音色弹琴拿到flag。 逻辑在so里面,加载了D3piano。查看后看字符串可以定位到check函数。 里面是一个gmp库实现的ras校验,获取公钥即可解密。这里用fridahook获取。 因为是大数,寄存器里应该是一个结构体,这里我们用frida调用gmpz_get_str把hook的数据转为十六进制。 有frida检测,在player.so的init_array里面,hook去掉检测。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115//frida version 17.1.0function reada(){ var ...
2025 r3CTF Re-部分复现
发表于2025-07-10|WriteUp
r3loads直接看加密函数sub_1630。 在ida中通过动调,进入到运算函数中,给加密函数中涉及到对输入字符进行操作的操作符下条件断点,打印操作,这样的操作大概有好几种。 当然也可以用capstone之类的看汇编理解。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061pow: 乘方import ida_dbga = ida_dbg.get_reg_val("edi")b = ida_dbg.get_reg_val("esi")print(f"{hex(a)} ** {hex(b)} == {hex((a**b) &0xffffffff)}")equl_add: 加等于import ida_dbga = ida_dbg.get_reg_val("edx")...
2025ISCC 复现
发表于2025-05-21|WriteUp
School三进制战争第一段就不说了,第二段两个字符是12位3进制,按两个字符爆破就行。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586Java.perform(function () { let res = ""; Java.scheduleOnMainThread(function () { try{ const MainActivity = Java.use("com.example.mobile02.MainActivity"); const instance = MainActivity.$new(); const target = "0...
2025miniLCTF 部分Re-wp+复现
发表于2025-05-19|WriteUp
x96re逻辑如下 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990"""buf4 = buf0 ^ f(buf1 ^ buf2 ^buf3 ) ^ key4..buf35 = buf31 ^ f(buf32 ^ buf33 ^ buf34) ^ key35dec:buf31 = buf35 ^ f(buf32 ^ buf33 ^ buf34) ^ key35bufn = buf[n+4] ^ f(buf[n+1] ^ buf[n+2] ^ buf[n+3]) ^ key[n+4]"""key =[0x918188F3, 0x3BC35D39, 0xB1EE5F1, 0x935103FD, 0xAEEB97C8, 0x77084D...
矩阵逆向初步学习
发表于2025-05-01|Re学习
基本操作numpy实现 12345678910111213141516171819202122232425import numpy as np#rows行 ,cols列Z = np.zeros((rows, cols)) #创建全为0的矩阵G=np.array(list).reshape(rows,cols) #转列表为一维矩阵,并用.reshape(rows,cols)重新规划行列数rows=-1时自动识别G.tolist() #转为列表C = A @ B #矩阵乘法C = A + B # +C = A - B # -np.rot90(G,k=1) #顺时针旋转k*90度,k<0时逆时针转动invA = np.linalg.inv(A) #求逆A.flatten() #降维,压缩print(np.array2string(C,max_line_width=np.inf)) #不换行输出C = A @ BA = C @ invBB = invA @ BA.astype(int) #转换类型 卷积 12345678910111213141516171819202122232...
2025TGCTF Re-Wp+复现
发表于2025-04-25|WriteUp
base64表右移24位 XTEA大端序密文输入。 delta没给,直接爆破0—>0xffffffff 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#include<stdio.h>#include<stdint.h>#include<stdlib.h>void encipher(unsigned int num_rounds, uint32_t v[2], uint32_t const key[4],uint32_t delta) { unsigned int i; uint32_t v0 = v[0], v1 = v[1], sum = 0,a,b,c ; for (i = 0; i < num_rounds; i++) { /* printf("%x,%x...
2025ZJNUCTF Re-wp+复现(无悬赏)
发表于2025-04-08|WriteUp
re1nop一下 改eip到 123456789101112131415161718192021222324252627282930import re# 输入文本(假设已经复制到剪贴板或保存在文件中)text = """Ooooooooookkkkkkkay, thank you for waiting me for such a long time, here are the 1th char of flag... Z............................................................Ooooooooookkkkkkkay, thank you for waiting me for such a long time, here are the 2th char of flag... J............................................................Ooooooooookkkkkkkay, thank you for waiting me f...
2025腾讯游戏安全技术竞赛-PC客户端安全-初赛(复现)
发表于2025-04-04|WriteUp
复现题目旨在了解题目的逻辑~~~~,可能与真正的解题流程有出入 先看main函数 首先,加载了ACEDriverSDK,里面有许多函数,我们先标出函数的作用。 在虚表中我们可以看到下面这两个函数,一个是用于后面base58表的初始化的,还有一个就是反调试函数。 根据作用大致恢复一下结构体(命名函数时会自动修改)。 12345678910111213141516struct ACEDriverSDK_vftable{ void *creat_vftable; __int64 (__fastcall *initserver)(ACEDriverSDK_vftable **a1, char *a2, __int64 a3); __int64 (__fastcall *closeserver)(ACEDriverSDK_vftable **a1, __int64 a2); _BOOL8 (__fastcall *startserver)(ACEDriverSDK_vftable **a1, SC_HANDLE hSCManager, const WCHAR *lpS...
windows内核调试
发表于2025-03-28|Re学习
先搭建内核开发环境windbg驱动调试的环境搭建。推荐阅读微软官方文档开始使用 WinDbg(内核模式) - Windows drivers | Microsoft Learn windows系统内核调试 环境搭建(保姆级)_dsigntool-CSDN博客 下载 Windows 驱动程序工具包 (WDK) - Windows drivers | Microsoft Learn Windows驱动程序逆向工程方法 - 🔰雨苁ℒ🔰 驱动开发:WinDBG 配置内核双机调试 - lyshark - 博客园 备忘录 反调试: 内核下的调试与反调试 - iBinary - 博客园 总结 一些要用到的命令。 推荐串行接口进行调试 1\\.\pipe\com_2 符号表环境变量 1_NT_SYMBOL_PATH SRV*D:\Myself_Software\Windows_soft\symbols*http://msdl.microsoft.com/download/symbols windbg内核调试操作 开启调试服务(需要关闭安全引导) 12bcdedit /de...
2025UTCTF Re-Wp
发表于2025-03-15|WriteUp
Ostrich Algorithm还可以在汇编里面把call exit nop掉,直接动调到最后可以拿到md5值 Safe Word逻辑上可能有点不好理解,我们先理一下逻辑。 下面是main函数和一个sub_11e9()和sub_11fc(arg1),使用了BN反编译。 main函数开头使用了一个mmap函数分配了一块可以用于执行的内存,也就是说data_16020中的内容可以被作为代码执行。我们的输入被放入了rax_2中。并且还初始化了一个值var_20=0x5b。然后以我们的输入和var_30计算出索引获取rax_5中的值,作为参数传入sub_11fc()中,在上面分析sub_11fc()函数其实就是把rax_5的值作为了函数(代码)执行。既然是作为指令执行。那么这肯定就是是汇编的字节码,这四字节数据是一段汇编代码,被sub_11fc()执行,并把返回值赋给var_20用作下一次索引的计算。依次遍历完我们的输入。 12for i in range(32): var_20 = f( rax5[ (input[i] + var_20 << 8) <...
12…5
avatar
huanghunr
文章
41
标签
8
分类
6
Follow Me
最新文章
D^3CTF2025 Re-wp&复现2025-07-10
2025 r3CTF Re-部分复现2025-07-10
2025ISCC 复现2025-05-21
2025miniLCTF 部分Re-wp+复现2025-05-19
矩阵逆向初步学习2025-05-01
分类
  • Re学习9
  • WriteUp23
  • python脚本1
  • re学习1
  • 学习2
  • 工具5
标签
加解密、编码 re,学习 学习 工具 生活,工具 re,工具 re,WriteUp re,WriteUp
归档
  • 七月 2025 2
  • 五月 2025 3
  • 四月 2025 3
  • 三月 2025 5
  • 二月 2025 3
  • 一月 2025 7
  • 十二月 2024 6
  • 十一月 2024 9
网站信息
文章数目 :
41
本站总字数 :
153.8k
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 By huanghunr框架 Hexo 7.3.0|主题 Butterfly 5.4.3
桂ICP备2024049894号
搜索
数据加载中