NSSCTF逆向刷题记录

目录

[WUSTCTF 2020]level3

[SWPUCTF 2022 新生赛]upx

[HNCTF 2022 Week1]你知道什么是Py嘛?

[CISCN 2022 东北]easycpp

 [羊城杯 2020]login

 [GDOUCTF 2023]doublegame

 [GDOUCTF 2023]Tea

 [WUSTCTF 2020]Cr0ssfun

 [HNCTF 2022 Week1]CrackMe

[HDCTF 2023]fake_game 

[MoeCTF 2022]Base

 [watevrCTF 2019]Timeout

[WUSTCTF 2020]level3

base64_encode函数

翻转0-9和10-19位置的值

 base64_table[i]数据

 先翻转表,再base换表

basebiao = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
basebiao = list(basebiao)
for i in range(10):
    v1 = basebiao[i]
    basebiao[i] = basebiao[19-i]
    basebiao[19-i] = v1
basebiao = "".join(basebiao)
print(len(basebiao))
print(basebiao)
import base64
str1 = "d2G0ZjLwHjS7DmOzZAY0X2lzX3CoZV9zdNOydO9vZl9yZXZlcnGlfD=="
#string1 = "TSRQPONMLKJIHGFEDCBAUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
print(base64.b64decode(str1.translate(str.maketrans(basebiao,string2))))

[SWPUCTF 2022 新生赛]upx

Upx脱壳

 简单的异或运算

code = "LQQAVDyWRZ]3q]zmpf]uc{]vm]glap{rv]dnce"
code = list(code)
for i in range(len(code)):
    print(chr(ord(code[i])^2),end="")

[HNCTF 2022 Week1]你知道什么是Py嘛?

得到第一位字符"N"以及flag的长度为35

 arr数组的长度只有34,故将i的范围改为34

arr=[29, 0, 16, 23, 18, 61, 43, 41, 13, 28, 88, 94, 49, 110, 66, 44, 43, 28, 91, 108, 61, 7, 22, 7, 43, 51, 44, 46, 9, 18, 20, 6, 2, 24]
s = ['N']
#print(len(arr))
for i in range(34):
    a=ord(s[i])^arr[i]
    s.append(chr(a))
    print(s[i],end="")

[CISCN 2022 东北]easycpp

memcmp() 函数比较 v3v12 指向的内存块前 Size 个字节的内容。将比较结果赋值给 v12=buf2

故我们需要得到buf2加密数据

在if(Size!=38)处下断点,启动动态调试

 打开buf2得到加密数据

逆序解密 

code = [0x0A, 0x0B, 0x7D, 0x2F, 0x7F, 0x67, 0x65, 0x30, 0x63, 0x60,
  0x37, 0x3F, 0x3C, 0x3F, 0x33, 0x3A, 0x3C, 0x3B, 0x35, 0x3C,
  0x3E, 0x6C, 0x64, 0x31, 0x64, 0x6C, 0x3B, 0x68, 0x61, 0x62,
  0x65, 0x36, 0x33, 0x60, 0x62, 0x36, 0x1C, 0x7D]
print(len(code))
for i in range(len(code)-4,-1,-1):
    code[i + 2] = code[i + 2] ^ code[i + 3]
    code[i+1] = code[i+1] ^ code[i + 2]
    code[i]=code[i]^code[i+1]
for i in range(len(code)):
    print(chr(code[i]), end="")

 [羊城杯 2020]login

pyinstxtractor解包

#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 3.6

import sys
input1 = input('input something:')
if len(input1) != 14:
    print('Wrong length!')
    sys.exit()
code = []
for i in range(13):
    code.append(ord(input1[i]) ^ ord(input1[i + 1]))

code.append(ord(input1[13]))
a1 = code[2]
a2 = code[1]
a3 = code[0]
a4 = code[3]
a5 = code[4]
a6 = code[5]
a7 = code[6]
a8 = code[7]
a9 = code[9]
a10 = code[8]
a11 = code[10]
a12 = code[11]
a13 = code[12]
a14 = code[13]
if ((((a1 * 88 + a2 * 67 + a3 * 65 - a4 * 5) + a5 * 43 + a6 * 89 + a7 * 25 + a8 * 13 - a9 * 36) + a10 * 15 + a11 * 11 + a12 * 47 - a13 * 60) + a14 * 29 == 22748) & ((((a1 * 89 + a2 * 7 + a3 * 12 - a4 * 25) + a5 * 41 + a6 * 23 + a7 * 20 - a8 * 66) + a9 * 31 + a10 * 8 + a11 * 2 - a12 * 41 - a13 * 39) + a14 * 17 == 7258) & ((((a1 * 28 + a2 * 35 + a3 * 16 - a4 * 65) + a5 * 53 + a6 * 39 + a7 * 27 + a8 * 15 - a9 * 33) + a10 * 13 + a11 * 101 + a12 * 90 - a13 * 34) + a14 * 23 == 26190) & ((((a1 * 23
### NSS 逆向工程练习题与学习资料 NSS(Network Security Services)作为一套支持安全通信的应用程序编程接口库,在逆向工程领域提供了丰富的研究对象。对于想要深入理解并实践NSS逆向工程技术的学习者来说,可以从以下几个方面入手: #### 在线平台与社区资源 - **CTF 平台**:许多 CTF(Capture The Flag)竞赛网站提供专门针对二进制分析和加密算法破解的比赛题目,这些题目往往涉及对网络协议栈的安全组件如NSS的解析[^1]。 - **GitHub 和 GitLab**:开源项目托管平台上存在大量关于NSS的研究成果以及工具开发案例,通过参与其中可以获得宝贵的经验。 #### 教程书籍推荐 - **《Practical Reverse Engineering》**:这本书涵盖了Windows内核模式下的调试技巧、驱动程序工作原理等内容,虽然主要面向操作系统层面,但对于理解和操作像NSS这样的底层软件同样具有指导意义。 - **《The Art of Exploitation Programming》**:此书专注于漏洞挖掘技术及其利用方法论,有助于培养读者发现潜在安全隐患的能力,进而更好地掌握如何绕过或修复由NSS实现的安全机制。 #### 实践环境搭建指南 为了便于开展实际动手实验,建议构建一个隔离良好的虚拟化测试床: ```bash # 安装必要的依赖包 sudo apt-get install build-essential libssl-dev python3-pip qemu-kvm virt-manager # 下载目标版本的 Firefox 浏览器源码仓库,因为 Mozilla 的产品广泛采用了 NSS 库 git clone https://github.com/mozilla/gecko-dev.git cd gecko-dev/security/nss/ make nss_build_all ``` 上述命令序列展示了怎样准备一个适合探索NSS内部结构的工作空间。值得注意的是,由于NSS本身属于高度复杂且紧密集成于特定应用程序中的模块,因此直接对其进行修改可能会带来意想不到的风险;故而应当优先考虑基于已知缺陷设计的小型模拟场景来进行初步尝试。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值