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为摩 ...
随机推荐
- laravel打印查询sql
方法一(此方法支持 select 语句,insert,delect,update不支持) : $sql = DB::table('my_table')->select()->tosql() ...
- 0219 springmvc-拦截器和响应增强
拦截器 拦截器分同步拦截器和异步拦截器: HandlerInterceptor 方法和执行时机 可以看DispathcerServlet的原来确定它的三个方法的执行时机: AsynHandlerInt ...
- JavaSE学习笔记(1)---数据类型、运算符、控制结构
javaSE学习笔记(1) 数据类型和运算符 1.注释可以提高程序的可读性.可划分为 单行注释 // 多行注释 /.../ 文档注释 /**...*/ 2.标识符的命名规则: 标识符必须以字母.下划线 ...
- C++-POJ3070-Fibonacci-[矩阵乘法][快速幂]
#include <cstdio> ][];}; ,MOD=1e4; Matrix A,B,O,I; Matrix Mul(Matrix A,Matrix B){ Matrix C=O; ...
- 如何架构一个 React 项目?
编程有点像搞园艺.比起竭力去对付BUG(虫子),我们更愿意把一切弄得整洁有序,以免最后落得个身在荒野丛林中.低劣的架构会拖我们的后腿,也会使得BUG更容易钻进系统里去. 想要对你的项目进行架构,方法有 ...
- Java 13 新特性
一.core-libs/java.nio 添加 FileSystems.newFileSystem(Path, Map<String, ?>) 方法 java.nio.file.FileS ...
- sql语言分类及区别、显示和隐示提交的指令
SQL的发展是从1974年开始的,其发展过程如下: 1974年-----由Boyce和Chamberlin提出,当时称SEQUEL. 1976年-----IBM公司的Sanjase研究所在研制RDBM ...
- vue中什么是模块 什么是组件?
模块: 封装好的应用程序,它只是js文件的封装. 组件: 一个完整的单位个体,可以有js可以有css和html. 作者:晋飞翔手机号(微信同步):17812718961希望本篇文章 能给正在学习 前端 ...
- Python tip
shutil.rmtree() 表示递归删除文件夹下的所有子文件夹和子文件.
- turtleh海龟库
Turtle海龟库 导入 import turtle turtle.setup(width,height,startx,starty) -setup():设置窗体的位置和大小 相对于桌面的起点的坐标以 ...