CTF-web题型知识随记?

本文总结了CTF web题目的常见工具,如御剑、AWVS,以及解题策略,包括查看源代码、HTTP数据包分析。重点介绍了php弱类型在 strcmp 中的利用,如通过数组trick绕过比较。还讨论了绕过WAF的方法,如大小写混合、编码转换。此外,提到了一些加密解密技巧,如base64多次加密、摩尔斯电码和栅栏密码的应用。

工具集

在这里插入图片描述
御剑:网站后台
AWVS:扫描web漏洞
在这里插入图片描述

常用套路总结

1.查看源代码
2.查看HTTP数据包
http请求/响应
使用抓包工具burpsuite查看HTTP请求/相应头部
3.修改或添加HTTP请求头伪造客户端信息
在这里插入图片描述
4.web源码泄露
(1)vim源码泄露(线上ctf常见)
思路:如果发现页面提示有vi或vim,说明swp文件泄露
地址: /.index.php.swp 或 /index.php~
恢复文件:vim -r index.php
(2)备份文件泄露
地址: index.php.bak,www.zip,wwwroot.zip,htdocs.zip,
可以是zip,rar,tar.gz,7z等
在这里插入图片描述
5.编码和加解密
base64多次加密:

### CTF Web知识总结 CTF(Capture The Flag)中的Web部分主要涉及Web应用的安全性和漏洞利用技术。以下是关于CTF竞赛中常见的Web相关知识点的总结: #### 1. 基础概念 - **Content-Type**: 它是一个HTTP头字段,用来指示资源的内容类型以及编码方式[^1]。例如,在处理文件上传时,服务器会通过`Content-Type`来判断接收到的数据是什么类型的文件。 ```http Content-Type: application/json; charset=UTF-8 ``` - **常见攻击面**:Web应用程序通常存在多种潜在的攻击向量,比如SQL注入、XSS跨站脚本攻击、CSRF跨站请求伪造等。 #### 2. SQL Injection (SQL注入) - 当输入数据未被正确验证或转义时,恶意用户可以通过构造特定的SQL语句执行未经授权的操作。防止方法包括使用参数化查询或者ORM框架[^2]。 #### 3. Cross-Site Scripting (XSS, 跨站脚本攻击) - XSS允许攻击者将恶意代码嵌入到其他用户的浏览器上下文中运行。分为存储型XSS、反射型XSS和DOM-based XSS三种类型。 #### 4. Cross-Site Request Forgery (CSRF, 跨站请求伪造) - 攻击者诱导受害者访问一个链接,从而让受害者的浏览器自动发送已认证过的请求给目标网站。防御措施可以采用Anti-CSRF Tokens机制。 #### 5. File Inclusion Vulnerabilities (文件包含漏洞) - 如果程序动态加载外部文件而没有适当过滤,则可能导致本地/远程文件包含问题。这可能泄露敏感信息甚至执行任意命令。 #### 6. Command Execution & Code Evaluation Flaws (命令执行&代码评估缺陷) - 应用如果直接执行来自前端未经严格校验的指令字符串就容易遭受此类威胁。应避免不必要的功能暴露并实施严格的白名单策略。 #### 7. Session Management Issues (会话管理问题) - 不当的session token生成与维护可能会造成账户劫持风险。建议采取强随机数算法创建token,并设置合理的过期时间。 #### 8. Authentication Bypass Techniques (身份验证绕过技巧) - 需要关注弱密码恢复流程、多因素认证旁路等问题以保护系统的安全性。 #### 9. Information Leakage and Improper Error Handling (信息泄漏及错误处理不当) - 过度详细的错误消息可能帮助黑客理解内部结构进而策划更有效的进攻手段;因此应该隐藏这些细节仅保留必要提示。 #### 10. Security Misconfigurations (配置失误) - 错误配置数据库权限、防火墙规则或者其他服务端组件都可能是致命弱点所在。定期审查环境设定至关重要。 --- ### 示例代码片段展示如何防范SQL注入 下面给出Python Flask框架下预防SQL注入的一个简单例子: ```python from flask import Flask, request import sqlite3 app = Flask(__name__) @app.route('/safe_query') def safe_query(): user_id = request.args.get('id', '') conn = sqlite3.connect(':memory:') cursor = conn.cursor() # 使用占位符?代替直接拼接字符串的方式构建查询 query = "SELECT * FROM users WHERE id=?" result = cursor.execute(query, (user_id,)) data = result.fetchall() return str(data) if __name__ == '__main__': app.run(debug=True) ``` 此段代码展示了通过预编译语句有效阻止了传统意义上的SQL注入尝试。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值