BUUCTF_Misc题目题解记录
Posted 好想变强啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BUUCTF_Misc题目题解记录相关的知识,希望对你有一定的参考价值。
BUUCTF刷题Misc篇
文章目录
前言
仅记录解题步骤,方便自己没事儿的时候拿出来强化一下记忆,俗话说好记性不如烂笔头,祝我早日卷赢同事(?
有没有和我一样用M1芯片,装不了工具,用不惯虚拟机,做不动杂项(那就更不要说pwn了)的大冤种?看过来呜呜呜呜呜……
一、ningen
1.下载的附件是一张图片(.jpg),在macOS下的“终端”输入命令:
strings 图片文件名.jpg
可以看到显示的内容最后有txt文件。
2.到kali下用命令:
binwalk -e 图片文件名.jpg
就可以分离出压缩文件9721.zip,可以看到压缩包里面有一个ningen.txt文件,需要密码才能打开。
3.接下来可以在Windows下用Advanced Archive Password Recovery(ARCHPR)爆破密码啦,但我因为某个原因把win11虚拟机删除了,所以就还是在kali下,借助的是fcrackzip工具,按照题目中密码是四位数字的提示,用命令:
fcrackzip -b -c ‘1’ -l 4 -u 9721.zip
据说这里-b代表爆破模式,-c '1’代表是用数字爆破,-l 4代表爆破长度是4位
(真是不如win下用图形化来得快啊呜呜呜但是敲命令行酷啊
然后瞬间就爆破出密码了,放图纪念~
拿这个密码打开txt文件,拿到flagb025fc9ca797a67d2103bfbc407a6d5f
二、小明的保险箱
1.下载附件是一个有着保险箱图案的jpg图片文件
2.本mac用户的思维定势流程:先用strings命令看看里面会有啥东西
3.上一步中果然看到这里面也有txt文件,那就丢进kali用 binwalk -e 分离一下文件
4.果然可以得到上一步分离出的一个rar压缩文件
5.到这里就尴尬了,fcrackzip只能破解zip密码啊
6.然后就去找有没有能爆破rar文件密码的工具,看到了rarcrack,以为和fzipcrack差不多呢结果差挺多……用命令:
rarcrack 1381F.rar —threads 20 --type rar
这个工具用的命令是真的无语,直接开始爆破的话是字母数字混着的,从两位到三位慢慢爆破,眼看这四位纯数字明明很简单却怕是要爆破失败,就赶紧去搜了搜,发现是在爆破开始后桌面上会出现一个.xml文件,修改这个文件的内容只剩下数字就行了,然后发现下面一行是current可能表示的是当前爆破到多少了,就手动改成从四位数字0000开始吧。
PS:我理解的这个工具的用法就是先开始爆破,开始爆破后稍等一下就结束爆破,然后去按自己的需求修改xml文件再重新开始爆破。
还有就是这里threads我是试了个20,好像提示的是现在的情况适合12,最后就是还需要指明文件type是rar。
用密码打开rar中的txt,拿到flag75a3d68bf071ee188c418ea6cf0bb043
这里十分建议还是用win下的ARCHPR吧!
三、爱因斯坦
1.得到一个压缩包,解压后有一张爱因斯坦的图片,老套路strings看一下图片文件的内容,有flag.txt
2.去kali用binwalk -e分离出压缩包,是个zip
3.想去爆破密码,然后一想,不对啊没给关于密码的提示,试了四位数字也没爆破出来
4.去找别人wp,知道了是在Windows下对图片文件右键属性,选择详细信息之后看到备注里面this_is_not_password
5.用this_is_not_password作为解压密码,打开了flag.txt拿到flagdd22a92bf2cceb6c0cd0d6b83ff51606
后来想了下mac下能咋办呢?发现可以用Stegsolve里的文件格式分析:
四、easycap
1.题目附件是压缩包,解压后里面是一个pcap文件,直接用wireshark打开
2.看到全是TCP流
3.本人目前的知识储备就是只知道找到其中一条,右键,追踪流
4.没想到随便点一条去追踪流都能看到flag……
五、隐藏的钥匙
strings 图片名.jpg后,发现内容里有比较长的东西闪过
其实就是给出了flag的base64形式
这倒是很符合“隐藏的钥匙”
base64解码得到flag:
PS:无论是用strings命令,还是用010editor等工具查看文件内容,都可以先试试搜索一下“flag”,虽然现在可能很少有这么直接的题目了……
以010为例放个图:
六、另外一个世界
解压附件后是一张芝麻街甜饼怪的图片文件monster.jpg,strings一下或者010打开也行,最后是一串01二进制数01101011011011110110010101101011011010100011001101110011
丢进工具解密就好啦(这一次CyberChef表现不错,很智能,给个赞~
虽然得到的结果有点短,但flag真的就是koekj3s
也可以自己写个Python小脚本:
也许“另外一个世界”说的就是01二进制的世界吧~
总结
在写博的过程中,我的win11虚拟机重装好啦。又可以用ARCHPR爆破压缩包密码啦。
所以说不能懒啊,一定要克服懒惰迈出第一步。工具越是完备,虚拟机用得越熟练,甚至是电脑桌面和文件的清晰有条理,都能让人更愿意去学习,形成一种正反馈;反之,文件存放的越混乱,学习东一块西一块的而不去总结,问题积攒越多,会变得更懒更不想动,就会继续恶性循环。
Red and Black POJ - 1979(题解)
原题
http://poj.org/problem?id=1979
题目大意
题目是讲给一张图,然后这张图里一个‘@‘的字符表示起点,‘.‘是黑瓦(可移动到该位置),‘#‘是红瓦片(不可移到该位置),然后问可以到达的位置有多少个,包括起点.
题目分析
dfs模板题,可以当作练习基本的dfs,读入地图的时候顺便记录起点的位置,然后从起点开始dfs,走过的位置顺便标记为‘#‘,防止重复走,记录走过的步数即可.具体dfs可看代码.
代码
1 #include <cstdio> 2 #include <cmath> 3 #include <iostream> 4 #include <cstring> 5 #include <algorithm> 6 #include <vector> 7 #include <string> 8 #include <utility> 9 #include <queue> 10 #include <stack> 11 const int INF=0x3f3f3f3f; 12 using namespace std; 13 14 char a[20][20]; 15 int ans; 16 17 void dfs(int x,int y,int w,int h) 18 { 19 a[x][y]=‘#‘; //到达的地方标记为‘#‘防止走重复的路 20 ans++; //每走一步ans++ 21 int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1}; //枚举前进方向 22 int nx,ny; 23 for(int k=0;k<4;k++) 24 { 25 nx=x+dx[k],ny=y+dy[k]; 26 if(nx>=0&&nx<h&&ny>=0&&ny<w&&a[nx][ny]==‘.‘) dfs(nx,ny,w,h);//防止越界 27 } 28 } 29 30 int main() 31 { 32 int w,h; 33 cin>>w>>h; 34 getchar(); 35 while(w&&h) 36 { 37 int i0,j0; 38 ans=0; 39 memset(a,0,sizeof(a)); 40 for(int i=0;i<h;i++) 41 for(int j=0;j<w;j++) 42 { 43 cin>>a[i][j]; 44 if(a[i][j]==‘@‘) i0=i,j0=j; 45 } 46 dfs(i0,j0,w,h); 47 cout<<ans<<endl; 48 cin>>w>>h; 49 } 50 51 return 0; 52 }
以上是关于BUUCTF_Misc题目题解记录的主要内容,如果未能解决你的问题,请参考以下文章