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实现呢?
我也想不出来了,就这样吧.....