PHP2(phps)- URL编码解码原理

简介: PHP2(phps)- URL编码解码原理

先用御剑扫一下


根据题目名字和扫描结果,我们访问一下网站的首页index.php,并没有什么发现

但这里肯定与php有关,题目在php后面加了个2,想到phps,phps 文件就是 php 的源代码文件

通过访问index.phps,我们得到php的源码

代码审计后发现需要使用get传参给id传入admin,但是这里有urldecode()函数,要求对admin进行解码,所以我们在传入id值前要先对admin进行URL编码,即urlencode()函数

URL编码原理:将每个字母对应转换成16进制,且每个前面加%

我们可以看到URL默认对字母和数字不编码,这里第一次对字母或者数字的编码需要手动编码

按照上述方法,我们先将字母转成16进制,再都加上%得到:%61%64%6d%69%6e

也可以用Python自己写一个转换的脚本(仅针对字母数字)

同样得到:%61%64%6d%69%6e

这里还有一个问题就是,我们在浏览器输入admin时,浏览器本身就会对admin进行一次url解码,所以这里需要对admin进行二次url编码

第二次就可以直接使用在线编码工具了

当然我们也可以根据它的原理自己编码,因为%对应的16进制为25,而url默认对数字不会进行编码,所以只需要将%都换成25,且每个前面再加上%即可。

得到  %2561%2564%256d%2569%256e

使用get传参,传入id=%2561%2564%256d%2569%256e

即URL为http://61.147.171.105:58331/?id=%2561%2564%256d%2569%256e



拿到flag:cyberpeace{b4e9a68866fcac0d51add0b2e70d0600}


其他:


1、我们知道了如何手动URL编码,那么URL的解码呢?


通过观察我们不难看出,对于有%的URL解码:

去掉%,并将%后两位数字视为16进制,转换成对应的ASCII字符。

2、看了wp后,发现这里其实也可以只针对第一个字母来进行,什么意思呢?


对admin编码时,只针对a,将a转换成16进制为61,同理添加上%后为:%61dmin


二次编码,将百分号转换成16进制为25,加上%为:%2561dmin


即URL为:http://61.147.171.105:58331/?id=%2561dmin

解码时只针%后两位数字,%2561dmin 去掉百分号,25换为ASCII字符为%:%61dmin


二次解码,还是先去掉%,61换成ASCII为a:admin


总的来说这里可以将所有字母进行转换,也可以只转换第一个字母


我们只要能成功将admin传给id就可以拿到flag了

目录
相关文章
|
16天前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
46 2
|
3月前
|
存储 算法 网络安全
二进制加密PHP Webshell原理及简单实现
二进制加密PHP Webshell原理及简单实现
115 8
|
3月前
|
API
【Azure API 管理】Azure API Management在设置 Policy时,如何对URL进行解码呢? 使用 HttpUtility.UrlDecode 出错
【Azure API 管理】Azure API Management在设置 Policy时,如何对URL进行解码呢? 使用 HttpUtility.UrlDecode 出错
|
3月前
|
SQL 程序员 PHP
PHP网页下的注入原理
PHP网页下的注入原理
|
4月前
|
算法 PHP
【php经典算法】冒泡排序,冒泡排序原理,冒泡排序执行逻辑,执行过程,执行结果 代码
【php经典算法】冒泡排序,冒泡排序原理,冒泡排序执行逻辑,执行过程,执行结果 代码
33 1
|
4月前
|
JavaScript 前端开发 数据格式
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
238 0
|
5月前
|
PHP
php 根据url生成图片并保存
php 根据url生成图片并保存
93 0
|
6月前
|
存储 缓存 自然语言处理
深入PHP内核:理解OPcache的工作原理与优化实践
【5月更文挑战第6天】 在现代Web开发中,提升性能和响应速度是持续追求的目标。PHP作为一种广泛使用的服务端脚本语言,其执行效率至关重要。本文将深入探索PHP的OPcache(优化器缓存)组件,解析其如何改善PHP的性能表现。通过剖析OPcache的工作机制,我们将讨论有效的配置策略以及实践中的最佳优化方法,旨在帮助开发者充分理解并利用OPcache来提升应用性能。
|
6月前
|
数据采集 Python
python 如何url解码
【4月更文挑战第14天】
111 1