SQLMAP的Tamper脚本—Base64encode的解读
Base64encode脚本的解读:
首先导入base家族的包:
import base64
导入sqlmap中定义的函数:
from lib.core.enums import PRIORITY #导入sqlmap中lib.core.enums中的PRIORITY函数, from lib.core.settings import UNICODE_ENCODING
定义一个方法,可以传入字符,并且将base编码传入的所有字符:
return base64.b64encode(payload.encode(UNICODE_ENCODING)) if payload else payload
具体分析:
#!/usr/bin/env python #程序到env设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作 """ Copyright (c) 2006-2018 sqlmap developers (http://sqlmap.org/) See the file 'LICENSE' for copying permission #注释 """ import base64 #导入python中的base64包 from lib.core.enums import PRIORITY #导入sqlmap中lib.core.enums中的PRIORITY函数, from lib.core.settings import UNICODE_ENCODING #导入sqlmap中lib.core.settings中的UNICODE_ENCODING函数 __priority__ = PRIORITY.LOW #定义优先级,这里的级别为一般 def dependencies(): #定义方法 pass #不做任何事情,做占位语句; def tamper(payload, **kwargs): #定义一个名为tamper的方法,括号里的payload,**kwargs为定义的参数,**kwargs是字典存储,类似于定义一个数组 """ Base64-encodes all characters in a given payload #这句话的意思是Base64的编码给payload中的所有的字符 #注释,用来做文档说明 >>> tamper("1' AND SLEEP(5)#") 'MScgQU5EIFNMRUVQKDUpIw==' #这两句话的内容是,可以将"1' AND SLEEP(5)#"转化为“MScgQU5EIFNMRUVQKDUpIw==” """ return base64.b64encode(payload.encode(UNICODE_ENCODING)) if payload else payload #这是对payload的内容做改变的方式,base64.b64encode函数是对里面的内容进行加密 #payload.encode就是对上文def定义的方法内的传参进行一个加密 #是使用lib.core.settings中的UNICODE_ENCODING函数