南邮CTF web题目总结

本文总结了CTF竞赛中常见的Web挑战类型,包括信息隐藏、302跳转拦截、来源判断伪造、特定信息修改、PHP弱类型比较、上传截断、SQL注入、十六进制绕过等技巧,并提供了实战案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天写了南邮的web题目,都比较基础,但是对我这个小白来说还是收获蛮大的。可以借此总结一下web题的类型

一,信息都藏在哪

作为ctf题目,肯定是要有些提示的,这些提示有时会在题目介绍里说有时也会隐藏在某些地方。

1,源代码,这是最最最常见的。


2,http head头中,这个一般都会提下 ‘头’ 什么的。
3,非常规提示,就比如这个:


如果第一次做ctf题目,不知道还有这些套路,一般不会往这个方面想。

二,302自动跳转

在打开某个链接时,会跳转向另一个链接,而错过重要信息。

1,使用burpsuite一步步拦截释放,这样不会错过中间跳转。
2,如果网页使用的是js跳转,可以试试禁用js.

三,访问来源判断

这个也是经典题目了,通过判断ip,后者来源网址。可以总两个方面伪造

1,http referer头,这个头指示的是请求从哪个网站来
2,X-Forward-For头:这个头指示请求的ip

四,修改特定信息

这也是很基础的,主要有几个方面

1,GET/POST 表单的内容,包括键与值
2,修改HTTP header,多在cookie上有问题

五,php弱类型比较

1,字符串与数字比较:这个与mysql的规则比较像,开头纯字母的字符串会被转化为0,
开头有数字的会被转化为开头的数字。

比如:‘123abc’==123

               'abc123'==0

这两个都成立

2,科学计数法:0e开头的字符串会被认为值科学技术法形式,但转化成科学计数法有时
0成10的若干次方,都是相等的。

‘0e1234560’=='0e789456' 成立

比较明显的是在MD5加密上,如果两个字符串加密后都以0e开头,再比较他们的MD5值就会认为相等

也就会认为两字符串相等。

比如:md5('240610708')==md5('QNKCDZO')

3,intvar() 转换 这个函数可以把字符串转换为数字,规则与第一条类似

六,上传截断

参考我的一篇博客 https://blog.youkuaiyun.com/zpy1998zpy/article/details/80545408

七,sql注入

这个平台上没有特别在sql注入上难为同学们,也是基本题型

还是参考我的另一篇博客  https://blog.youkuaiyun.com/zpy1998zpy/article/details/80517626

八,十六进制绕过

十六进制在于数字比较时,会被转化为10进制,但在字符串操作时还是16进制形式。


这里的绕过就是传入 54975581388的16进制表示,就可通过对每一位ascii码的检查。

九,其他的小知识点

1,javascript aaencode  各种表情符 ,就是特征

解码:在线解码 https://tool.zcmzcm.org/aadecode

有个小问题,如果网页直接打开为乱码,就右键另存为,保存到本地用记事本打开,再去解码就行了。

2,JSF*ck 编码 各种括号加号

在线解码 http://www.jsfuck.com/

3,.swp文件,如果有提示就可以查看  .原文件名.swp

比如:直接访问    http://站点/ .index.php.swp 可以看到提示内容

4, .bash_history 文件 同样的,如果有提示,就可以试着访问这个文件,
5,序列化与反序列化,主要还是要懂基本含义与格式,然后调用 序列化与反序列化函数即可

这是php反序列化那题生成playload的代码

<?php
class just4fun {
    var $enter;
    var $secret;
}
$o = new just4fun();
$o->enter = &$o->secret;
echo serialize($o);
?>

如果会调用函数,就可以操作序列化和反序列化,所有重点还是对题目服务器代码的绕过技巧。


转载指明出处

### CTF Web题目部署方案及实现思路 #### 一、Docker 部署 CTF Web 环境概述 通过 Docker 容器化技术,能够快速构建并运行 CTF Web 题目所需的环境。这种方式不仅简化了配置流程,还提高了资源利用率隔离性[^1]。 容器化的优点在于其轻量级特性以及跨平台兼容能力,使得开发者无需担心底层操作系统差异带来的问题。对于 CTF 比赛而言,这种一致性尤为重要,因为参赛者通常来自不同背景技术栈[^2]。 #### 二、具体部署步骤说明 以下是基于 Docker 的典型 CTF Web 题目部署方式: 1. **克隆目标仓库** 使用 `git` 命令下载指定的 CTF Web 题目代码库至本地路径下: ```bash git clone https://github.com/CTFTraining/example_ctf_web_challenge.git /path/to/local/repo/ ``` 2. **创建自定义镜像文件 (Dockerfile)** 编写适合当前挑战需求的基础服务配置脚本——即 Dockerfile 文件内容如下所示: ```dockerfile FROM php:7.4-apache COPY . /var/www/html/ RUN apt-get update && \ apt-get install -y libpng-dev zlib1g-dev && \ docker-php-ext-install gd mysqli opcache pdo_mysql && \ a2enmod rewrite headers expires ssl proxy_fcgi setenvif && \ service apache2 restart ``` 3. **构建与启动容器实例** 构建新镜像并将之命名为易于识别的形式;随后执行命令来初始化一个新的交互式会话窗口连接到该容器内部操作界面之中查看效果如何。 ```bash cd /path/to/local/repo/ sudo docker build -t my-ctf-web-challenge . sudo docker run --name running-container-name -d -p 8080:80 my-ctf-web-challenge ``` 4. **验证访问功能正常与否** 打开浏览器输入地址栏 http://localhost:8080 即可测试页面加载情况是否符合预期设定标准[^3]. 5. **调整优化参数设置** 如果发现性能瓶颈或者存在安全隐患,则可以根据实际情况修改相应部分直至满足比赛规则要求为止. #### 三、常见注意事项提醒 - 确保所有依赖项均已正确安装完成后再继续下一步骤. - 对敏感数据采取加密存储措施以防泄露风险发生. - 设置合理的超时时间避免长时间占用计算资源影响其他进程运作效率. ```python import os def check_directory(path): """Check if directory exists.""" return os.path.isdir(path) repo_path = "/path/to/local/repo/" if not check_directory(repo_path): print(f"The repository at {repo_path} does not exist.") else: print("Repository found successfully!") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值