首页
社区
课程
招聘
[分享]学习篇之web安全与基础
发表于: 2天前 416

[分享]学习篇之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不会直接抛出类型错误终止运行,而按预设的自动类型转换规则,将参数转换为函数可处理的类型后执行

            利用:构造非预期的参数类型,触发函数异常转换逻辑,绕过验证、篡改计算结果

1md5()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的关键跳板。

会直接暴露关键路径、账号线索、接口地址甚至源码内容,为后续攻击提供清晰的突破口。

 

类型:

1html注释

开发者用于标注代码逻辑、临时备注的合法语法,仅存于网页源代码中。

利用方式:(1)查看网站源代码

2url+view-source(用于网站禁止鼠标右键)

(3)bp等抓包工具或curl等非浏览器工具 

2robots.txt

为引导搜索引擎爬虫抓取规则(“哪些目录/文件允许抓取、哪些禁止抓取”)而创建的配置文件,常置于网站根目录下。

3js信息泄露

作为前端交互的核心载体。

利用:不如以上直观,往往需分析js代码逻辑、查找AJAX请求地址、解析加密函数方可发现,找到可直击核心漏洞点。

4vim信息泄露

源于使用vim编译器编写/修改代码时的系统遗留文件,属于开发环境疏忽导致的泄露环境。

利用:编辑时会生成~/.swp/.swo/.swn格式的临时交换文件,用于意外退出时恢复文件内容。缓存文件恢复原始文件信息。

可延伸出.git/.DS_Store等同类文件泄露解题思路

 


利用kali还原文件内容

三、变量覆盖

代码审计的核心题型,攻击者经可控的输入参数,篡改程序中已定义的变量值——原本应受程序逻辑控制的变量被外部输入强行修改,进而破坏原有的业务逻辑,成为获取敏感信息或控制程序执行的突破口

 

典型标志:滥用双$$可变变量

extract()、parse_str()等函数未做严格过滤的情况下处理用户输入

对全局变量、会话变量的无校验赋值

利用:覆盖权限校验变量($auth=1)绕过登录/文件路径读取flag文件/代码执行触发而已操作

核心:定位可覆盖的变量和可控输入点,构造精准的payload修改关键变量值

 

$GLOBALS:php超全局数组,用于存储所有全局作用域的变量

特殊之处:无论在函数内/外,都能经$GLOBALS['变量名']直接访问/修改全局变量

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

var_dump($GLOBALS)

四、请求头

规范的通信格式,但其可被攻击者自由构造和篡改的特性,成为重要利用点。

1Cookie/Authorization等请求头篡改身份凭证,获取敏感权限

web身份认证的核心。

抓包-修改(直接修改/编码修改)-重放

常利用Cookie的校验逻辑设计考点:

  • 直接篡改Cookie中的权限字段(如将is admin=0改为is admin=1)绕过后台验证;
  • 破解 Cookie 的简单加密/编码( Base64MD5)获取真实身份信息;
  • 或是利用Cookie的过期时间、Domain/Path属性构造跨域访问漏洞。
  • flag直接隐藏在自定义Cookie(flag=ctf{xxx})中,仅需抓包查看即可获取。

 

2X-Forwarder-ForXXF)伪造客户端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:以上内容如有错误/问题,欢迎各位大佬批评指正!!!


[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回