urldecode二次编码
2024-09-07 14:41:55
0x01
<?php
if(eregi("hackerDJ",$_GET[id])) {
echo("not allowed!");
exit();
}
$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "hackerDJ")
{
echo "Access granted!";
echo "flag";
}
?>
eregi()
定义:
- 不区分大小写大正则表达式匹配
语法:eregi(pattern,string)
- pattern,必需,正则表达式
- string,必需,要匹配的字符串
0x02 代码分析
传入的id值,不能等于hackerDJ
传入的id值再经过urldecode解码
如果此时,id值等于hackerDJ
输出flag
对传入的id值进行url两次编码,一次是用于浏览器正常解码,另一次用于代码中解码。
payload
http://123.206.87.240:9009/10.php?id=%2568ackerDJ
%2568ackerDJ解码为%68ackerDJ
绕过第一个判断
%68ackerDJ解码为hackerDJ
绕过第二个判断
得到flag
最新文章
- 对C语言islower、isupper、isdigit函数的测试
- Linux中find常见用法示例
- Redis时延问题分析及应对
- 黑马程序员_ Objective-c 之block、protocol学习笔记
- DataSnap 2009 系列之三 (生命周期篇)
- 面向切面编程AOP:基于XML文件的配置
- ls命令详解
- 使用openxml读取xml数据
- 170. Two Sum III - Data structure design
- vlookup使用案例
- 矢量编程——随着MNIST案例
- 500. Keyboard Row
- python-初识python
- H5唤醒app,第三方开源库
- 【调试基础】Part 2 文本字符
- 考研计算机复试笔试(数据结构/C语言简答题篇)
- python的文件读写笔记
- react那些事儿
- 关于vue,webpack 中 “exports is not defined”报错
- PHP错误:Namespace declaration statement has to be the very first statement in the script