| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> CTFSHOW-PHP特性 -> 正文阅读 |
|
[PHP知识库]CTFSHOW-PHP特性 |
web89
web90
web91
php开头,php结尾,i大小写,m多行匹配
web92
web93
web94
web95
web96
web97对数组进行md5
web98分析一下: 当$_GET存在时,它的值为$_POST 如果$_GET也就是$_POST['flag']=flag时 $_GET['flag']=$_COOKIE['flag'] 下一行同理 当判断$_GET中HTTP_FLAG等于flag时,输出flag 思路1: GET传入随便的值,此时GET就是POST,此时后面的两行失效,然后POST传入HTTP_FLAG=flag 思路2: GET随便传入 POST传入flag=flag cookie写入HTTP_FLAG=flag web99
然后访问1.php,post传参
web100先来了解一下运算符的优先级 && > || > = > and > or 所以这道题的
vo赋值为
post传参
得到
将其中的0x2d替换为-,即 7a19d27c-7daf-44cf-a259-e08a1fc9fe49 所有flag为ctfshow{7a19d27c-7daf-44cf-a259-e08a1fc9fe49} web101
替换0x2d为-,最后一位需要爆破,题目给的flag少一位 web102
这里的hex2bin把十六进制值的字符串转换为 ASCII 字符。 web103同上题 web104
或者
web105考察变量覆盖 web106
web107
web108
ereg()函数用指定的模式搜索一个字符串中指定的字符串,如果匹配成功返回true,否则,则返回false。搜索字 母的字符是大小写敏感的。 ereg函数存在NULL截断漏洞,导致了正则过滤被绕过,所以可以使用%00截断正则匹配
web109php有内置类
web110FilesystemIterator? 遍历文件类 getcwd ?取得当前工作目录 组合在一起默认只显示第一个文件
访问fl36dga.txt web111变量覆盖和超全局变量
web112is_file判断给定文件名是否为一个正常的文件。 使用伪协议绕过
web113
web114
web115is_numeric — 检测变量是否为数字或数字字符串 trim — 去除字符串首尾处的空白字符(或者其他字符)
%0c? 换页键 web123PHP变量名应该只有数字字母下划线,同时GET或POST方式传进去的变量名,会自动将空格 + . [转换为_
implode — 将一个一维数组的值转化为字符串 get_defined_vars — 返回由所有已定义变量所组成的数组 web125
或者
extract — 从数组中将变量导入到当前的符号表,变量覆盖 web126
web127由于php的变量名不能带点和空格,所以他们会被转换成下划线,但是这里过滤了.,所以使用空格
web128
小知识点: _()是一个函数 _()==gettext() 是gettext()的拓展函数,开启text扩展。需要php扩展目录下有php_gettext.dll get_defined_vars()返回由所有已定义变量所组成的数组?
web129?stripos — 查找字符串首次出现的位置
默认目录:var/www/html/index.php web130
第一个判断正则匹配,在ctfshow前面有东西才能匹配到 第二个判断是强等于,int和bool返回False 直接?
web131长度溢出
web132先访问robots.txt,发现admin目录,访问admin 过三个判断 对于“与”(&&) 运算: x && y 当x为false时,直接跳过,不执行y; 对于“或”(||) 运算 : x||y 当x为true时,直接跳过,不执行y
web133这题长度限制是6,能执行命令的只有``,``相当于shell_exec(),是没有回显的
使用dnslog?
得到 flagctfshowa5bb7d46a16e494f8e08d7f3651d0e53 规律:8 4 4 4 12 flag:ctfshow{a5bb7d46-a16e-494f-8e08-d7f3651d0e53} web134考察: php变量覆盖 利用点是 extract($_POST); 进行解析$_POST数组。 先将GET方法请求的解析成变量,然后在利用extract() 函数从数组中将变量导入到当前的符号表。 所以
web135133plus
整理: ctfshow{f62d7d4b-8e24-4db0-ae4c-df4ff96b96c3} web136tee:读取标准输入的数据,并将其内容输出成文件。
访问1下载发现根目录下有flag
访问下载得到flag web137call_user_func — 把第一个参数作为回调函数调用,支持数组 静态函数的调用不需要创建对象
web138strripos — 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写) 这里相当于过滤了:
web139知识点:命令盲注
ls / -1:一行一行的输出目录 cut -c 1 剪下来第一个字母 awk "NR==1":指定第一行 脚本:
得到:bin devx etc f149_15_h3r3 home etc f149_15_h3r3中可能有flag
运行得到flag (提示:小心环境过期) web140弱类型比较 使
web141前提:执行? 1-('phpinfo')()-1;? 也可以输出phpinfo
先试一下
发现: 可以输出phpinfo 我们可以构造
使用和上面相同的方法,得到
所以传参
得到 下一步
就可以拿到flag了 web142考数学的题目……
? web143用141的方法,把 - 改为 * 即可,或者其他的符号
web144调换一下位置即可
web145这道题把异化的符号过滤了 ^ 可以考虑其他的位运算符 取反:
配合三元运算符传参:
web146在上一题的基础上过滤了冒号 使用或运算绕过
web147create_function()函数:创建一个以第一个参数为参数,第二个参数为函数体的函数 php里默认命名空间是\,所有原生函数和类都在这个命名空间中。 普通调用一个函数,如果直接写函数名function_name()调用,调用的时候其实相当于写了一个相对路径;而如果写\function_name()这样调用函数,则其实是写了一个绝对路径。如果你在其他namespace里调用系统类,就必须写绝对路径这种写法
web148使用141的异或
web149传一句话木马即可
web150UA写入一句话木马
写入之后
? web151
(不太理解)? |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 7:31:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |