Bugku-一段Base64-Writeup
bugku - 一段Base64 - Writeup
题目:

分析:
本来看到题目名字和分数以为是一道水题,后来解的时候才发现有这么多编码方式,当然如果熟悉这些编码方式找在线工具解得话很快就能拿到flag,这篇writeup主要是记录一下用python实现所有解码
直接上脚本,分析过程和编码方式都在注释中
#coding:utf-8
#python 2.7
import urllib
import re #1. 第一层base64
with open('base64.txt') as f:
cipher1 = f.read()
plain1 = cipher1.decode('base64')
# print plain1, type(plain1) #2. 第二层,根据plain1的形式(0-7的整数),推测为8进制加密
cipher2 = plain1
cipher2 = re.findall(r'\d+', cipher2)
# print cipher2
plain2 = ''
for i in cipher2:
plain2 += chr(int(i, 8))
# print plain2 #3. 第三层,根据plain2的形式(\xdd),推测为16进制加密
cipher3 = plain2
cipher3 = re.findall(r'\d+', cipher3)
# print cipher3
plain3 = ''
for i in cipher3:
plain3 += chr(int(i, 16))
# print plain3 #4. 第四层,根据plain3的形式(udd*),推测为unicode
cipher4 = plain3
cipher4 = re.findall(r'u[\d\w]+', cipher4)
# print cipher4
cipher4 = ''.join(cipher4).replace('u', '\u')
# print cipher4
plain4 = cipher4.decode('unicode-escape').encode('utf-8')#将unicode转中文,来自知乎
# print plain4 #5. 第5层,根据plain4形式,将所有数字转ASCII即可
cipher5 = plain4
cipher5 = re.findall('\d+', cipher5)
# print cipher5
plain5 = ''
for i in cipher5:
plain5 += chr(int(i))
# print plain5 #6. 第6层,百度plain5的编码格式(&#x)得到解码方法
cipher6 = plain5
# print cipher6
cipher6 = re.findall(r'\d+\w?', cipher6)
# print cipher6
plain6 = ''
for i in cipher6:
plain6 += chr(int(i, 16))
# print plain6 #7. 第7层,百度plain6的编码格式(&#)得到解码方法
cipher7 = plain6
cipher7 = re.findall('\d+', cipher7)
# print cipher7
flag = ''
for i in cipher7:
flag += unichr(int(i))
# print flag
flag = urllib.unquote(flag)
print flag
运行得到flag

再次声明:此题没有必要完全用python实现,此篇writeup只是为了记录python的解密脚本
Bugku-一段Base64-Writeup的更多相关文章
- Bugku一段base64
本文转自:本文为博主原创文章,如有转载请注明出处,谢谢. https://blog.csdn.net/pdsu161530247/article/details/74640746 链接中高手给出的解题 ...
- Bugku-CTF加密篇之一段Base64
一段Base64 flag格式:flag{xxxxxxxxxxxxx}
- 【Data URL】【RE】【bugku】逆向入门writeup
在写wp之前先来了解一下Data URL是什么 Data URL 在浏览器向服务端发送请求来引用资源时,一般浏览器都有同一时间并发请求数不超过4个的限制.所以如果一个网页需要引用大量的服务端资源,就会 ...
- bugku login2 writeup 不使用vps的方法
0x00前言 这个题是sql注入与命令执行相结合的一个题,思路有两个: 一.:sql注入登录web系统,命令执行反弹公网IP监听端口(需要vps),此种方法详见链接:http://www.bugku. ...
- ISCC 2018 Writeup
题解部分:Misc(除misc500).Web(除Only Admin.Only admin can see flag.有种你来绕.试试看).Reverse.Pwn.Mobile Misc( Auth ...
- bugku 密码学一些题的wp
---恢复内容开始--- 1.滴答滴 摩斯密码,http://tool.bugku.com/mosi/ 2.聪明的小羊 从提示猜是栅栏密码,http://tool.bugku.com/jiemi/ 3 ...
- ctf题目writeup(7)
2019.2.10 过年休息归来,继续做题. bugku的web题,地址:https://ctf.bugku.com/challenges 1. http://123.206.87.240:8002/ ...
- Bugku web(1—35)
1.web2 打开网页: 哈哈,其实按下F12你就会发现flag. 2.计算器 打开网页,只是让你输入计算结果,但是发现只能输入一个数字,这时按下F12,修改一下参数,使之可以输入多个数字,修改后输入 ...
- SYC极客大挑战部分题目writeup
Welcome 复制黏贴flag即可 我相信你正在与我相遇的路上马不停蹄 关注微信工作号回复"我要flag"即可获得flag 代号为geek的行动第一幕:毒雾初现 发现flag为摩 ...
随机推荐
- 小白月赛22 J : 计算 A + B
J:计算 A + B 考察点 : 高精度,字符串 坑点 : 字符串中可能全是数字,或者 + 超过 1 个,需要进行特殊判断 析题得侃: 关于高精度的各种板子 Code: #include <ve ...
- JS将一个数组切分为多个数组
function group(array, subGroupLength) { let index = 0; let newArray = []; while(index < array.len ...
- C语言库函数strstr、strch比较
该库函数包含在<string.h>头文件中,函数原型:extern char *strstr(char *str1, const char *str2);使用方法 char *strstr ...
- [tensorflow] tf.gather使用方法
tf.gather:用一个一维的索引数组,将张量中对应索引的向量提取出来 import tensorflow as tf a = tf.Variable([[1,2,3,4,5], [6,7,8,9, ...
- 数据预处理 | 使用 OneHotEncoder 及 get_dummuies 将分类型数据转变成哑变量矩阵
[分类数据的处理] 问题: 在数据建模过程中,很多算法或算法实现包无法直接处理非数值型的变量,如 KMeans 算法基于距离的相似度计算,而字符串则无法直接计算距离 如: 性别中的男和女 [0,1] ...
- LaTeX技巧008:如何给文字添加阴影效果?
大家可以使用这个包:shadowtext宏包
- windows-problem :电脑上网的无线图标带有黄色星号,但不影响正常上网!
电脑可以上网,但是无线图标带有黄色星号如何解决? 进入“网络和共享中心”,点击“更改适配器设置”,看看是不是有两个以上的“本地连接”,只有一个有用,其他的删除即可.
- Python三次握手和四次挥手
先要了解什么是传输层 博客中网络协议基础编有详细介绍 https://www.cnblogs.com/toby-yu/p/12357598.html TCP三次握手和四次挥手 1.三次握手 首先Cli ...
- ubuntu 开启对.htaccess的支持
1. 终端运行 sudo a2enmod 程序提示可供激活的模块名称,输入: rewrite 成功会提示 rewrite already load2. 修改/etc/apach ...
- 155.XSS攻击原理
XSS攻击: XSS(Cross Site Script)攻击叫做跨站脚本攻击,他的原理是用户使用具有XSS漏洞的网站的时候,向这个网站提交一些恶意代码,当用户在访问这个网站的某个页面的时候,这个恶意 ...