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了
PHP2(phps)- URL编码解码原理相关推荐
- java url加密解密,java URL 编码解码,该如何解决
java URL 编码解码 我写了两个接口 一个是对字符串加密 的,一个是解密的 .加密的可以通过调用接口生成加密字符串如下: Oc0PEwKrLzHqT25hYLhWP5wlk5HROPJoWC3 ...
- 编码解码--url编码解码
url编码解码,又叫百分号编码,是统一资源定位(URL)编码方式.URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通 ...
- URL编码解码工具类
/****************************************************************************** * CREATETIME : 2016年 ...
- URL编码/解码详解
URL编码/解码详解 当 URL 路径或者查询参数中,带有中文或者特殊字符的时候,就需要对 URL 进行编码(采用十六进制编码格式).URL 编码的原则是使用安全字符去表示那些不安全的字符. 安全字符 ...
- Base64编码解码原理详解
Base64编码解码原理详解 1. Base64字符的组成部分 Base64所用字符: 0,1,2 -.9 A,B,C,D-Z a,b,c,d-z + / 对应ASCII: 48,49-58,65,6 ...
- PHP和javascript中url编码解码详解
在实际开发中,我们可能会遇到路径编码解码的问题,下面总结了一下: PHP中: 1.urlencode(编码),urldecode(解码) $a = urlencode('http://www.baid ...
- JavaScript对url编码解码
只有 0-9[a-Z] $ - _ . + ! * ' ( ) , 以及某些保留字,才能不经过编码直接用于 URL. **比如:**搜索的中文关键字,复制网址之后再粘贴就会发现该URL已经被转码. 1 ...
- python3 url 编码 解码
对于url编码的转换,主要用urllib.parse包中的quote和unquote方法. quote进行编码,unquote进行解码. 代码实例: import urllib.parseu = &q ...
- 利用百度进行URL编码解码
以后大家在碰到解析URL编码的时候就不用在从网上下载工具了 利用百度就可以了哈 是这样的 http://www.baidu.com/s?wd=("="号后面输入你要解码的URL编码 ...
最新文章
- 线程中消费者生产者的实例代码(使用Lock类)
- Php-SPL库中的迭代器类详解(转)
- 挑战独立开发项目能力___ITlanbao
- 16 分频 32 分频是啥意思_Verilog 数字分频器的设计及验证
- git pull 失败 ,提示:fatal: refusing to merge unrelated histories
- java实现物体下落效果_手撸一个物体下落的控件,实现雪花飘落效果
- mysql监听串口_tcp与串口透传(select)
- FGUI弧形UI实现
- CentOS 操作系统初识
- ActiveX开发详解
- 把m个球放到n个盒子里,有多少种方法 球盒问题,8种情况
- 数据结构与算法笔记(青岛大学王卓老师视频)
- 农业动物相关数据集与算法——调研整理
- Web站相关知识与Web程序的访问流程
- 19.通证的分类(各种分类一览表)
- Adobe Acrobat Pro DC 2022:专业高效的PDF阅读和编辑利器!
- 三星S4 I9502刷机教程
- 摄像机忘记密码怎么办
- RGB、Lab等颜色空间的区别
- EZ-USB FX2单片机原理、编程及应用 读书笔记