ctf-misc总结(二)

这篇博客总结了CTF比赛中涉及的多种技术,包括在线工具如加密解密、流量包分析、内存快照处理等。还介绍了RSA加密的各种攻击场景,如广播攻击、模不互素和私钥泄露等。此外,提到了AES解密和图片隐写数据检测的解决方案,并提供了相关工具和解密程序。
摘要由CSDN通过智能技术生成

常用在线网址

(1)16进制字符串文本转换https://www.bejson.com/convert/ox2str/
(2)unicode在线编解码:https://www.css-js.com/tools/unicode.html
(3)在线摩斯密码解密 https://www.bejson.com/enc/morse/
(4)MD5在线爆破 https://www.cmd5.com/
(5)维吉利亚在线解密 https://guballa.de/startseite
https://www.guballa.de/vigenere-solver
(6)在线大素数分解 http://factordb.com/
(7)在线将cap包修复为pcap包 http://f00l.de/hacking/pcapfix.php
(8)在线PS网址https://www.uupoop.com/

常用工具


1.uncompyle2是Python2.7的反编译工具,它可以把python生成的pyo、pyc字节码文件反编译为十分完美的源码,并可以将反编译后的源码再次生成字节码文件
安装方法:

git clone https://github.com/wibiti/uncompyle2
cd uncompyle2
python setup.py install

使用方法示例:
使用帮助:

uncompyle2 -h

例如有一个pcat.pyc,想反编译输出文件为pcat.py,你必须这样写:

uncompyle2 -o pcat.py pcat.pyc

2.git泄露:考虑 git 泄露 下载 Git_Extract 使用 python git_extract.py 加上.git 所在目录,还原出另一个 flag.txt,及 s.py, 删除原来的 flag.txt,将新抽取的 flag.txt.xxx 重命名为 flag.txt,运行 s.py 得到 flag
提取远程 git 泄露或本地 git 的工具
下载地址:https://github.com/gakki429/Git_Extract

3.压缩包解密工具除了一个archpr工具外还有一个azpr

4.winhex进行16进制搜索查找简单编辑,hdx可以大量文本编辑,下载地址l

5.要复制winhex16进制对应的文本内容,可以先吧16进制复制出来进行字符串转换即可

6.流量包分析时对请求方式筛选很有用:http.request.method==POST

7.除了使用binwalk提取文件以外,kali自带了foremost工具用来提取文件

8.存储该文件电脑的一个内存快照题目解法参考:https://www.ichunqiu.com/writeup/detail/1415
9.zsteg可以检测PNG和BMP图片里的隐写数据。

git clone http://www.github.com/zed-0xff/zsteg

安装方法:

git clone https://github.com/zed-0xff/zsteg
cd zsteg/
gem install zsteg

直接文本搜索
使用strings.exe对kill.pcapng中的可打印字符进行提取,保存到strings.txt文件中,命令【strings.exe ****.pcapng >strings.txt】
或者直接使用notepad++打开搜索

CTFcrack这个工具尝试一下

RSA题目

from pwn import *
from hashlib import sha256
from gmpy2 import *

1.已知n,c,e,求m

    n=p*q
    e=65537
    p = 289540461376837531747468286266019261659
    q = 306774653454153140532319815768090345109
    phi = (p-1)*(q-1)
    d = invert(e, phi)
    m = pow(c, d, n)

2.已知n,c,e=3,爆破

 i = 0
 while True:
     if iroot(c + i * n, 3)[1] == True:
         m = int(iroot(c + i * n, 3)[0])
         break
     i += 1

3.广播攻击,已知多组n和c

    n = [n1, n2, n3]
    C = [c1, c2, c3]
    N = 1
    for i in n:
        N *= i
    Ni 
斐波那契数列是一个经典的数学序列,其中每个数都是前两个数之和。在Java中,我们可以使用循环或递归的方式来生成这个序列。这里我将展示如何用数组存储前20个数字,并检查给定的数2178309是否属于该序列。 首先,我们先生成前20个数字并存储在一个数组里: ```java public class Fibonacci { public static void main(String[] args) { int[] fibArray = new int[20]; fibArray[0] = 1; fibArray[1] = 1; for (int i = 2; i < 20; i++) { fibArray[i] = fibArray[i - 2]; } // 输出前20个数字 for (int num : fibArray) { System.out.print(num + " "); } } } ``` 运行上述代码,你将得到前20个斐波那契数。 接下来,我们要检查2178309是否为斐波那契数。由于数组已经生成了前20个数字,我们可以从后向前查找是否存在某个数等于2178309: ```java // 检查给定数是否为Fibonacci数 for (int i = fibArray.length - 1; i >= 0; i--) { if (fibArray[i] == 2178309) { System.out.println("2178309是第" + (i + 1) + "个Fibonacci数"); break; } } if (fibArray[fibArray.length - 1] != 2178309) { System.out.println("2178309不是Fibonacci数"); } ``` 这段代码会在找到2178309的位置后立即停止搜索,并告知它是在序列中的哪个位置。 注意,这个过程假设输入的数小于或等于上一个斐波那契数,因为斐波那契序列中的数通常非常大,直接计算到很大数可能会遇到精度问题。如果你需要精确地计算较大的斐波那契数,可能需要使用其他算法(例如矩阵快速幂法)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值