攻防世界PHP2

文章讲述了在访问index.php时遇到的问题,强调了对URL参数如id=admin进行两次编码的重要性。通过解释urlencode和urldecode的工作原理,指出浏览器会对URL自动解码一次,因此需要对admin进行两次编码来避免误解。通过编码实验,得出对admin进行两次编码的结果为%2561%2564%256d%2569%256e,这个过程在解决潜在的安全漏洞中起到关键作用。
摘要由CSDN通过智能技术生成

首先进入题目

 接着扫描一下后台文件

 然后访问index.php

 

 

 结果还是处在原页面

 

那么index.php访问结果还是和原来的一样就访问index.phps得到

接着要进行代码审计,但是在此之前要搞清楚urdecode和urlencode的区别。

urlencode和urldecode

  urlencode对URL进行编码。URL是一个字符串,urlencode把它理解为一个字节流,直接对每个字节进行转换,转换规则是把每个字节转换为%HH的形式,HH等于字节的ASCII码值。如果URL中包含了中文参数,根据中文参数编码的区别,会决定urlecode的结果有所不同。

  urldecode是把经过urlencode编码后得到的字符串还原为原始状态,根据urlencode的规则可知,urldecode的输入字符都在ASCII编码的范围内。

代码审计发现变量id='admin'要进行url编码,将编码后的admin赋予id,如果有人不信要对admin进行url编码,那不妨试一下/?id=admin,得到

 所以要搞清楚对‘admin’进行url编码

注意:浏览器本身会进行url解码,这里就相当于对注入的id进行两次解码,所以'admin'要进行两次编码

首先搞清楚url编码,可以分别对'admin'进行编码,然后拆分组合,同时也可以一次性对'admin'进行编码,拆分组合的数据和统一编码的数据一致就得到两次编码后正确的值

 

 再一次进行编码

 

接着进行分析,a 第一次编码得到%61,第二次编码得到%25%36%31,a的ascii值是97,而97的十六进制是61,再加上一个%,得到%61,第二次编码分别对%,6,1进行编码,%的ascii值是37,37的hex值是25,再加上一个%,就得到%25,剩下的同理

url编码得到的值是%加上两个数字,解码时也就是%25解码为%,但是在解码时,数字就不会被解码,所以a进行两次编码后得到的值为%2561,即就找到了两次编码的规则,a=%2561,同理其他字母编码也是一样的。(%25解码得到%,61不会被解码,但是%2561最终的解码还是会得到a)

所以对'admin‘进行编码得到%2561%2564%256d%2569%256e

最后一步请求/?id=%2561%2564%256d%2569%256e

得到flag

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值