目录
Basic
1 linux labs
Crypto
1 MD5
这道题主要考查的是ssh的知识,需要远程用ssh连接上这台虚拟机。
题目中给了地址、端口、账号和密码
打开了这个网页之后其实并没有什么用。
我们需要通过主机cmd去用ssh链接
格式是:ssh -p 端口 用户名@网址
然后输入yes和密码,就成功连接上。
先用ls命令看看有什么东西没有,发现没有返回的东西,说明一开始就进去了一个空的文件夹。
这时我们可以用cd..这个命令去返回上一级
然后再用ls查看,发现一个flag.txt文件,用cat命令进行查看,就可以看到flag了
题目中其实已经给出来了提示 LFI(Local File Include)
这就是php文件包含类型题目【程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,无需再次编写,这种文件调用的过程一般被称为文件包含】
文件包含在 php 中,涉及到的危险函数有四个: include()、include_once()、require()、require_once()。
include:包含并运行指定的文件,包含文件发生错误时,程序警告,但会继续执行。
include_once:和 include 类似,不同处在于 include_once 会检查这个文件是否已经被导入,如果已导入,下文便不会再导入。
require:包含并运行指定的文件,包含文件发生错误时,程序直接终止执行。
require_once:和 require 类似,不同处在于 require_once 只导入一次。
当利用这四个函数来包含文件时,不管文件是什么类型(图片、txt等等),都会直接作为php文件进行解析。在本题的PHP代码中即可看到include函数
因为文件路径可控,当输入系统的密码文件所在路径时,内容会输出出来
所以直接在url后面构造/?file=/flag即可
下载这个压缩包,解压之后题目就在里面
网上搜一个一个MD5解密的网站
直接复制扔进去解密就好了
提交的时候记得加上flag{}
flag就是flag{admin1}
这串编码中有“=”,说明应该是base64编码
题目提示的很清楚了,是url解密
看到这个题目“回旋踢”应该能够联想到凯撒密码,因为凯撒密码的关键词就是“回旋踢”“回转”之类的,而且格式是synt{},可以联想到应该是flag{},所以应该是凯撒密码,并且移动了13位,是rot13编码。
这个就是很明显很普通的摩斯密码了,扔到在线解密网站解密去
这道题其实有个坑,就是解密出来的都是小写,但是flag交上去的时候要全部换成大写,而且我在不同网站解密出来的竟然不一样,其他有的网站解密出来很抽象,上图解密出来的比较正常一些,应该就是答案。
这道题目太抽象了,我刚拿到一头雾水,谁能想到flag就是zs19900315呢,竟然就是首字母加上生日,这道题真的不知道怎么解释。
既然是凯撒密码,关键点就是需要找到移动的位数就行了
通过对照ASCII码可以发现第一个a和f移动了5位,第二个f和l移动了6位,第三个Z和a移动了7位,以此类推每一位都多移动一位,所以可以对照着ASCLL码把flag推算出来是flag{Caesar_variation}
这边先介绍一些这个编码:
任何一个8位的字节值可编码为3个字符:一个等号”=”后跟随两个十六进制数字(0–9或A–F)表示该字节的数值.例如,ASCII码换页符(十进制值为12)可以表示为”=0C”, 等号”=”(十进制值为61)必须表示为”=3D”. 除了可打印ASCII字符与换行符以外,所有字符必须表示为这种格式.
所有可打印ASCII字符(十进制值的范围为33到126)可用ASCII字符编码来直接表示, 但是等号”=”(十进制值为61)不可以这样直接表示.ASCII的水平制表符(tab)与空格符, 十进制为9和32, 如果不出现在行尾则可以用其ASCII字符编码直接表示。如果这两个字符出现在行尾,必须QP编码表示为”=09″ (tab)或”=20″ (space).
quoted-printable编码的数据的每行长度不能超过76个字符. 为满足此要求又不改变被编码文本,在QP编码结果的每行末尾加上软换行(soft line break). 即在每行末尾加上一个”=”, 但并不会出现在解码得到的文本中.
由此可知简单来说的话就是三个为一组的,以“=”开头的ASCII字符编码。
根据题目可知是rabbit解码
这道题中因为答案是flag{}的格式,题目中给的依稀是可以看出来flag的,可以看出来应该是两个字母一组取前面那个,所以推测是栅栏密码
这个说实话,就开始考验计算能力了
n = p * q
ø(n) = (p - 1) * (q - 1)
ed ≡ 1 mod ø(n)
c = m**e mod n
m = c**d mod n
这道题用到前三个公式就可以解出来,知道公式之后感觉就像数学题目一样。
flag{125631357777427553}
下载之后得到一段python代码
先运行一下,发现报错是因为算法之前没有编码,上网查了一下之后,发现要在第六行update的括号里面每一项后面都要加上 .encode('utf-8'),然后最后print的des也要加上个括号
然后再运行一下
先得把这两个素数给找出来
然后再去md5加密一下
得到flag