2.9学习(虚拟机终端解压,base64换表,base32特点)

misc 

buu-面具下的flag

下载附件,得到了一个图片,我们用尽各种办法,都没得到信息,试试文件分离,成功得到了一个zip ,可以看到它含有一个文件名叫flag,是一个vmdk文件

 那么我们需要将其解压,但是这个题在windows系统里根本解压不了,需要密码,即使是破解也破不了,且看这个包含的文件的后缀就可以知道win系统开不了flag,所以还是在虚拟机中。

然后查阅网上看怎么解压文件

tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
———————————————
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
———————————————
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
———————————————
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz

.tar.bz
解压:tar jxvf FileName.tar.bz
———————————————
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
———————————————
.tgz
解压:tar zxvf FileName.tgz

.tar.tgz
解压:tar zxvf FileName.tar.tgz
压缩:tar zcvf FileName.tar.tgz FileName
———————————————
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
———————————————
.rar
解压:rar a FileName.rar
压缩:rar e FileName.rar
———————————————
.lha
解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName

7z命令的使用

1. 解压缩7z文件

7za x phpMyAdmin-3.3.8.1-all-languages.7z -r -o./

参数含义:

x  代表解压缩文件,并且是按原始目录树解压(还有个参数 e 也是解压缩文件,但其会将所有文件都解压到根下,而不是自己原有的文件夹下)

phpMyAdmin-3.3.8.1-all-languages.7z  是压缩文件,这里我用phpadmin做测试。这里默认使用当前目录下的phpMyAdmin-3.3.8.1-all-languages.7z

-r 表示递归解压缩所有的子文件夹

-o 是指定解压到的目录,-o后是没有空格的,直接接目录。这一点需要注意。

2. 压缩文件/文件夹

7za a -t7z -r Mytest.7z /opt/phpMyAdmin-3.3.8.1-all-languages/*

参数含义:
a  代表添加文件/文件夹到压缩包

-t 是指定压缩类型,这里定为7z,可不指定,因为7za默认压缩类型就是7z。

-r 表示递归所有的子文件夹

Mytest.7z 是压缩好后的压缩包名

/opt/phpMyAdmin-3.3.8.1-all-languages/*:是压缩目标。

注意:7za不仅仅支持.7z压缩格式,还支持.tar.bz2等压缩类型的。如上所述,用-t指定即可。

但是我试过了,用unzip解压不了,所以我们又用

7z x 74DFE.zip -o./

来解压文件,得到了flag那个文件 但是得到了这个flag文件后依然还需要解压,于是又用命令

7z x flag.vmdk -o./

提取其中的文件,得到了几个文件,可以看到文件名含有key和flag 

 key_part_one

打开后是一个文本文件,得到的是 brainfuck密文,解密得到一部分的明文

key_part_two

其中包含的两个文本文件,打开后第一个是没有的,第二个才是我们的密文是ook密码,同样在线工具解密

crypto

buu-Cipher

打开题目即密文,看的懵,没有提示,又说密钥自己找。这里注意到了密钥自己找,那就是密钥在题目里,能有可能的是"公平的玩吧“这一句,那么首先想到是英文,翻译后得到playfair,搜索一下得到了一种密码。那么就是这种密码了,搜索在线工具Playfair Cipher - A.Toolskey就是playfair,试试,得到明文,提交,成功

buu-[WUSTCTF2020]佛说:只能四天

得到文本文件后一个提示我们在后面解密发现是新约,导致用bugku的解不了。

得到社会主义核心价值观的密文后再解码这解得的明文后面有一句“do you know fence”,fence是围栏的意思,那么就是又一步的栅栏密码,将后面的提示句删掉,枚举解密,看到一句特殊的再将这句复制后用凯撒解密,注意有一个提示文件,说凯撒不是最后一个,by the way(三个单词,先试试偏移量为3),然后仔细观察明文观察这里的字母与数字,数字仅限2~7,猜是base32编码

buu-[BJDCTF2020]这是base??

下载附件后得到了一个文本文件,其中包含一个dict(python的字典),一个是base64编码

dict:{0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U', 9: 'V', 10: 'z', 11: 'A', 12: 'B', 13: 'C', 14: 'D', 15: 'E', 16: 'F', 17: 'G', 18: 'H', 19: '7', 20: '8', 21: '9', 22: 'P', 23: 'Q', 24: 'I', 25: 'a', 26: 'b', 27: 'c', 28: 'd', 29: 'e', 30: 'f', 31: 'g', 32: 'h', 33: 'i', 34: 'j', 35: 'k', 36: 'l', 37: 'm', 38: 'W', 39: 'X', 40: 'Y', 41: 'Z', 42: '0', 43: '1', 44: '2', 45: '3', 46: '4', 47: '5', 48: '6', 49: 'R', 50: 'S', 51: 'T', 52: 'n', 53: 'o', 54: 'p', 55: 'q', 56: 'r', 57: 's', 58: 't', 59: 'u', 60: 'v', 61: 'w', 62: '+', 63: '/', 64: '='}

chipertext:
FlZNfnF6Qol6e9w17WwQQoGYBQCgIkGTa9w3IQKw

首先将字典的values提取出,在Python中写脚本

dict={0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U', 9: 'V', 10: 'z', 11: 'A', 12: 'B', 13: 'C', 14: 'D', 15: 'E', 16: 'F', 17: 'G', 18: 'H', 19: '7', 20: '8', 21: '9', 22: 'P', 23: 'Q', 24: 'I', 25: 'a', 26: 'b', 27: 'c', 28: 'd', 29: 'e', 30: 'f', 31: 'g', 32: 'h', 33: 'i', 34: 'j', 35: 'k', 36: 'l', 37: 'm', 38: 'W', 39: 'X', 40: 'Y', 41: 'Z', 42: '0', 43: '1', 44: '2', 45: '3', 46: '4', 47: '5', 48: '6', 49: 'R', 50: 'S', 51: 'T', 52: 'n', 53: 'o', 54: 'p', 55: 'q', 56: 'r', 57: 's', 58: 't', 59: 'u', 60: 'v', 61: 'w', 62: '+', 63: '/', 64: '='}
l=''
for value in dict.values():
    l=l+value
print(l)
    

先了解一个知识

base64与base64换表

标准的base64加解密所用表是【ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/】刚好64个字符

如果对标准表中的字符进行顺序替换,称之为base64换表

    对于标准表的base64,可以直接用编程语言提供的解密函数直接解密或者使用在线网站解密等
    对于换表base64,需要多做一步映射,将换表的字符映射回标准表,然后再进行解密

怎么映射呢?拿本题来举例,换表是【qvEJAfHmUYjBac+u8Ph5n9Od17FrICL/X0gVtM4Qk6T2z3wNSsyoebilxWKGZpRD】

密文是【5Mc58bPHLiAx7J8ocJIlaVUxaJvMcoYMaoPMaOfg15c475tscHfM/8==】

密文中第一个字符是5,在换表中的索引(下标)为19,而在标准表中,索引19处的字符为【'T'】

密文中第二个字符是M,在换表中的索引(下标)为37,而在标准表中,索引19处的字符为【'l'】

以此类推,完成映射

映射可以通过自写循环来实现,也可以直接使用字符串函数translate

这里就可以理解我们这道题确实是base64编码,但是表却不是,所以我们仅是使用在线工具解不了,需要脚本

import base64
import string
str1='FlZNfnF6Qol6e9w17WwQQoGYBQCgIkGTa9w3IQKw'
string1='JKLMNOxyUVzABCDEFGH789PQIabcdefghijklmWXYZ0123456RSTnopqrstuvw+/'
string2='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
print(base64.b64decode(str1.translate(str.maketrans(string1,string2))))

 string2是我们的标准表,最后一行代码将str1中的字符按照string1string2的映射进行转换,然后对转换后的字符串进行Base64解码。

换表具体的示例:str1[]=F,对应string1为16位,那么真正的编码是Q

再如str1[2]=Z,所以原编码应该是p

如此运行后得到flag(明文) 

re

buu-内涵的软件

查壳32位,用ida打开后查看main函数,直接得到了flag

web

bugku-eval

打开环境,看到php代码,我们分析一下

    include "flag.php";  #包含文件flag.php
    $a = @$_REQUEST['hello'];  #从请求参数“hello”获值并赋给a
    eval( "var_dump($a);");   #用eval函数对变量a进行求值并用var_dumpd打印出来
    show_source(__FILE__);    #使用show_source函数显示当前文件的源代码。

?>

传参,直接访问文件 得到flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值