【好靶场】SQLMap靶场攻防绕过 (一)
0x00 前言
最近遇到很多在做基础靶场的小伙伴们都在SQLMap一把索,那么所幸搞一个SQLMap绕过的靶场。
我们是好靶场,一个立志于让所有学习安全的同学用上好靶场的团队。
https://github.com/haobachang-1/haobachangBlog/
https://github.com/haobachang-1/haobachangBlog/tree/main/SQLMap%E6%94%BB%E9%98%B2
0x01 开启环境
进入环境
如果要自己尝试的伙伴们可以从这里开始自己尝试了。
0x02 开工
输入admin,看看效果
输入单引号,有报错,那基本上就是有SQL注入
单引号闭合,发现是存在漏洞的
来叭,SQLMap,交给你了
哦豁,失败了,SQLMap并没有正常的工作
0x03 绕过
从我们的扫描结果可以看出来,页面是返回了404,可能是因为检测了什么内容。
根据过往经验,最好去识别的是SQLMap的UA特征。SQLMap默认情况下UA就是SQLMap。
我们进行一个简单的测试,切换为SQLMap的UA,发现果然,是检查了UA。
那我们就需要去绕过了,SQLMap有一个自带的随机UA的功能。
我们使用这个试试,ok成功了。
拿一下Flag
徽章到手
备注:
SQLMap 是一款开源的自动化 SQL 注入检测与利用工具,主要用于帮助安全测试人员、渗透测试工程师等在合法授权的前提下,检测 Web 应用程序中是否存在 SQL 注入漏洞,并对已发现的漏洞进行深度利用,以评估系统的安全风险。
一些基础知识
SQL 注入(SQL Injection)是一种常见的网络攻击手段,其核心是利用 Web 应用程序对用户输入数据的处理漏洞,通过注入恶意的 SQL 语句,操纵后端数据库执行未授权操作,从而获取敏感信息、篡改数据甚至控制服务器。
原理:输入处理的漏洞
Web 应用程序通常需要与数据库交互(如查询用户信息、提交表单等)。正常情况下,应用会根据用户输入构建 SQL 查询语句,例如用户登录时,可能执行这样的 SQL:
sql
SELECT * FROM users WHERE username=‘用户输入的用户名’ AND password=‘用户输入的密码’;
若应用未对用户输入进行严格验证或转义,攻击者可以构造特殊输入,改变 SQL 语句的结构。例如,在 “用户名” 输入框中填入 ’ OR ‘1’='1,此时 SQL 语句会变成:
sql
SELECT * FROM users WHERE username=‘’ OR ‘1’=‘1’ AND password=‘用户输入的密码’;
由于 ‘1’=‘1’ 恒为真,这条语句会返回数据库中所有用户的信息,导致攻击者绕过登录验证。
常见攻击方式
登录绕过:如上述例子,通过注入让 SQL 条件恒为真,直接登录系统。
数据窃取:利用 UNION 联合查询,读取其他表的敏感数据(如用户密码、银行卡信息)。
例:输入 ' UNION SELECT username, password FROM users --,可能获取所有用户账号密码。
数据篡改 / 删除:注入 UPDATE 或 DELETE 语句,破坏数据库数据。
例:输入 '; DELETE FROM users --,可能删除所有用户记录。
权限提升:通过注入获取数据库管理员权限,甚至远程控制服务器。