PHP2(url二次编码)

PHP2

抓包查看 什么也没有  那就扫一下目录吧 御剑开启

发现了index.phps  可能你没扫到 那说明你该把它添加到你的字典里了

访问

感觉好像少了点什么,查看一下源代码

让我们传入一个id 不能直接传入admin  但是对id使用urldecode以后的值还必须是admin     这个时候就要使用url二次编码了

说一下我对url二次编码的理解

当我们在url输入数据的时候,url会对其进行url编码 比如输入空格的时候会自动编码为%20 而当服务器在接收这些数据的时候会自动进行url解码

可以看到当我使用hackbar的load时,url中的‘变成了%27,当服务器接到数据后 %27又会被解码为‘

二次编码就是在%27的基础上再进行一次编码  就会变成%2527 因为%进行url编码以后为%25

这道题就利用了这个原理,当看到php里有urldecode的时候就要想到二次编码

我们对admin进行url编码,使用御剑1.5的内置编码工具

对其再次进行url编码   就是%2561%2564%256D%2569%256E

当我们以这种形式输入到url中时,服务器端会解码为%61%64%6D%69%6E而不是admin,而php urldecode会再次解码为admin 这样就绕过了上面的限制并且满足了下面的条件

最后拿到flag

原文地址:https://www.cnblogs.com/sharpff/p/10728794.html

时间: 2024-10-30 16:06:01

PHP2(url二次编码)的相关文章

接口调用时对url进行Encode编码

一,对url进行utf-8编码 1)在接口调用中可能会遇到需要对url进行编码与解码问题,在网络上找了相应方法,以提供参考 二,网络上找到的编码与解码工具类 package com.rain.demo; import java.io.UnsupportedEncodingException; public class UTF8{ /** * Utf8URL编码 * @param s * @return */ public static final String Utf8URLencode(Str

SQL注入防御绕过——二次编码之干掉反斜杠

SQL注入防御绕过--二次编码 01 背景知识 一.为什么要进行URL编码 通常如果一样东西需要编码,说明这样东西并不适合传输.对于URL来说,编码主要是为了避免引发歧义与混乱.例如,URL参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/?name=abc&pwd=123如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和= 符号进行转义,也就是对其进行编码.对于URL编码的深入研

关于web开发工程中URL参数的编码问题

近日在项目中,在velocity开发的页面模板中的使用a标签创建链接,并且带有需要提交的参数(这里没有使用form的原因是因为该模板生成的email,发送给客户,由于客户的email客户端可能是https,而模板上面的链接并不是跳转到https的站点,使用form将导致浏览器这种混合的链接).当通过该模板生成的页面上进行跳转时,发现链接提交的参数发生了变化,具体表现是参数提交时是一串包含10位任意可输出字符的字符串,字符串里有“+”字符,提交后后台后“+”字符不见了,取而代之是一个空格.通过fi

PHP安全的URL字符串base64编码和解码

这篇文章主要介绍了PHP安全的URL字符串base64编码和解码,在base64的基础上替换了不安全的一些字符,需要的朋友可以参考下 如果直接使用base64_encode和base64_decode方法的话,生成的字符串可能不适用URL地址.下面的方法可以解决该问题: URL安全的字符串编码: function urlsafe_b64encode($string) {    $data = base64_encode($string);    $data = str_replace(array

url为什么要编码

在做通过关键词查询条目的需求时,发现前端IOS传过来的"中文关键字"是通过url编码的字串,直接使用,我们是是用不了的,拿php为例,我们需要对该值使用urldecode()函数进行解码,解码后就会是对应的中文了.当时觉得很纳闷,为什么前端要对参数编码后传给后台,心里的答案时为了安全起见,防止别人截取url后对其中的参数进行解析.但是,总感觉好模棱两可,既然我后台可以解码出正确值,为什么截取了你url的人不可以呢,如此哪来的安全可言. 于是,我就问了问之前工作的ios的同事,结果,他斩

HttpUtility.UrlEncode 方法 (String) 对 URL 字符串进行编码 NET Framework 4.6 and 4.5

对 URL 字符串进行编码. 这些方法重载可用于对整个 URL(包括查询字符串值)进行编码. 要编码或解码 Web 应用程序之外的值,请使用 WebUtility 类. 重载此成员.有关此成员的完整信息(包括语法.用法和示例),请单击重载列表中的相应名称.

Objective-C 对 URL 进展 URLEncode 编码

Objective-C 对 URL 进行 URLEncode 编码在 iOS 程序访问 HTTP 资源时需要对 URL 进行 Encode,比如像拼出来的 +&sd f&p2=中文,其中的中文.特殊符号&%和空格都必须进行转译才能正确访问. 在 Java..net 和 JS 中都有相应的 encodeURL 方法可用,在 Objective-C 语言中,你可以试下 - (NSString *)stringByAddingPercentEscapesUsingEncoding:(NS

Python从入门到放弃_二次编码_深浅拷贝

# 1.二次编码# encode 编码# decode 解码 # 2.基础数据类型补充 # 列表不能循环添加 变成死循环# 列表使用for循环删除元素 for循环的计数 删除不干净 # 字典删除元素 # 字典for的不能被修改 # dict.fromkeys() #######################坑值是可变类型######################### # 3.深浅拷贝 # 浅拷贝: 只拷贝第一层元素 计算机在找值得过程# 深拷贝 不可变数据类型共用一个内容,可变数据类型重新

基本数据类型补充及二次编码

基本数据类型补充及二次编码 基本数据类型补充 1.字符串str 1.1 首字母大写 .capitalize() name = 'alex' name = name.capitalize() print(name) # 结果:Alex 1.2 每个单词首字母大写 .title() name = 'alex_sb' name = name.title() print(name) # 结果:Alex_Sb 1.3 大小写反转 .swapcase() name = 'alex' name = name.