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

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爆破:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值