实验吧Web-天网管理系统
笔记
== : 比较运算符号 不会检查条件式的表达式的类型
===: 恒等计算符 , 同时检查表达式的值与类型。(会检查表达式类型,如bool)
PHP序列化与反序列化
serialize() 对输入的数据进行序列化转换
unserialize() 恢复原先变量,还原已经序列化的对象。
关于php序列化与反序列化,可以参考: http://www.111cn.net/phper/php-cy/62969.htm
intval():变量转成整数类型
如果参数是字符串,则返回字符串中第一个不是数字的字符之前的数字串所代表的整数值。
如果字符串第一个是‘-',则从第二个开始算起。
如果参数是浮点数,则返回他取整之后的值。
当然intval()返回的值在一个4字节所能表示的范围之内(-2147483648~2147483647),对于超过这个范围的值将用边界值代替。
* 当php进行一些数学计算的时候,当有一个对比参数是整数的时候,会把另外一个参数强制转换为整数。
1 var_dump(0 == '0'); // true
2 var_dump(0 == 'abcdefg'); // true
3 var_dump(0 === 'abcdefg'); // false
4 var_dump(1 == '1abcdef'); // true
* bool类型的true跟任意字符串可以弱类型相等
链接: http://www.shiyanbar.com/ctf/1810
考点: PHP弱类型
点击"登录"没反应,右击查看源代码,发现这么一段:
这里说明要为用户名传入一个字符串,并且它经过md5加密后要等于0。
在某些情况下,PHP会把类数值数据(如含有数字的字符串等)转换成数值处理,== 运算符就是其中之一。在使用 == 运算符对两个字符串进行松散比较时,PHP会把类数值的字符串转换为数值进行比较,如果参数是字符串,则返回字符串中第一个不是数字的字符之前的数字串所代表的整数值。比如: '3' == '3ascasd'结果为true。
因此只要找到一个字串加密后第一个字符为0即可,这里提供几个:240610708,aabg7XSs,aabC9RqS
在用户名处输入以上其中一个字符串,提交后出现提示: /user.php?fame=hjkleffifer
访问得到源代码:
$unserialize_str = $_POST['password'];
$data_unserialize = unserialize($unserialize_str);
if ($data_unserialize['user'] == '???' && $data_unserialize['pass'] == '???') {
print_r($flag);
}
代码意思是把post提交的password值经过"反序列化"得到一个数组,要求数组里的user和pass都等于某个值时就打印flag。
但是我们不知道两处???到底是什么,因此无法考虑用php函数构造这样的值。
别忘了还有一个提示: "伟大的科学家php方言道:成也布尔,败也布尔" ,bool类型的true跟任意字符串可以弱类型相等。因此我们可以构造bool类型的序列化数据 ,无论比较的值是什么,结果都为true。(a代表array,s代表string,b代表bool,而数字代表个数/长度)
构造password值为: a:2:{s:4:"user";b:1;s:4:"pass";b:1;}
在密码栏中提交构造的值,即可获取flag: ctf{dwduwkhduw5465}
实验吧Web-天网管理系统的更多相关文章
- 实验吧web天网管理系统
直接查看源码 <!--$test=$_GET['username']>这一行 源码的下面给了我们一些提示:我们输入的username经过md5加密后会赋值给test.当test为0时就会跳 ...
- 实验吧CTF天网管理系统
天网你敢来挑战嘛 格式:ctf{ } 解题链接: http://ctf5.shiyanbar.com/10/web1/ 打开链接后,嗯,光明正大的放出账号密码,肯定是登不进的,查看源代码 看来是和md ...
- 【实验吧】因缺思汀的绕过&&拐弯抹角&&Forms&&天网管理系统
<?php error_reporting(); if (!isset($_POST['uname']) || !isset($_POST['pwd'])) { echo '<form a ...
- 实验吧_密码忘记了(vim编辑器+代码审计)&天网管理系统(php弱比较+反序列化)
密码忘记了 一开始尝试了各种注入发现都无效,在网页源码中找到了admin 的地址,输入地址栏发现并没有什么有用的信息,随便输个邮箱,网页返回了一个地址 ./step2.php?email=youmai ...
- 实验吧之【Forms、天网管理系统】
Forms 原题链接 http://ctf5.shiyanbar.com/10/main.php Form 其实是个提示,代表html表单 F12 查看源码,发现 <input name=&qu ...
- 实验吧web题(26/26)全writeup!超详细:)
#简单的SQL注入 http://www.shiyanbar.com/ctf/1875 1)试着在?id=1,没有错误 2)试着?id=1',出错了,有回显,说明有注入点: You have an e ...
- 实验吧web解题记录
自以为sql注入掌握的还是比较系统的,然而,做了这些题之后才发现,大千世界无奇不有,真是各种猥琐的思路...还是要多学习学习姿势跟上节奏 登录一下好吗?? http://ctf5.shiyanbar. ...
- 20145231熊梓宏 《网络对抗》 实验8 Web基础
20145231熊梓宏 <网络对抗> 实验8 Web基础 基础问题回答 ●什么是表单? 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入信息的元素,表单在网页中主要负责数据采集 ...
- 实验八 Web基础 SQL注入原理
实验八 Web基础 实验要求 (1)Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2)Web前端javascipt ...
- 实验吧web题:
实验吧web题: 这个有点简单 因为刚了解sqlmap,所以就拿sqlmap来练练手了 1,先测试该页面是否存在sql注入漏洞 2.找到漏洞页面,复制url,然后打开sqlmap 先查看当前数据库 然 ...
随机推荐
- Photoshop像素级画笔工具
1.直线工具 2.选择颜色,选择像素 dd
- BZOJ1013 [JSOI2008]球形空间产生器sphere(高斯消元)
1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4846 Solved: 2525[Subm ...
- 使用代码分析来分析托管代码质量 之 CA2200
vs的代码分析功能:vs菜单 “生成”下面有“对解决方案运行代码分析 Alt+F11”和“对[当前项目]运行代码分析”2个子菜单. 使用这个功能,可以对托管代码运行代码分析,发现代码中的缺陷和潜在问题 ...
- Mac OS 上 CRT 的终端设置
这种设置完全是个人习惯, 切勿效仿!!! 整个终端是 白底黑字 显示方式(奇葩中的奇葩) 1) ANSI Color & Use color scheme 同时勾选 2) Characte ...
- win8及win8.1商店出现0X80073CF9的解决办法!
//添加appinstallagent无效的方法 http://jingyan.baidu.com/article/e52e3615a2b38f40c60c51d3.html
- github从上传代码到发布静态网站
1.上传代码 第一步:建立git仓库 cd到你的本地项目根目录下,执行git命令 git init 第二步:将项目的所有文件添加到仓库中 git add . 如果想添加某个特定的文件,只需把.换成特定 ...
- 分享基于.NET MVC+EF CodeFirst+IOC+EasyUI的框架设计
**注:要做工,没什么时间,等有空时会上传到GIT,项目结构如上,简单的说一下: **支持IOC及多数据库等,各项目由MVC区域隔离: 主要使用基于接口与抽象类进行高度的抽象与接口隔离,与其它框架比较 ...
- Java 年月日 日期加减
public static String DATE_YEAR="YEAR";//年 public static String DATE_MONTH="MONTH" ...
- winform控件跨线程委托
1. this.listBox1.BeginInvoke(new Action(() => { if (listBox1.Items.Count > 20) listBox1.Items. ...
- UNIX基础--磁盘组织
磁盘组织 FreeBSD 查找文件的最小单位是文件名. 而文件名区分大小写,不凭文件扩展名去识别这个文件是 程序. 文档, 或是其他格式的数据. 在文件系统里目录和文件的作用是存储数据. 每一个文件系 ...