《零基础渗透实录:从SQL注入手工验证到SQLMap自动化脱库(含常见报错解决)》

张开发
2026/4/6 17:31:50 15 分钟阅读

分享文章

《零基础渗透实录:从SQL注入手工验证到SQLMap自动化脱库(含常见报错解决)》
大家好我是一个网络安全的初学者。最近在学习OWASP Top 10漏洞时SQL注入SQL Injection是绕不开的第一课。在这篇文章中我将记录我这几天从最基础的手工检测到使用SQLMap自动化工具最后成功“脱库”的全过程。这其中遇到了很多坑希望能给同样入门的小伙伴一些参考。1. 第一步手工注入的“数学题”逻辑在使用自动化工具之前师傅让我先用手工的方式来验证漏洞。这一步虽然简单但让我理解了注入的本质。我访问的靶场地址是http://127.0.0.1:8787/user/id?id1验证过程我先输入了id1 and 11页面正常显示。接着输入id1 and 12页面报错或数据不显示。原理这就证明了数据库在听我的“指令”根据我给的“真”或“假”来决定是否返回数据漏洞确认存在【】图片文件名sql注入,sql注入,1and111...1and112...图片说明手工验证SQL注入的存在。通过and 11和and 12的对比确认后端数据库存在逻辑判断漏洞。在遍历ID的过程中我发现了一些有趣的细节当ID26时是一个普通的用户。当ID1时赫然显示着“admin”管理员账号这让我意识到通过注入可以直接定位核心数据。【】图片文件名sql注入id26.png图片说明ID26显示为普通用户信息。【】图片文件名sql注入id1.png图片说明成功遍历到ID1发现管理员账号admin确认了关键权限的存在。【】图片文件名sql注入id27不存在图片说明当遍历到ID27时页面报错unrecognized token。这其实是一个好消息它证明了ID27不存在也侧面印证了后端数据库对输入参数的直接拼接处理。2. 第二步图形化工具GUI的“启动灾难”手工太累了我想偷懒于是找到了 SQLMap-GUI 图形化工具。满心欢喜地点击 Start结果却给了我当头一棒。遇到的坑 1SSL 连接报错工具运行后日志里疯狂报错[CRITICAL] cant establish SSL connection我一脸懵明明靶场是HTTP的为什么要搞SSL解决过程经过排查我发现是工具默认开启了“强制SSL”选项。因为我的靶场是http://127.0.0.1并不是HTTPS所以数据库拒绝了连接。【】图片文件名第一次使用图像化界面的工具扫不出结果图片说明第一次运行SQLMap-GUI时的界面。虽然遇到了SSL报错但后来通过取消勾选“强制SSL”选项终于成功识别出后端数据库为 SQLite。3. 第三步导出数据的“寻宝游戏”虽然工具跑通了显示“Vulnerable: Yes”但我想要的数据Data在哪里我在工具目录下翻了个底朝天根本没有output文件夹。我以为工具坏了甚至想放弃。遇到的坑 2找不到 Output 文件夹后来我才知道旧版本的 SQLMap 默认会把文件生成在系统用户目录下C盘深处而且如果遇到权限问题或者路径识别错误它甚至可能根本没生成文件。解决过程我不再依赖默认设置而是写了一个简单的批处理脚本run.bat强制指定输出目录python sqlmap.py -u 目标URL --batch --dump-all --output-dir./my_results加上--output-dir./my_results这句话终于让工具把数据“吐”在了我眼前【】图片文件名sqlmap注入结果.png图片说明最终成功导出的数据结果虽然日志中显示部分表如user_carts列名枚举失败但成功导出了sqlite_sequence表并且看到了vulin_users漏洞用户表的影子证明自动化脱库成功4. 结语回顾这几天的学习从看不懂的unrecognized token到令人头秃的SSL connection和No such file每一个报错都曾让我想放弃。但正是这些坑让我明白了手工验证是理解逻辑的基础。工具只是辅助理解参数如 --output-dir比盲目点击按钮更重要。如果你也在学习渗透遇到报错别怕那只是系统在和你玩“猜谜游戏”而已

更多文章