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为摩 ...
随机推荐
- string类型的应用场景 —— Redis实战经验
string类型是实战中应用最多的数据类型,Redis的一些特性决定了string类型的应用场景. 1. Redis的数据是共享的 如果将用户信息存储在web服务的本地缓存,则每个web服务都会缓存一 ...
- react-父子子孙组件嵌套-context
方案一 import React from 'react' import ReactTypes from 'prop-types' /* // 最外层的父组件 export default class ...
- Spring-Cache手动清缓存
Spring Cache 手动清Redis缓存 注册cacheRedisTemplate 将 cache 的 RedisTemplate 注册为Bean @Bean(name = "cach ...
- Linux下用Bash语言实现判断素数的功能
题目链接: 题目描述 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息. 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime 样例输入 97 样例输出 pri ...
- 配置hosts快速访问GitHub
经常要clone github中的一些项目,无奈如果不爬梯子的话速度实在是龟速,经常1k/s,于是搜了下解决方法,改HOSTS大法.Windows下在C:/Windows/system32/drive ...
- xss和sql注入学习1
在本地搭建一个存在漏洞的网站,验证xss漏洞和SQL注入的利用方法. 使用phpStudy工具搭建一个美食CMS网站平台. 0x01 xss测试 打开调试模式,定位姓名栏输入框: 尝试在value中 ...
- AcWing 187. 导弹防御系统
//dp+dfs+贪心 //记一个全局变量 #include<iostream> using namespace std ; ; int n; int ans; int q[N]; int ...
- C++——绪论
计算机语言的发展 1.机器语言(二进制).汇编语言.比较难以理解和识记,与人类语言之间的差距太大: 2.高级语言,可以写出类似于人类思维的语句,可以有人们习惯的表达方式: 3.面向对象的语言,描述客观 ...
- 2017-12-08 违法数据筛选.sql
SELECT R. ID, R.LKBH, R.CDBH, R.FXBH, R.ZJBH, R.SBBH, R.CPHM, R.CPYSBH, R.CPYS, R.CSYSBH, R.CSYS, R. ...
- cookie 与 session区别
cookie 与 session 是网页开发中常用的信息存储方式.Cookie是在客户端开辟的一块可存储用户信息的地方:Session是在服务器内存中开辟的一块存储用户信息的地方.JavaScript ...