IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> BUUCTF WEB Easy Calc -> 正文阅读

[PHP知识库]BUUCTF WEB Easy Calc

题目:

?解题:

1:查看源码

? ? ? ? ?发现提示:I've set up WAF to ensure security.

? ? ? ? ? ? ? ? ? ? ? ? ? ?url:"calc.php?num=

2:尝试calc.php页面

????????过滤了一些特殊符号:空格、\t、\r等,正确传入num参数后,执行 eval('echo?'.$str.';'); 语句。

3:尝试num=phpinfo()?

? ? ? ? 输入:http://node4.buuoj.cn:25599/calc.php?num=phpinfo()

? ? ? ? ?无法访问,说明WAF对num参数做了过滤。

????????(WAF对来自Web应用程序客户端的各类请求进行内容检测和验证,确保其安全性与合法性,对非法的请求予以实时阻断,从而对各类网站站点进行有效防护。)

? ? ? ? 输入num=123可以回显123,输入num=abc被拒绝,猜测WAF对num参数过滤了英文字母。

4:查询字符串解析特性

parse_str函数????????

????????parse_str() 函数把查询字符串解析到变量中。

? ? ? ? 语法:parse_str(string,array)

? ? ? ? 参数:string:必需。规定要解析的字符串。

? ? ? ? ? ? ? ? ? ?array:可选。规定存储变量的数组名称。该参数指示变量存储到数组中。如果未设置 array 参数,由该函数设置的变量将覆盖已存在的同名变量。

? ? ? ? 具体介绍:https://www.runoob.com/php/func-string-parse-str.html

????????parse_str函数通常被自动应用于get、post请求和cookie中。如果你的Web服务器接受带有特殊字符的参数名,parse_str() 函数在解析的过程中会将某些特殊字符删除或用下划线代替。具体情形如下:?

情形问号处特殊字符解析结果
?foo_bar=bla%20? ( )foo_bar
%2b? (+)
foo?bar=bla%20? ( )
%2b? (+)
%2e? (.)
%5b? ([)
%5f? (_)
foo_bar?=bla%00? ()

? ? ? ? 可在php交互模式下自行验证:

5:利用查询字符串解析特性绕过WAF

????????WAF能够过滤特定Web应用程序的内容,利用查询字符串解析特性,将num参数变形:http://node4.buuoj.cn:25153/calc.php?+num=abc,这样对于WAF来说传入的参数为+num,而WAF并没有对+num参数做限制,而PHP经过parse_str函数解析过后获得的仍然是num参数,这样就绕过了WAF。

6:读根目录

scandir 函数

????????scandir(string?$directory,?int?$sorting_order)

????????返回指定目录中的文件和目录的数组。

????????参数:?directory:要被浏览的目录

????????????????????sorting_order:默认的排序顺序是按字母升序排列,如果sorting_order设为 1,则降序排列。

print_r 函数

????????print_r ( mixed $expression )

????????$expression: 要打印的变量,如果给出的是 string、integer 或 float 类型变量,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。

chr 函数

????????chr(int $ascii): string????????

????????返回相对应于 ascii码 所指定的单个字符。

? ? ? ? 因为 “/” 符号被过滤了,所以用chr(47)绕过。

????????读取根目录:http://node4.buuoj.cn:25345/calc.php?+num=print_r(scandir(chr(47)))

? ? ? ? 右键查看网页源代码得到:文件f1agg

?7:读取文件f1agg

readfile 函数

????????readfile(string: $filename, string:?$include_path)?

)

????????readfile() 函数输出一个文件。该函数读入一个文件并写入到输出缓冲,若成功,则返回从文件中读入的字节数;若失败,则返回 false。

? ? ? ? 参数:?$filename :?规定要读取的文件。

? ? ? ? ? ? ? ? ? ? $include_path:可选,在 include_path 中搜索文件。

????????http://node4.buuoj.cn:25345/calc.php?+num=readfile(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))

? ? ? ? 得到flag:

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 08:48:43  更:2021-08-28 08:50:44 
 
开发: 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/15 10:18:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码