burp suit抓包实操-ctfhub
提交注入主要涉及到攻击者通过向Web应用程序提交特定的数据,利用这些数据在数据库中执行非预期的SQL语句。
1. 基于“或”条件的注入
在用户登录的场景中,攻击者可以通过输入特定的SQL语句来绕过身份验证。例如,一个简单的登录查询可能如下所示:
SELECT * FROM Users WHERE Name = '用户输入的用户名' AND Pass = '用户输入的密码';
如果攻击者在用户名字段中输入:
' OR '1'='1
最终生成的SQL语句将变为:
SELECT * FROM Users WHERE Name = '' OR '1'='1' AND Pass = '';
由于'1'='1'
始终为真,这将返回所有用户的信息,攻击者可以轻松绕过登录验证。
2. 基于批处理SQL语句的注入
许多数据库支持批处理SQL语句,攻击者可以利用这一点执行多个SQL命令。例如,假设用户输入的ID如下:
105; DROP TABLE Suppliers;
生成的SQL语句将会是:
SELECT * FROM Users WHERE UserId = 105; DROP TABLE Suppliers;
这将导致“Suppliers”表被删除。
3. 使用注释符号进行注入
攻击者可以通过在SQL语句中添加注释符号来操控查询。例如,假设有以下查询:
SELECT id FROM users WHERE username='用户输入' AND password='用户输入';
如果攻击者输入如下密码:
password' OR '1'='1' --
最终生成的SQL语句将变为:
SELECT id FROM users WHERE username='用户输入' AND password='password' OR '1'='1' -- ';
这里--
后面的内容被视为注释,从而使得条件始终为真。
4. 通过表单字段注入
在一个需要用户填写名字和姓氏的表单中,攻击者可以在名字字段中输入恶意代码。例如:
- 名字:
malicious'ex
- 姓氏:
Smith
生成的SQL查询可能会是:
SELECT id, firstname, lastname FROM authors WHERE firstname = 'malicious'ex' AND lastname ='Smith';
由于引号的不匹配,这将导致SQL语法错误,但也可能被利用来执行其他恶意操作。
5. 使用参数化查询防止注入
为了防止SQL注入,推荐使用参数化查询。以下是一个使用参数化查询的示例:
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = @0";
db.Execute(txtSQL, txtUserId);
这种方式确保用户输入被视为数据而不是代码,从而有效防止了SQL注入。
提交注入
主要包括 SQL 注入、XSS 注入和命令注入。
SQL 注入是通过在应用程序的输入字段中插入恶意 SQL 代码,来绕过应用程序的验证机制,从而执行非预期的 SQL 操作。
登录表单注入
假设登录表单有用户名和密码两个输入框,后端 SQL 查询语句可能是这样的:
SELECT * FROM users WHERE username = '$username' AND password = '$password';
恶意用户可以在用户名输入框中输入如下内容:
' OR '1'='1
如果密码输入框随便输入一个值,最终拼接后的 SQL 语句就会变成:
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '随便输入的值';
由于 '1'='1' 始终为真,这样恶意用户就可以绕过正常的用户名和密码验证,直接登录系统。
搜索框注入
假设搜索框对应的 SQL 查询语句为:
SELECT * FROM products WHERE product_name LIKE '%$search_term%';
恶意用户可以在搜索框输入:
' OR 1=1 --
拼接后的 SQL 语句变为:
SELECT * FROM products WHERE product_name LIKE '%' OR 1=1 -- %';
-- 是 SQL 中的注释符号,它会将后面的内容注释掉,而 1=1 恒为真,这样就会返回表中所有的记录。
XSS 注入(跨站脚本攻击)
XSS 注入是攻击者通过在目标网站注入恶意脚本,当其他用户访问该页面时,脚本会在用户的浏览器中执行,从而窃取用户的敏感信息。
反射型 XSS
假设一个搜索页面会将用户输入的搜索关键词显示在页面上,URL 可能是这样的:
http://example.com/search.php?keyword=搜索内容
恶意用户可以构造如下 URL:
http://example.com/search.php?keyword=<script>alert('XSS攻击')</script>
当用户点击这个链接时,浏览器会执行注入的 JavaScript 代码,弹出一个提示框。
存储型 XSS
在一些允许用户提交评论的网站,如果没有对用户输入进行严格过滤,恶意用户可以在评论框中输入如下内容:
当其他用户查看该评论时,脚本会在他们的浏览器中执行,从而将他们的 cookie 信息发送到攻击者的服务器。
命令注入
命令注入是攻击者通过应用程序的输入点,注入系统命令,从而在服务器上执行恶意命令。
简单的命令注入示例
假设一个应用程序允许用户输入一个 IP 地址,然后使用 ping 命令来测试该 IP 是否可达,后端代码可能会执行类似这样的命令:
ping -c 4 $ip_address
恶意用户可以在输入框中输入:
127.0.0.1; ls -l
这样,服务器实际执行的命令就变成了:
ping -c 4 127.0.0.1; ls -l
; 是命令分隔符,服务器会先执行 ping -c 4 127.0.0.1,然后执行 ls -l,攻击者就可以通过这种方式查看服务器上的文件列表。
实操
像ctfhub技能树的http基础认证那一题,在获取到这串编码时
直接将抓到的数据包发送到Intruder这个模块,再进行爆破
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?