-
-
[分享]学习篇之web安全与基础
-
发表于: 2天前 416
-
注:该课程可关注vx公众号一起学习:web安全与基础
CTF web入门
一、php_ctf
解题核心关键_php的弱类型特性以及对应的弱比较规则
特性说明:
1、弱类型与强类型
弱类型:可随意转换变量类型
强类型:变量一旦被定义了某个类型,不经强制类型转换,变量类型不变
2、弱比较==与强比较===
弱比较:将字符串类型转换成相同,再比较
('name'=null=0,'1name'=1,'name1'=0,即纯字符串转换为空,数字字符串转换成前面的数字,字符串数字成识别前面的字符串,转换成空) 0e123=0*10^123(科学计数法)
强比较:先判断字符串的类型是否相等,再比较
3、科学计数法
考点:只允许输入长度为3的字符串,但要大于1000(输入3e3=3*10^3=3000),若限制为前端限制,修改前端限制为9
4、缺陷函数
核心特性:参数类型的宽松处理机制:当向函数传递非预期类型的参数时,php不会直接抛出类型错误终止运行,而按预设的自动类型转换规则,将参数转换为函数可处理的类型后执行
利用:构造非预期的参数类型,触发函数异常转换逻辑,绕过验证、篡改计算结果
(1)md5()、hash()
md5()函数获取不到数组的值,将返回NULL
hash()函数无法处理数组类型,将返回NULL



典型例题:需要传入两个参数,参数不能相同,但md5值必须相同
利用方式:传入两个数组,人工分配val1[]=a&val2[]

(2)strcmp():用于比较两个字符串是否相等,相等=0,数组比较时会出错返回null=0
利用:要求传入flag必须和$flag相同(该参数再flag.php中定义,未知值),传入参数flag[]=,使其比较出错=0
(3)is_numeric():用于检验变量是否为数字或字符串,是=ture,否=false。注:浮点数=ture
函数利用:结合php自动类型转换
要求传入404可返回flag,使用“404a”==404弱比较绕过函数数字检验

二、信息泄露
渗透起点,常常成为获取权限、绕过限制、拿到flag的关键跳板。
会直接暴露关键路径、账号线索、接口地址甚至源码内容,为后续攻击提供清晰的突破口。
类型:
1、html注释
开发者用于标注代码逻辑、临时备注的合法语法,仅存于网页源代码中。
利用方式:(1)查看网站源代码
(2)url前+view-source:(用于网站禁止鼠标右键)
(3)bp等抓包工具或curl等非浏览器工具
2、robots.txt
为引导搜索引擎爬虫抓取规则(“哪些目录/文件允许抓取、哪些禁止抓取”)而创建的配置文件,常置于网站根目录下。
3、js信息泄露
作为前端交互的核心载体。
利用:不如以上直观,往往需分析js代码逻辑、查找AJAX请求地址、解析加密函数方可发现,找到可直击核心漏洞点。
4、vim信息泄露
源于使用vim编译器编写/修改代码时的系统遗留文件,属于开发环境疏忽导致的泄露环境。
利用:编辑时会生成~/.swp/.swo/.swn格式的临时交换文件,用于意外退出时恢复文件内容。缓存文件恢复原始文件信息。
可延伸出.git/.DS_Store等同类文件泄露解题思路


利用kali还原文件内容

三、变量覆盖
代码审计的核心题型,攻击者经可控的输入参数,篡改程序中已定义的变量值——原本应受程序逻辑控制的变量被外部输入强行修改,进而破坏原有的业务逻辑,成为获取敏感信息或控制程序执行的突破口
典型标志:滥用双$$可变变量
extract()、parse_str()等函数未做严格过滤的情况下处理用户输入
对全局变量、会话变量的无校验赋值
利用:覆盖权限校验变量($auth=1)绕过登录/文件路径读取flag文件/代码执行触发而已操作
核心:定位可覆盖的变量和可控输入点,构造精准的payload修改关键变量值
$GLOBALS:php超全局数组,用于存储所有全局作用域的变量
特殊之处:无论在函数内/外,都能经$GLOBALS['变量名']直接访问/修改全局变量

var_dump()用于输出变量的相关信息函数
var_dump($GLOBALS)

四、请求头
规范的通信格式,但其可被攻击者自由构造和篡改的特性,成为重要利用点。
1、Cookie/Authorization等请求头篡改身份凭证,获取敏感权限
web身份认证的核心。
抓包-修改(直接修改/编码修改)-重放
常利用Cookie的校验逻辑设计考点:
- 直接篡改Cookie中的权限字段(如将is admin=0改为is admin=1)绕过后台验证;
- 破解 Cookie 的简单加密/编码(如 Base64、MD5)获取真实身份信息;
- 或是利用Cookie的过期时间、Domain/Path属性构造跨域访问漏洞。
- 将flag直接隐藏在自定义Cookie(如flag=ctf{xxx})中,仅需抓包查看即可获取。
2、X-Forwarder-For(XXF)伪造客户端IP,绕过IP白名单
- 本身是用于记录HTTP请求经过的代理服务器IP的请求头,帮助服务器识别真是客户端地址
- 限制仅本地127.0.0.1可访问、仅指定IP段能查看flag。
- 禁止某些IP访问时,攻击者只需在请求头中手动构造X-Forwarded-For:127.0.0.1,即可伪装成内网IP 或合法IP绕过限制。
3、通过修改User-Agent伪装特定浏览器/设备绕过访问限制
4、篡改Referer验证请求来源,突破页面跳转或权限校验
五、响应头
1、发现大量敏感信息
服务器版本、开发框架类型、后端语言信息可用于版本漏洞检索
Set-Cookie字段会下发身份凭证,是伪造身份、篡改权限的重要依据
Location字段可能指向隐藏跳转地址或后台路径
将flag、提示信息放在自定义响应头中,仅需查看数据包即可获取。
2、一些安全相关的响应头配置缺失或错误
CORS跨域头配置不当
X-Frame-Options未设置导致点击劫持
ps:以上内容如有错误/问题,欢迎各位大佬批评指正!!!
赞赏
- [分享]学习篇之web安全与基础 417
- [分享]学习篇之web安全与基础分享 480
