实验吧-杂项-pilot-logic、ROT-13变身了

news/2024/7/5 20:02:03 标签: python, 密码学

1、pilot-logic

题上说password藏在文件里,直接丢到Winhex里,搜索pass就拿到flag了。

有的大佬提供了另一种方法,题上说是一个磁盘文件,有一个处理磁盘文件的软件autopsy,不过这个软件有点大(超过500M),可以直接导入后就能看到flag了。

 

2、ROT-13变身了

ROT13(回转13位,rotate by 13 places,有时中间加了个连字符称作ROT-13)是一种简易的替换式密码。

原理:(摘自百度百科)

套用ROT13到一段文字上仅仅只需要检查字元字母顺序并取代它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可。A换成N、B换成O、依此类推到M换成Z,然后序列反转:N换成A、O换成B、最后Z换成M。只有这些出现在英文字母里头的字元受影响;数字、符号、空白字元以及所有其他字元都不变。因为只有在英文字母表里头只有26个,并且26=2×13,ROT13函数是它自己的逆反: [1] 

对任何字元x:ROT13(ROT13(x))=ROT26(x)=x

换句话说,两个连续的ROT13应用函式会回复原始文字(在数学上,这有时称之为对合(involution);在密码学上,这叫做对等加密(reciprocalcipher))。

转换可以利用查找表完成,如下例所示:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm

例如,下面的英文笑话,精华句为ROT13所隐匿:

How can you tell an extrovert from an

introvert at NSA?Va gur ryringbef,

gur rkgebireg ybbxf ng gur BGURE thl'f fubrf.

透过ROT13表格转换整片文字,该笑话的解答揭露如下:

Ubj pna lbh gryy na rkgebireg sebz na

vagebireg ng AFN?In the elevators,

the extrovert looks at the OTHER guy's shoes.

第二次ROT13函数将转回原始文字。

 题目给了我们一串ascii,直接rot13解密不行的,需要先将ASCII减13后再rot13解密。

写个程序吧ASCII每个都减13(这个从文件in.txt读取的,感觉python不太好像,于是用了C++):

#include<cstdio>
int main()
{
	freopen("in.txt", "r", stdin);
	int a;
	while(~scanf("%d",&a)){
		printf(" %d", a-13);
	}
 } 

结果是:

70 76 65 71 32 73 83 32 102 108 97 103 123 119 119 119 95 115 104 105 121 97 110 98 97 114 95 99 111 109 95 105 115 95 118 101 114 121 95 103 111 111 100 95 63 63 63 63 125 10 77 68 53 58 51 56 101 52 99 51 53 50 56 48 57 101 49 53 48 49 56 54 57 50 48 97 97 99 51 55 49 57 48 99 98 99

再去转成字符串:FLAG IS flag{www_shiyanbar_com_is_very_good_????}MD5:38e4c352809e150186920aac37190cbc

可以看到,已经出flag了,不过是一部分,后面有个md5,应该是那四个?部分的字符,这个MD5在许多网站上都是无法查询的,于是用python爆破:

python">import hashlib

dic = '@[\]^_`{|}~!#$%&()*+,-./:;<=>?0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
strs = '38e4c352809e150186920aac37190cbc'

for a in dic:
    for b in dic:
        for c in dic:
            for d in dic:
                s = 'flag{www_shiyanbar_com_is_very_good_' +str(a)+str(b)+str(c)+str(d)+'}'
                m = hashlib.md5()
                m.update(s.encode())
                if m.hexdigest()==strs:
                    print('Yes')
                    print(s)
                    exit()
                else:
                    print(s)

刚开始还以为????代表的四个字符加密后是那串MD5,最后才知道是整个flag。

得到flag:

转载于:https://www.cnblogs.com/RenoStudio/p/10541881.html


http://www.niftyadmin.cn/n/929237.html

相关文章

php.ini三大危险变量审计--

第一个特性: safe_mode 在php 5.4.x之前的版本是没关的&#xff0c;&#xff0c;这里按xx牛的意思做个演示&#xff0c;咱们怎么利用&#xff1f; 1.首先我们新建一个cmdcmdcmd_GET[‘cmd’];//获取系统cmd变量 然后放到web根目录下&#xff0c;执行 ppp.php?cmdipconfig 然…

理解操作系统之进程和线程

在操作系统中&#xff0c;设定了进程和线程的概念去描述程序并发执行逻辑。本文属于研究进程和线程的入门级文章。 主要从以下五个方面介绍进程以及线程的相关概念。 进程和线程的定义操作系统中对进程和线程的描述进程的多层调度进程/线程之间的同步机制进程/线程之间的通信机…

Mysql 密码修改

方法1&#xff1a; 用SET PASSWORD命令 首先登录MySQL。 格式&#xff1a;mysql> set password for 用户名localhost password(新密码); 例子&#xff1a;mysql> set password for rootlocalhost password(123); 方法2&#xff1a;用mysqladmin 格式&#…

php审计中的超全局变量

$_POST $_GET $GLOBALS $_REQUEST $_SERVER $_FILES $_COOKIE $_SESSION 这里$_COOKIE 和_SESSION直接做个演示。 <?php session_start(); //登录&#xff0c;某文件会给变量配一个值&#xff0c;我们伪造123 //如果123$_SESSION内的值&#xff0c;那么我们就能绕过一部分…

25、【支付模块开发】——将配置好的支付宝沙箱环境集成到我们的项目中以及支付接口的编写...

1、将支付宝Demo中的相关文件复制到我们的项目中&#xff1a; 首先&#xff0c;我们将Demo中src中的包及里面的文件复制到我们项目中 image.png同样&#xff0c;我们也要讲zhifubao.properties这个配置文件方法我们项目中的 resources目录下&#xff1a;image.png加下来就是我们…

php审计-最经典的_GET[‘id‘]和POST[‘id‘]注入

这里&#xff0c;_GET[‘id’]和_POST[‘id’]很多人都知道&#xff0c;&#xff0c; 但我们做php审计&#xff0c;后面的宽字节注入和二次注入都会和mysql交互&#xff0c;那审计这两段源码就非常重要。 这里建个php,放到www下面, GET型 如果下面不带前端源码&#xff0c;写成…

Vue安装ant-design-vue和ElementUI

前提已经安装了git和node下 使用命令: npm install ant-design-vue --save 复制代码 或者 yarn add ant-design-vue 复制代码 安装ant-design-vue相关插件之后&#xff0c;然后在项目的核心文件引入相关的东西&#xff0c;在src目录下的main.js引入 import Antd from ant-desi…

Flutter通过底部导航栏实现页面的跳转

放自己定义的BottomNavigationWidget 这个组件的核心代码 import package:flutter/material.dart; import pages/home.dart; import pages/map.dart; import pages/timer.dart;void main(){runApp(BottomNavigationWidget()); }class BottomNavigationWidget extends StatefulW…