sqlmap升级后报错的解决方案

Posted by kevin on January 2, 2020

preface

我的环境是 Kali Linux ,里面预装了 sqlmap,然后今天在做题的时候用 sqlmap 进行注入,最后退出的时候他跟我说我已经几百天没有升级过 sqlmap 了,行吧,那我就来升级一下吧

[22:06:48] [WARNING] you haven't updated sqlmap for more than 153 days!!!

这一升级,再注入就报错了,看样子是 MySQLdb 的属性问题

Traceback (most recent call last):
File "/usr/bin/sqlmap", line 44, in
from lib.core.common import banner
File "/usr/share/sqlmap/lib/core/common.py", line 184, in
from lib.utils.sqlalchemy import _sqlalchemy
File "/usr/share/sqlmap/lib/utils/sqlalchemy.py", line 27, in
warnings.filterwarnings("error", category=MySQLdb.Warning)
AttributeError: module 'MySQLdb' has no attribute 'Warning'

网上搜索解决方案,发现没有人遇到过这个问题,然后我试着将 sqlmap 卸载再重装也还是这样。Kali 官方源只有 1.4.12-1 版本的 sqlmap,而我之前装的是 1.4.8 版本的,所以肯定是升级之后哪些地方出了问题,我在 sqlmap 的 GitHub issue 区找到了一个跟我情况一样的老哥,不过他提的 issue 被关了,应该是描述不到位吧。

desc

我找了一下,MySQLdb 是我电脑中 python3 的一个库,但是好像里面没有什么东西的样子,确实没找到 warning 这个方法,有的都只是一些 built-in function

>>> import MySQLdb
>>> dir(MySQLdb)
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']

最后就直接根据报错信息将 /usr/share/sqlmap/lib/utils/sqlalchemy.py 里面关于 MySQLdb 的一行给注释了,好像也没啥事

#warnings.filterwarnings("error", category=MySQLdb.Warning)

反正最后就不会报错了,可以正常使用,然后也给作者提交了描述完整的 issue

更新,issue 被作者关闭并贴上了 duplicate 标签。