2024-04-26 05:24:05 发布
网友
我对python还很陌生,正在尝试移植我为堆栈溢出编写的一个简单的漏洞攻击(只是一个nop sled、shell代码和返回地址)。这不是为了邪恶的目的,而是为了在大学里做一次安全讲座。在
对于一个十六进制字符串(deadbeef),最好的方法是:
对于使用python编写漏洞攻击的常见任务,我们也非常感谢。在
在python2.x中,常规的str值是二进制安全的。您可以使用binascii模块的b2a_hex和{}函数来转换和转换十六进制。在
str
b2a_hex
可以使用普通的字符串方法来反转或重新排列字节。但是,执行任何类型的算术都需要使用ord函数来获取单个字节的数值,然后使用chr将结果转换回原处,然后进行串联以重新组合修改后的字符串。在
ord
chr
对于算术更简单的可变序列,请使用类型代码为'B'的array模块。如果从十六进制开始,可以从a2b_hex的结果初始化这些值。在
'B'
a2b_hex
在Python2.6及更高版本中,可以使用内置的^{}类。在
要创建bytearray对象:
bytearray
b = bytearray.fromhex('deadbeef')
要更改字节,可以使用数组表示法引用它:
要反转bytearray,请使用b.reverse()。要创建一个按相反顺序对其进行迭代的迭代器,可以使用reversed函数:reversed(b)。在
b.reverse()
reversed
reversed(b)
您可能还对python3中新的bytes类感兴趣,它类似于bytearray,但不可变。在
bytes
不知道这是不是最好的方法。。。在
hex_str = "deadbeef" bytes = "".join(chr(int(hex_str[i:i+2],16)) for i in xrange(0,len(hex_str),2)) rev_bytes = bytes[::-1]
或者更简单:
在python2.x中,常规的}函数来转换和转换十六进制。在
str
值是二进制安全的。您可以使用binascii模块的b2a_hex
和{可以使用普通的字符串方法来反转或重新排列字节。但是,执行任何类型的算术都需要使用
ord
函数来获取单个字节的数值,然后使用chr
将结果转换回原处,然后进行串联以重新组合修改后的字符串。在对于算术更简单的可变序列,请使用类型代码为
'B'
的array模块。如果从十六进制开始,可以从a2b_hex
的结果初始化这些值。在在Python2.6及更高版本中,可以使用内置的^{} 类。在
要创建
bytearray
对象:要更改字节,可以使用数组表示法引用它:
^{pr2}$要反转
bytearray
,请使用b.reverse()
。要创建一个按相反顺序对其进行迭代的迭代器,可以使用reversed
函数:reversed(b)
。在您可能还对python3中新的
bytes
类感兴趣,它类似于bytearray
,但不可变。在不知道这是不是最好的方法。。。在
或者更简单:
^{pr2}$相关问题 更多 >
编程相关推荐