CTF逆向零碎知识点合集
1.Python字节码的学习
题目来源:2023年SWPU NSS 秋季招新赛 (校外赛道)——re——字节码
实验四:字符串和多维数组的实现与应用
BF+KMP算法
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133#include <iostream>#include <string.h>#define MaxSize 1000#define MaxLen 1000using namespace std;struct SeqString{ char ch[MaxSize]; int len;};// BF算法int BF(char S[], char T[])& ...
DS作业-5-22网安物联网-20231016
作业ch4-1:
(1)
从主串S的第一个字符’a’开始,与模式串T的第一个字符’b’进行比较,发现不相等。
从主串S的第二个字符’b’开始,与模式串T进行比较,发现前三个字符’b’, ‘a’, 'b’相等,但第四个字符’a’与模式串T的第四个字符’b’不相等。
从主串S的第三个字符’c’开始,与模式串T进行比较,发现第一个字符不相等。
以此类推,直到从主串S的第12个字符’b’开始,与模式串T进行比较,发现五个字符’b’, ‘a’, ‘b’, ‘a’, 'b’全部相等,说明找到了一个匹配。
所以位置是12
(2)
j
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
T[j]
a
b
c
a
a
b
b
c
a
a
a
b
a
b
a
b
a
a
b
c
a
next[j]
-1
0
0
0
1
1
2
0
0
1
1
1
2
1
2
1
2
1
1
2
0
(3)
S[0]与T[0]不匹配,移动模式串到S[1]。
S[1]与T[0]不匹配,移动模式串到S[2]。
以此类推,一直到S[4]和T[0]不匹配 ...
QFNUCTF(日照)-Reverse-writeup
base64++
查壳
无壳
反编译
查看字串,有两个比较特殊的字符串
联想到题目是换表base64
解密
滚去https://ctf.mzy0.com/CyberChef3/ 解密一下
题后工作
解密出来后面带着LQB,一开始我以为我做错了,后来我把文件拉进kali运行了一下
发现这个字符串flag{6JOd5qGl5p2v5Yqg5rK5}LQB是无法通过正常验证的
而去掉LQB之后flag{6JOd5qGl5p2v5Yqg5rK5}是正常验证的
所以我去掉之后提交,但还是没有通过
无奈之下我放弃这个题了
就在前几天我找到了出题人,问了问情况,发现程序里是有一段添加字符串LQB的代码的,所以输出结果带着LQB没错,我的做题思路也没错
提交失败的原因是,后台正确的flag中的1和正确答案的l混了,我联系出题人修改了bug
解题结束!
XOR(修改)
查壳
等会吧,明天再写,累了
全自动解密脚本Ciphey官方安装文档
Python 3.7 and above
On Linux run this command:
1python3 -m pip install ciphey --upgrade
This will tell your default Python3 version to install Ciphey and upgrade it if it already exists.
Ciphey only supports Python3.7 and above. Please upgrade Python or use the Docker image if you have a version below 3.7.
⚠️ Ciphey doesn’t work on Windows with Python 3.9+, use Python 3.7 or Python 3.8. Other platforms are fine with Python 3.9, Python 3.10 doesn’t work.
⚠️ Windows Python defaults to install 32- ...
Kali Linux如何修改语言为中文
友情提示
修改前快照一下,避免修改操作错误带来的问题!
打开终端
打开设置
输入
1dpkg-reconfigure locales
修改设置
en_US.UTF-8 UTF-8改为不勾选
下面这种有个*属于已经勾选了
通过上下箭头按键我们把红点(表示当前选中的选项)移动到en_US.UTF-8 UTF-8,按下空格表示不勾选/勾选
使用空格勾选[ ]zh_CN.GBK_GBK 和[ ] zh-CN.UTF-8.UTF-8两个选项,这里有部分虚拟机会找不到[ ]zh_CN.GBK_GBK,这两个选项是紧跟着的,找不到就算了,问题不大。
按下enter 表示ok,选择语言zh_CN.UTF-8
重启生效设置
重启后会有个提示,建议你选择保留旧名称,以后路径敲代码敲英文肯定比敲中文方便很多!
1reboot
原文:https://blog.csdn.net/u011027547/article/details/123344249
实验三、栈和队列的应用
已完结
声明:仅供留档查阅,仅用作起到提示引导性作用,仅用作学习交流,切勿直接照搬
实验原理
顺序栈:顺序栈是一种基于数组实现的栈。它通过一个数组和一个栈顶指针实现。当有新元素入栈时,将新元素放在数组的末尾,并将栈顶指针向后移动一位。当需要出栈时,直接返回栈顶元素,并将栈顶指针向前移动一位。
链式栈:链式栈是一种基于链表实现的栈。它通过一个链表和一个头节点实现。当有新元素入栈时,将新元素插入到链表的头部,并更新头节点。当需要出栈时,直接返回头节点所指向的节点,并让头节点指向下一个节点。
循环队列:循环队列是一种特殊的队列,它在逻辑上是环形的。循环队列使用一个数组和两个指针(一个头指针和一个尾指针)来实现。当元素入队时,尾指针向前移动并添加新元素;当元素出队时,头指针向前移动。当尾指针到达数组的末尾时,它会从数组的开始继续。
链式队列:链式队列是基于单链表实现的队列。它使用一个单链表和两个指针(一个头指针和一个尾指针)来实现。当元素入队时,新元素被添加到链表的尾部,并更新尾指针;当元素出队时,头部的元素被移除,并更新头指针
实验内容和步骤
顺序栈:
入栈:将新元素放在数组的 ...
C++常用的代码模板
生成随机数
源代码
12345678910111213141516171819202122#include <iostream>#include <random>#include <chrono>using namespace std;int main() { // 使用当前时间作为随机数生成器的种子 unsigned seed = chrono::system_clock::now().time_since_epoch().count(); // 创建一个随机数生成器 default_random_engine generator(seed); // 创建一个均匀分布的随机数生成器,范围从1到100 uniform_int_distribution<int> distribution(1,100); // 生成并打印一个随机数 cout << "Random number: " << distribution(g ...
CTF-crypto&misc常用解密工具
编码解码
Python脚本
base64换表脚本
1234567891011121314import base64#str1是要解密的代码str1 = "5Mc58bPHLiAx7J8ocJIlaVUxaJvMcoYMaoPMaOfg15c475tscHfM/8=="#string1是改过之后的base64表string1 = "qvEJAfHmUYjBac+u8Ph5n9Od17FrICL/X0gVtM4Qk6T2z3wNSsyoebilxWKGZpRD" string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"print (base64.b64decode(str1.translate(str.maketrans(string1,string2))))#NSSCTF{a8d4347722800e72e34e1aba3fe914ae}
变异凯撒脚本
凯撒密码作为最古老的密码体制之一,相信大多数人都知道,即简单的 ...
CTF密码学常见密码形式
声明:本文基于https://cloud.tencent.com/developer/article/1748394
这篇文章进行修改,转载请注明来源,感谢支持
未写完,持续更新中……
MD5、sha1、HMAC算法、NTLM等相似加密类型
常用解密网站
https://www.somd5.com/
https://pmd5.com/
http://www.ttmd5.com/(带批量解密工具)
1、MD5——示例21232F297A57A5A743894A0E4A801FC3
一般MD5值是32位由数字“0-9”和字母“a-f”所组成的字符串,如图。如果出现这个范围以外的字符说明这可能是个错误的md5值,就没必要再拿去解密了。16位值是取的是8~24位。
根据md5加密后的特征(md5加密后是16位或者32位的字符,由字母和数字组成,字母大小写统一)可以尝试md5解密。
(TIP:有时候我们获得到的 md5 是 16 位的,其实那 16 位是 32 位 md5 的长度,是从 32 位 md5 值来的。是将 32 位 md5 去掉前八位,去掉后八位得到的)
md5的三个特征:
...
DS作业-4-Ch3-22网安物联网-20230927
声明:仅供留档查阅,仅用作起到提示引导性作用,仅用作学习交流,切勿直接照搬
Ch3-1.
总结栈空、栈满、队空、队满的判定条件。
栈和队列是两种常见的数据结构,它们的空和满的判断条件如下:
栈:
栈空:当栈顶指针top等于-1时,表示栈为空。
栈满:当栈顶指针top等于栈的最大容量减1(假设栈的最大容量为maxSize)时,表示栈已满,即top == maxSize - 1。
队列:
队空:当队头指针front等于队尾指针rear时,表示队列为空。
队满:这个判断条件取决于你如何实现队列。如果你使用数组实现循环队列,那么当(rear + 1) % maxSize == front时,表示队列已满(假设队列的最大容量为maxSize)。这里的 % 是取余运算,用于实现循环。
Ch3-2.
循环队列的优点是什么?设用数组来存放循环队列,你有几种判断队满和队空的方案?
循环队列的优点主要有以下几点:
有效利用空间:在普通队列中,当队尾指针到达数组的末端时,即使数组的前端还有空闲空间,也无法再添加新的元素。而循环队列通过将队列的首尾相连,形成一个循环,使得在队尾指针到达数组末端时 ...
DS作业-3-Ch2-22网安物联网-20230927
声明:仅供留档查阅,仅用作起到提示引导性作用,仅用作学习交流,切勿直接照搬
作业Ch2-1:
总结单链表中引入头节点的原因?
为了使操作方便,加了头结点之后,无论单链表是否为空,头指针始终指向头节点,因此空表和非空表的处理也统一了
作业Ch2-2:
编程题目,逆置一个单链表为一个新表,编制源代码并运行。
没用ai跑,自己写的,实际上原理就是头插法和尾插法,两个方法的顺序是相反的
重做了,原来的做法不符题意,虽然功能是一样的,新做法的思路↓
nizhi函数的原理是通过改变链表中节点的链接顺序来实现链表的反转。
具体步骤如下:
初始化:创建一个新的空链表(只有头节点,头节点的next指针为nullptr)。
遍历原链表:从原链表的第一个节点开始,每次处理一个节点。
插入新链表:将当前处理的节点插入到新链表的头节点之后。具体操作是先将当前节点的next指针指向新链表的第一个节点,然后再将头节点的next指针指向当前节点。
移动到下一个节点:保存下一个要处理的节点的位置,然后将当前节点从原链表中断开(也就是将当前节点的next指针置为nullptr),最后移动到下一个要处理的节点。 ...
利用Kali中的工具John破解压缩包密码(弱密码
推荐一篇文章
kali中binwalk/foremost/zip2john工具的配合使用
第一步拿到hash文件
1zip2john [压缩包文件] >> [名字.txt]
第二步解析hash文件
1john [名字.txt]
另外此处可以指定加密方式
在Kali系统中我们只需要添加–format=[xxx]参数,即可指定John使用指定算法破解密码:
1john --format=crypt passwd.txt
破解结束后无需再次对相同密文进行破解通常会提示:
Loaded [number] password hashes with [number] different salts (crypt, generic crypt([number]) [?/64])
No password hashes left to crack (see FAQ)
如果我们需要再次查看破解后的密码只需执行如下命令:
1john --show passwd.txt
1john --format=[加密方式] --wordlist=[字典路径] [待解密密文文件]
《拣爱》游戏心得
注:部分资料来自百度,部分图片来自知乎,游戏狗
游戏介绍
百度百科
拣,有选择之意。游戏中每一个场景,每一个选择都合理而有其自己的意义。它还是一款谈论爱的游戏。希望通过游戏和故事,让玩家能够感受爱,学会爱他人和爱人的方法。
这个游戏鼓励人们拥有一颗温暖柔软,善解人意的心。
《拣爱》由三个独立故事构成。完整游玩一次游戏大概需要1.5小时。
总结
对游戏的评价
首先我想先写一下我对这个游戏的评价,游戏的可玩时间并不长,毕竟是剧情向游戏,剧情过完了就没得玩了,第二游戏的剧情做得非常好,能够引发玩家引起共鸣和无限的思考,我更觉得它像是一种艺术,就像一千个人眼中有一千个哈姆雷特一样,我对游戏其中的剧情的思考有一些我也问过原作者,而原作者的回答是纯主观想法,无标准答案。是的,艺术的意义便是这样。
这个游戏引发出来的我的思考
游戏一共分三章,第一章讲的是恋爱过程中的情侣,第二章讲的是两个青梅竹马的分分合合,第三章讲的是已婚夫妻的朝夕相处
虽然我是牡丹solo,但是对我的触动也是很深刻的
第一章是我印象最深的一章,也许是因为我正处于这么一个年龄段,所引发的共鸣比较多
游戏有存档,但爱没有存档,游 ...