信安小组暑假作业
web安全作业 2019年8月11日
(由于markdown 的文件要上交,所以就不插入图片了,也不知道图片传来传去就传没了)
题目一摩斯密码
.. .-.. --- ...- . -.-- --- ..-
从CSDN上找到的摩斯密码转换代码:原理为使用字典,直接进行转换
python代码
from __future__ import print_function
a = input("input the string:")
s = a.split(" ")
dict = {'.-': 'A',
'-...': 'B',
'-.-.': 'C',
'-..':'D',
'.':'E',
'..-.':'F',
'--.': 'G',
'....': 'H',
'..': 'I',
'.---':'J',
'-.-': 'K',
'.-..': 'L',
'--': 'M',
'-.': 'N',
'---': 'O',
'.--.': 'P',
'--.-': 'Q',
'.-.': 'R',
'...': 'S',
'-': 'T',
'..-': 'U',
'...-': 'V',
'.--': 'W',
'-..-': 'X',
'-.--': 'Y',
'--..': 'Z',
'.----': '1',
'..---': '2',
'...--': '3',
'....-': '4',
'.....': '5',
'-....': '6',
'--...': '7',
'---..': '8',
'----.': '9',
'-----': '0',
'..--..': '?',
'-..-.': '/',
'-.--.-': '()',
'-....-': '-',
'.-.-.-': '.'
};
for item in s:
print (dict[item],end='')
#print (s)
程序运行效果
input the string:.. .-.. --- ...- . -.-- --- ..-
ILOVEYOU
题目二URL编码
%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d
代码
python有直接的url解码 编码的库 urllib.parse,直接调用即可
quote()编码;
unquote()解码;
import urllib.parse
s=input('输入url解码字符串')
print(urllib.parse.unquote(s))
程序运行结果
输入url解码字符串%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d
flag{and 1=1}
题目二URL编码
题目三看我回旋踢?
synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}
这道题是凯撒加密(别问我怎么知道的,我是查的),但是我猜测一般情况下,这种题都是 flag{XXXX}之类的答案,这道题应该就是 falg》synt 偏移量13
所以
写了一个凯撒加密,偏移量13
代码
s=input('凯撒加密字符串')
n=eval(input('偏移量(这道题是13)'))
for i in s:
if(ord(i)< 97 or ord(i)> 122):
print(i,end='')
else:
d=(ord(i)-97+26-n)%26
print(chr(d+97),end='')
运行效果
凯撒加密字符串synt{5pq1004q-86n5-46q8-o720-oro5on0417r1} 偏移量(这道题是13)13
flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1}
题目四MD5
e00cf25ad42683b3df678c61f42c6bda
因为md5是一种类似于有损压缩的加密算法,所以没有可以直接解密的算法。
只能去撞库。
通过一些百度上搜到的md5解密网站,可以直接破解出,上面密码解密为admin1,但是题目要求使用python完成,那么就通过发送md5解密网站的请求去破解?
可以试试这么做
我找到这个网站会破解MD5并返回答案在html中显示,就想到了用爬虫去做这道题
https://md5.gromweb.com/?md5=e00cf25ad42683b3df678c61f42c6bda
?后面直接放置需要破解的md5字符串,所以可以直接用python爬虫 爬取网站后缀上需要破解的md5值就行了。
爬完之后,返回的答案,藏在
< e m class="long-content string">admin1</ e m></ p>这样的标签 中
所以查了一下用正则表达式
print(re.findall(r'<em class="long-content string">(.+?)</em></p>',r.text))
输出出来
破解代码
import requests
import re
s=input('破解的md5:')
url = 'https://md5.gromweb.com/?md5='+s
try:
r = requests.get(url,timeout=20)
r.raise_for_status()
r.encoding = r.apparent_encoding
except:
print('网络异常或页面未找到,请重试')
print(re.findall(r'<em class="long-content string">(.+?)</em></p>',r.text))
最终效果
破解的md5:e00cf25ad42683b3df678c61f42c6bda
['admin1']
题目五 Rabit
U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI
在这个网站
https://www.sojson.com/encrypt_rabbit.html
直接解密
得到
Cute_Rabbit
怎么非要用python实现呢?
我也想不出来了,就这样吧.....