最近在学习SQL注入,绕过方法中有编码注入绕过,需要将关键词进行全编码,百度了一下没有找到全编码工具,所有的编码工具里"and"编码完还是"and",于是查了一下全编码的原理:
其实就是%加上字符的ASCII码十六进制表示方式(先转ASCII编码再转16进制)
例如字母a的ASCII码十六进制表示方式是61,那么a编码过来就是%61
比较简单,但实际需要用的时候,逐个字符去查ASCII码表不太方便,所以自己动手写了一个python脚本自动全编码解码,有需要的童鞋可以拿去用
import os # 导入 os模块 def main(): clearFlag = "y" while(1): if clearFlag == "y" or clearFlag == "Y": os.system("cls") # 执行cls命令清屏命令行 clearFlag = "" string = input("请输入需要转换的字符串 :") type = input("请选择操作类型(1:加密 2:解密) :") while(type != "1" and type != "2"): type = input("操作类型输入错误,请重新选择(1:加密 2:解密) :") if type == "1" : encode_string = encode(string) # encode_string=编码 print("编码结果为:"+encode_string+" ") if type == "2" : decode_string = decode(string) print("解码结果为:"+decode_string+"【请注意前后空格】 ") clearFlag = input("按Y/y清空屏幕继续:") #编码 def encode(string): encode_string = "" for char in string: encode_char = hex(ord(char)).replace("0x","%") #先转ASCII编码再转16进制,把0x替换为% # 例如 i+=1 == i=i+1;所以 encode_string = encode_string + encode_char encode_string += encode_char # encode_string += 空字符+结果 return encode_string #解码 def decode(string): decode_string = "" # 以%为分隔符 # %61%6e%64 # ['%61','%6e','%64'] #string_arr.pop(0)删除第一个元素 # ['61','6e','64'] string_arr = string.split("%") # 以%为分隔符 string_arr.pop(0) #删除第一个元素 for char in string_arr: decode_char = chr(eval("0x"+char)) # chr(eval("0x"+ 61.....)),先输出0x61再通过chr转换为ASCII编码 decode_string += decode_char return decode_string main()