刷题情况+本周学习内容
攻防世界(高手进阶区)刷题情况
1.Broadcast
这道题文件挺多的,但是那些文件好像都没什么用,重点还是下图画白框的地方。直接复制就过啦!
2.sherlock
这道题是一篇很长的文章,一开始并没有什么头绪,但是就是感觉它们单词里字母的大小写出现的很奇怪。比如这里:
我也参考了一些网上的wp,他们也是说突破口在这些大写字母上。 所以我就想先找出所有的大写字母,看看他们找出来。
代码如下
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream infile;
infile.open("f590c0f99c014b01a5ab8b611b46c57c.txt");
char ch;
while (!infile.eof())
{
infile.get(ch);
if (ch >= 'A' && ch < 'Z')
cout << ch;
}
infile.close();
return 0;
}
所以现在就是把ZERO改成0,ONE改成1的事情了。
然后再进行二进制转换就能得出结果了。网页如下:
http://www.txttool.com/wenben_binarystr.asp
在搜大佬的wp的时候,我也学到了在虚拟机里用命令行来找大写字母的方法,附上大佬的博客。
https://www.cnblogs.com/zhengna/p/13501455.html
3.flag_in_your_hand1
这道题拿到题目是这样的
打开第二个文件看到了网页源码,但是不知道怎么下手,然后参考了一下大佬的wp:https://www.cnblogs.com/vict0r/p/13549742.html
找到了关键代码
function ck(s) {
try {
ic
} catch (e) {
return;
}
var a = [118, 104, 102, 120, 117, 108, 119, 124, 48,123,101,120];
if (s.length == a.length) {
for (i = 0; i < s.length; i++) {
if (a[i] - s.charCodeAt(i) != 3)
return ic = false;
}
return ic = true;
}
return ic = false;
}
也就是我们需要先找出118, 104, 102, 120, 117, 108, 119, 124, 48,123,101,120
这几个数字减去3后对应的控制字符(对照ASCLL码表)
#include<stdio.h>
int main()
{
int a[12] = { 118, 104, 102, 120, 117, 108, 119, 124, 48,123,101,120 };
for (int i = 0; i < 12; i++)
printf("%c", a[i] - 3);
return 0;
}
然后就得出网页的密码,复制到网页里就能得出flag。
第四题跟第三题一样。
5.告诉你个秘密
题目如下:
这有字母有数字的,数字长度也不一样,感觉像是16进制。找了在线工具试了试果然出来了一个结果。
网页如下:https://www.sojson.com/hexadecimal.html
这个结果出来之后也是很迷茫,然后就上这个网页上试试
https://www.cmd5.com/default.aspx?hashtype=md5&answer=cWluZ21pbmcxMTI0MTUu
然后试出了结果,并且也知道了这个密码是base64。但是得出的这个答案我确实是不明白要怎么解了,这四个四个一组的,不太懂。然后我去看了看大佬的wp:
https://www.cnblogs.com/0yst3r-2046/p/11948836.html
知道了原来是看键盘上这几个字母包围的那个字母,就是题目的解TONGYUAN
6.工业协议分析2
这个题目下载出来是一个.pcapng文件,需要用wireshark打开,打开后大概看了一眼,都点了点,(也参考了点大佬的wp ,然后发现了这个地方应该是突破口。
然后直接将红框里的数据进行十六进制转换(网页上面有),得到结果。(上面的红框里的数字可以用截图,之后文字识别弄出来哦)
7.cr3-what-is-this-encryption
红框这里可以看出,有p,q,e,c,那应该是跟rsa有关,而且这些字符串都是由0x开头,那么应该第一步是十六进制转换成十进制。这里参考了大佬的脚本,网址如下:https://www.cnblogs.com/zhengna/p/13501563.html
import libnum
from Crypto.Util.number import long_to_bytes
q = int("0xa6055ec186de51800ddd6fcbf0192384ff42d707a55f57af4fcfb0d1dc7bd97055e8275cd4b78ec63c5d592f567c66393a061324aa2e6a8d8fc2a910cbee1ed9",16)
p = int("0xfa0f9463ea0a93b929c099320d31c277e0b0dbc65b189ed76124f5a1218f5d91fd0102a4c8de11f28be5e4d0ae91ab319f4537e97ed74bc663e972a4a9119307",16)
e = int("0x6d1fdab4ce3217b3fc32c9ed480a31d067fd57d93a9ab52b472dc393ab7852fbcb11abbebfd6aaae8032db1316dc22d3f7c3d631e24df13ef23d3b381a1c3e04abcc745d402ee3a031ac2718fae63b240837b4f657f29ca4702da9af22a3a019d68904a969ddb01bcf941df70af042f4fae5cbeb9c2151b324f387e525094c41",16)
c = 0x7fe1a4f743675d1987d25d38111fae0f78bbea6852cba5beda47db76d119a3efe24cb04b9449f53becd43b0b46e269826a983f832abb53b7a7e24a43ad15378344ed5c20f51e268186d24c76050c1e73647523bd5f91d9b6ad3e86bbf9126588b1dee21e6997372e36c3e74284734748891829665086e0dc523ed23c386bb520
n = q*p
d = libnum.invmod(e, (p - 1) * (q - 1)) # 取模
m = pow(c, d, n) # m 的十进制形式
string = long_to_bytes(m) # m明文
print(string) # 结果为 b‘ m ’ 的形式
8.banana-princess
这道题是一个打不开的PDF,然后我强行用notepad++打开了一下,并且也打开了一个能正常打开的pdf做对比。
感觉上应该是做了一个移位,那我就先试了试凯撒密码。
确实,这就是进行了一个凯撒加密后的结果,但是要怎么把一个文档里的东西进行移位,我确实不会。然后我参考了一下大佬的wp,知道了可以在虚拟机上操作,只要在终端用这行命令。
cat 1.pdf | tr ‘A-Za-z’ ‘N-ZA-Mn-za-m’ > 9e45191069704531accd66f1ee1d5b2b.pdf
cat命令用于连接文件并打印到标准输出设备上。
tr命令常被用来更改字符。用来做字符的查找和替换操作。
‘A-Za-z’ ‘N-ZA-Mn-za-m’ 这个是正则表达式,第一个单引号里的是表示大小写字母至少匹配一次。这整个正则表达式其实是用来解码rot13的。我们刚刚也尝试了,发现确实是移动了13位,所以这个表达式能用来解这个题目。
https://blog.csdn.net/weixin_44604541/article/details/111151845?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-2&spm=1001.2101.3001.4242
然后得出了一张图片,之后用pdftohtml看到了覆盖着的地方。
网址如下:
https://github.com/coolwanglu/pdf2htmlEX
(我也不知道为什么,大佬们可以用拉出来的方式看到覆盖的地方,我怎么拖都是一个黑框的图片QAQ)
9.Decrypt-the-Message
这道题也是拿到了个比较长的类似诗句的题目,但是无从下手,然后只能去找大佬的wp看。
网页如下:
https://blog.csdn.net/dchua123/article/details/105470394/
先把工具下载下来,然后放到同级目录下。分别把上面的诗歌和下面的信息放到poem和chip这两个地方。如果是写的txt文件,记得把文件名带上。(记得把题目里诗歌末尾的句号删掉,我是不会承认我没注意,耗费了很多时间在这上面的 )
然后跑出来是这样的,最后找到了最像是答案的一行。
buuctf刷题情况
17.大帝的密码武器
这道题下载下来是这样的
也不知道从哪里先开始,所以就先用notepad++打开一下这个文件。
然后看到了突破口应该是_MACOSX这个东西,上网搜了一下发现它经常在压缩包里出现,然后结合这个问价名也叫做zip,所以首先先改文件名。
这题目里有罗马,以他的名字命名,这些能得出应该是凯撒加密,题目还说是用相同的加密向量加密,那也就是先找到FRPHEVGL
->可能的答案所移动的位数,然后用相同的位数将ComeChina
移位得出答案。
18.Windows系统密码
这道题做起来比较迷惑,首先是用notepad++打开,然后得到这个。
看到这些字符串,其实首先我会想到直接拿着其中的某一段去进行解码,并且用这个方式也真的能做出来。(多试几个就能做出来,而且是对的)
但是其实在网上也有看到是用虚拟机里的John the Ripper解的。网址如下:
https://www.cnblogs.com/junlebao/p/13828280.html
我也试了试,也能成功。
19.cat_flag
这道题真的超级可爱!题目就是一张很可爱的照片。
但是看着可爱的猫猫也不知道该怎么办呀,但是数了数行数,一行有8个,然后猫猫也只有两种状态,想了想应该是二进制。将吃寿司的小猫设为0,吃鸡腿的小猫设成1,然后得到下面的结果。
01000010010010100100010001111011010011010010000101100001001100000111111001111101
然后将二进制->十六进制->文本,得出答案。
20.燕言燕语-y1ng
这题做起来还是很快的,拿到题之后直接进行十六进制转换。
然后这里有两个字符串,而且第二个感觉像是答案进行移位的字符串。所以想到了Vigenère,之后直接得出答案。
网页如下:
http://www.metools.info/code/c71.html
本周学习内容
刷了上面的题目之后,我发现我对kali的使用不太了解,所以我又去学习了一下。它自带的一些工具的使用。主要还是想通过刷题找出怎么解终极任务的方法。然后也在同步的看相关的书。