欢迎来到我的网安技术博客

这里主要分享网络安全方面的知识和技术,内容会围绕以下方向持续更新:

主要内容

  • Web 安全与常见漏洞分析
  • 渗透测试思路与实战技巧
  • 安全工具使用与环境搭建
  • 漏洞复现、原理拆解与防护建议
  • 日常学习笔记与技术总结

关于我

欢迎访问我的 GitHub:

https://github.com/Hanzzkj652

后续我会持续整理并发布更多网安相关内容。

CTF Web 题解:入口参数与文件包含思路

这篇记录一道比较典型的 CTF Web 题思路,核心考点是参数控制与本地文件包含。

题目特征

拿到站点后,首页很简单,只有一个参数:

1
/index.php?page=home

页面切换完全依赖 page 参数,第一反应就是测试是否存在文件包含。

初步测试

先尝试一些常见值:

1
2
/index.php?page=about
/index.php?page=contact

页面都能正常加载,说明后端可能存在类似逻辑:

1
include $_GET['page'] . '.php';

漏洞验证

接下来测试目录穿越:

1
/index.php?page=../../../../etc/passwd

如果没有额外过滤,有机会读取目标文件。

有些题目会拼接后缀,这时可以尝试:

  • 空字节截断思路(旧环境)
  • 日志包含
  • Session 包含
  • PHP 包装器

例如:

1
/index.php?page=php://filter/convert.base64-encode/resource=index

如果成功,就能读取源码。

进一步利用

在这道题里,通过读取源码发现后台还存在一个上传点,但只在管理员登录后可见。继续审计代码后发现:

  • 登录逻辑写死了弱口令
  • 上传点只校验前端后缀
  • 服务端未正确限制脚本执行

最终上传一句话脚本获得权限,读取到 flag。

这类题的核心点

从入口参数判断后端逻辑

看到 ?page=?file=?lang= 这类参数时,要优先想到:

  • 文件包含
  • 目录遍历
  • 本地文件读取

不要只停留在读文件

很多时候文件包含只是第一步,真正的利用链可能是:

  • 读取源码
  • 发现后台路径
  • 拿到凭据
  • 配合上传点 RCE

总结

CTF Web 题很多并不复杂,关键在于把“输入点”与“后端处理逻辑”联系起来。看到可控文件参数时,脑子里要立即联想到包含、读取、审计源码和后续利用链。

后面我还会继续补充 SQL 注入、反序列化和 SSRF 方向的 CTF 题解。

Linux 提权中的信息收集思路记录

拿到一个低权限 shell 之后,第一件事通常不是盲目找 exp,而是先做信息收集。提权很多时候拼的是细节。

基础信息收集

当前身份

1
2
3
4
whoami
id
hostname
uname -a

这几条命令能帮助判断:

  • 当前权限级别
  • 系统版本
  • 内核版本
  • 主机角色

重点排查方向

SUID 文件

1
find / -perm -4000 -type f 2>/dev/null

检查是否存在可利用的高权限程序,例如:

  • find
  • vim
  • bash
  • cp
  • python

如果配置不当,可能直接被用于提权。

sudo 权限

1
sudo -l

这一项非常关键。很多靶机和真实环境中都存在 sudo 配置不严的问题。

定时任务

关注:

  • /etc/crontab
  • /etc/cron.*
  • 用户私有定时任务

如果高权限任务调用了可写脚本或相对路径命令,就可能被劫持。

敏感配置文件

重点看:

  • Web 配置中的数据库口令
  • SSH 密钥
  • 备份文件
  • 历史命令
  • .env

很多提权并不是“内核漏洞提权”,而是通过凭据复用、横向切换、配置泄露实现的。

提权思路不要局限于本地漏洞

常见误区是看到低权限 shell 就开始搜索内核漏洞。实际上更高效的顺序通常是:

  1. 配置错误
  2. 凭据泄露
  3. 计划任务
  4. SUID / sudo
  5. 服务配置问题
  6. 最后才考虑内核漏洞

小结

提权本质上是寻找“高权限执行链路中的薄弱点”。收集越细,提权越稳。

后续可以继续补一篇关于 sudo 误配置和 PATH 劫持的专题整理。

Burp Suite 常用功能与抓包测试技巧

Burp Suite 是 Web 安全测试中最常用的工具之一。对于刚入门的同学来说,先掌握核心模块比盲目装插件更重要。

常用模块

Proxy

用于拦截浏览器请求和响应,是日常测试的入口。

重点掌握:

  • 浏览器代理配置
  • 请求拦截与放行
  • HTTP History 查看完整流量

Repeater

用于手工重放请求,非常适合测试:

  • 参数篡改
  • 越权
  • SQL 注入
  • 文件上传
  • 身份校验逻辑

Intruder

用于自动化批量测试。

典型用途:

  • 爆破用户名密码
  • 枚举参数
  • 模糊测试输入点

Decoder

常用于处理:

  • URL 编码
  • Base64
  • Hex
  • Hash

实战中的几个小技巧

先看响应差异,再判断是否有漏洞

不要一上来就堆 payload,先观察:

  • 状态码是否变化
  • 页面长度是否变化
  • 错误信息是否变化
  • 是否出现权限边界差异

保留原始请求

每次测试前都留一个原始包,方便对比变更点,避免测乱。

关注隐藏参数

很多功能点表面只提交少量参数,但真实请求中可能还包含:

  • role
  • id
  • type
  • debug
  • callback

这些参数往往更值得测试。

学会配合浏览器开发者工具

Burp 负责改包,浏览器开发者工具负责看前端逻辑、接口调用链和 JS 细节,二者结合效率更高。

建议的学习路径

  1. 先把 Proxy 和 Repeater 用熟。
  2. 再用 Intruder 做基础枚举。
  3. 最后补充插件和自动化能力。

工具只是放大能力,真正决定测试质量的仍然是对业务逻辑和漏洞原理的理解。

Web安全入门:从 XSS 到基础防护

XSS 是 Web 安全中最常见的一类漏洞之一,本质上是攻击者将恶意脚本注入页面,并在其他用户浏览时执行。

XSS 的常见类型

反射型 XSS

攻击载荷来自请求参数,服务器直接拼接后返回页面。

常见场景:

  • 搜索框回显
  • 报错信息展示
  • URL 参数直接渲染

存储型 XSS

恶意脚本被写入数据库,后续用户访问页面时触发。

常见场景:

  • 评论区
  • 用户资料页
  • 留言板

DOM 型 XSS

前端 JavaScript 直接读取用户可控数据并写入 DOM。

例如:

1
2
3
4
5
<div id="out"></div>
<script>
const q = location.hash.slice(1);
document.getElementById("out").innerHTML = q;
</script>

如果 URL 为:

1
#<img src=1 onerror=alert(1)>

页面就可能执行恶意脚本。

漏洞危害

  • 窃取 Cookie 或 Token
  • 冒充用户执行敏感操作
  • 页面挂马
  • 钓鱼跳转
  • 获取后台管理权限

基础防护思路

输出时进行上下文编码

不同位置要采用不同的编码方式:

  • HTML 内容编码
  • HTML 属性编码
  • JavaScript 字符串编码
  • URL 编码

禁止直接拼接 innerHTML

优先使用:

  • textContent
  • innerText
  • 安全模板渲染

配置 CSP

合理的 CSP 可以降低 XSS 利用成功率,例如限制内联脚本和外部脚本来源。

对用户输入做过滤

过滤不是核心防线,但依然可以作为辅助手段,尤其适用于富文本内容。

一个基本结论

XSS 防护的关键不在于“黑名单拦截了多少 payload”,而在于是否从渲染上下文出发做了正确的输出编码。

后续我会继续整理 SQL 注入、文件上传、CSRF 等常见 Web 漏洞内容。