先用御剑扫一下

根据题目名字和扫描结果,我们访问一下网站的首页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编码解码原理相关推荐

  1. java url加密解密,java URL 编码解码,该如何解决

    java URL 编码解码 我写了两个接口 一个是对字符串加密 的,一个是解密的  .加密的可以通过调用接口生成加密字符串如下: Oc0PEwKrLzHqT25hYLhWP5wlk5HROPJoWC3 ...

  2. 编码解码--url编码解码

    url编码解码,又叫百分号编码,是统一资源定位(URL)编码方式.URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通 ...

  3. URL编码解码工具类

    /****************************************************************************** * CREATETIME : 2016年 ...

  4. URL编码/解码详解

    URL编码/解码详解 当 URL 路径或者查询参数中,带有中文或者特殊字符的时候,就需要对 URL 进行编码(采用十六进制编码格式).URL 编码的原则是使用安全字符去表示那些不安全的字符. 安全字符 ...

  5. 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 ...

  6. PHP和javascript中url编码解码详解

    在实际开发中,我们可能会遇到路径编码解码的问题,下面总结了一下: PHP中: 1.urlencode(编码),urldecode(解码) $a = urlencode('http://www.baid ...

  7. JavaScript对url编码解码

    只有 0-9[a-Z] $ - _ . + ! * ' ( ) , 以及某些保留字,才能不经过编码直接用于 URL. **比如:**搜索的中文关键字,复制网址之后再粘贴就会发现该URL已经被转码. 1 ...

  8. python3 url 编码 解码

    对于url编码的转换,主要用urllib.parse包中的quote和unquote方法. quote进行编码,unquote进行解码. 代码实例: import urllib.parseu = &q ...

  9. 利用百度进行URL编码解码

    以后大家在碰到解析URL编码的时候就不用在从网上下载工具了 利用百度就可以了哈 是这样的 http://www.baidu.com/s?wd=("="号后面输入你要解码的URL编码 ...

最新文章

  1. 线程中消费者生产者的实例代码(使用Lock类)
  2. Php-SPL库中的迭代器类详解(转)
  3. 挑战独立开发项目能力___ITlanbao
  4. 16 分频 32 分频是啥意思_Verilog 数字分频器的设计及验证
  5. git pull 失败 ,提示:fatal: refusing to merge unrelated histories
  6. java实现物体下落效果_手撸一个物体下落的控件,实现雪花飘落效果
  7. mysql监听串口_tcp与串口透传(select)
  8. FGUI弧形UI实现
  9. CentOS 操作系统初识
  10. ActiveX开发详解
  11. 把m个球放到n个盒子里,有多少种方法 球盒问题,8种情况
  12. 数据结构与算法笔记(青岛大学王卓老师视频)
  13. 农业动物相关数据集与算法——调研整理
  14. Web站相关知识与Web程序的访问流程
  15. 19.通证的分类(各种分类一览表)
  16. Adobe Acrobat Pro DC 2022:专业高效的PDF阅读和编辑利器!
  17. 三星S4 I9502刷机教程
  18. 摄像机忘记密码怎么办
  19. RGB、Lab等颜色空间的区别
  20. EZ-USB FX2单片机原理、编程及应用 读书笔记

热门文章

  1. 从SCTF看JWT安全 (附SCTF web writeup)
  2. Ubuntu系统的opencv 3.4安装
  3. [推荐]在线照相大头贴功能
  4. SpringBoot源码初学者(二):SpringBoot事件监听器
  5. 电脑大神私藏很久的精品软件,都是百里挑一的神器
  6. 国科大学习资料--图像处理(彭思龙、杨戈)--学长笔记整理
  7. Android的折叠华为,微软发布安卓系统折叠手机,难超华为
  8. visual studio软件破解方法
  9. 钉钉机器人实现卡片互动
  10. 增强现实 :北京触景无限的AR产品,国外的WiKiTude SDK