实验吧-PHP大法-eregi()函数
题目地址:http://www.shiyanbar.com/ctf/54
题目:
<?php
if(eregi("hackerDJ",$_GET[id])) {
echo("<p>not allowed!</p>");
exit();
} $_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "hackerDJ")
{
echo "<p>Access granted!</p>";
echo "<p>flag: *****************} </p>";
}
?> <br><br>
Can you authenticate to this website?
PHP 函数 eregi()
语法
int eregi(string pattern, string string, [array regs]);
定义和用法
eregi()函数在一个字符串搜索指定的模式的字符串。搜索不区分大小写。Eregi()可以特别有用的检查有效性字符串,如密码。 可选的输入参数规则包含一个数组的所有匹配表达式,他们被正则表达式的括号分组。 返回值
如果匹配成功返回true,否则,则返回false Example
下面是一段代码,这段代码复制并粘贴到一个文件中并验证结果。 <?php $password = "abc";
if (! eregi ("[[:alnum:]]{8,10}", $password))
{
print "Invalid password! Passwords must be from 8 - 10 chars";
}
else
{
print "Valid password";
}
?>
这将会产生以下结果: Invalid password! Passwords must be from - chars
解题思路:
id变量是一个url解码函数前不包含hackerDJ,url解码函数后为hackerDJ的变量,即id在进入url解码函数前必须是hackerDJ的url编码形式
注意:
id通过url形式传递,浏览器会自动url解码一次,直接
?id=%%%%6B%%%%4A
是不行的
这样浏览器自动解码后即为hackerDJ,被eregi()拦住
所以要进行二次编码,即对%68%61%63%6B%65%72%44%4A进行url编码
实验吧-PHP大法-eregi()函数的更多相关文章
- 实验吧Web-PHP大法
笔记 字符串比对解析,与大小写无关. eregi()函数 语法: eregi(string pattern, string string, array [regs]); 返回值: 整数/数组 特点:P ...
- 在实验中观察指针——C++ 函数参数的压栈顺序
前言 好久没写东西了,突发奇想,写写函数参数的压栈顺序 先看看这个问题 https://q.cnblogs.com/q/137133/ 然后看我简化的代码,猜输出结果是多少? #include< ...
- 一些实验中用过的python函数/方法(持续更新)
衡量运行时间 很多时候你需要计算某段代码执行所需的时间,可以使用 time 模块来实现这个功能. import time startTime = time.time() # write your co ...
- C语言函数指针实验
上次看Atmel的示例工程,发现人家使用了函数指针的结构体(函数指针结构体).感叹人家的C语言功夫审核,自己费劲还是只能读懂的份.不过,函数指针确实好用.今天就试试这个超牛的东西.Now let's ...
- 实验与作业(Python)-02 Python函数入门与温度转换程序
截止日期 实验目标 学会定义函数,使用函数.学会导入在某个文件中定义的函数. input获得值,然后通过eval或者int.float将其转换为相应的类型. 学会使用列表:访问列表.append.遍历 ...
- C++实验二——函数重载、函数模板、简单类的定义和实现
一.实验过程 函数重载编程练习 实验要求:编写重载函数add(),实现对int型,double型,complex型数据的加法.在main函数中定义不同类型的数据,调用测试. 代码实现: 先是简单的体验 ...
- 实验1 C++函数
一.实验目的: 掌握定义函数的方法.函数实参与形参的对应关系以及“值传递”的方式. 熟悉函数的嵌套调用和递归调用的方法. 熟悉全局变量.局部变量概念和使用方式. 二.实验内容: 运行调试第2章编程示例 ...
- 实验与作业(Python)-02 Python函数入门与温度转换程序(函数、input、eval、int、float、列表)
截止日期 实验目标 学会定义函数,使用函数.学会导入在某个文件中定义的函数. input获得值,然后通过eval或者int.float将其转换为相应的类型. 学会使用列表:访问列表.append.遍历 ...
- 实验吧writeup
后台登录 1.看源码有这样一段php代码<!-- $password=$_POST['password']; $sql = "SELECT * FROM admin WHERE use ...
随机推荐
- 本地安装sass出错问题解析
2016年3月23日个人博客文章--迁移到segmentfault 安装sass ruby安装因为sass依赖于ruby环境,所以装sass之前先确认装了ruby.先导官网下载个ruby 在安装的时候 ...
- 阅读之spring+Dubbo
pringBoot+Dubbo 搭建一个简单的分布式服务 地址 什么是 Duboo? Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能.轻量级的开源Java RPC ...
- 2017 网易游戏互娱游戏研发4.21(offer)
网易游戏互娱(offer) 去年这个时候就参加过网易游戏的实习生招聘,到今年总共收到了4次拒信.不过这次运气好,终于get了最想要的offer.去年实习生互娱笔试挂,秋招笔试挂,今年春招互娱投了连笔试 ...
- win10 去掉资源管理器左侧的Creative Cloud Files
open regedit 依次打开HKEY_CLASSES_ROOT\CLSID\{0E270DAA-1BE6-48F2-AC49-95A54E35F3C4} 双击{0E270DAA-1BE6-48F ...
- ython CGI编程Ⅱ
HTTP头部 hello.py文件内容中的" Content-type:text/html"即为HTTP头部的https://www.xuanhe.net/一部分,它会发送给浏览器 ...
- MySQL--关于MySQL的那些练习题
之前联系了一些MySQL的查询相关知识,现在补充作为一个记录,免得自己忘记. 致谢博主:https://blog.csdn.net/dehu_zhou/article/details/52881587 ...
- js callback回调的一种写法
getLocation.cityname(latitude, longitude, function (data1) { SetCityCallBack(data1); }); 定义方法: var g ...
- JavaScript 数组1—索引数组
索引数组:下标是数字数组 ㈠什么是? 内存中连续储存多个数据的数据结构,再起一个统一的名字 ㈡为什么? ①普通的变量只能存储一个数据程序=数据结构+算法 ②算法:解决问题的步骤 ③数据结构:数据在内存 ...
- 什么是iframe及作用是什么?
一. iframe是什么及作用 iframe是嵌入式框架, 是html标签, 还是一个内联元素, iframe 元素会创建包含另外一个文档的内联框架(即行内框架) . 说白了, iframe用来在页面 ...
- Java多线程和并发(八),synchronized底层原理
目录 1.对象头(Mark Word) 2.对象自带的锁(Monitor) 3.自旋锁和自适应自旋锁 4.偏向锁 5.轻量级锁 6.偏向锁,轻量级锁,重量级锁联系 八.synchronized底层原理 ...