IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> ctf web 备份是个好习惯 -> 正文阅读

[PHP知识库]ctf web 备份是个好习惯

题目:

打开网址出现:

看着像是两段重复的md5摘要,用解码工具解码,得到:

看出似乎是对空字符生成了md5码并输出,回头看题目描述:备份是个好习惯,猜测是查看备份文件

尝试输入网址 http://114.67.175.224:18504/index.php.bak,果然得到一个备份文件:index.php.bak

删除文件后缀名 .bak,打开文件:

php代码解释:

第11行:$str = strstr($_SERVER['REQUEST_URI'], '?');

$_SERVER[]预定义超全局数组变量的一种,是一个包含了诸如头信息(Header),路径(path),以及脚本位置(script location)等信息的数组

$_SERVER['RWQUEST_URI']是指访问的整个url网址,例如访问?

"http://114.67.175.224:18504?key=123&b=4"?? (以下举例都先用该url)

则$_SERVER['RWQUEST_URI']=? "http://114.67.175.224:18504?key=123&b=4"

strstr()函数:搜索一个字符串在另一个字符串中的第一次出现的位置,返回字符串的其余部分(从匹配点)。

因此第11行代码含义就是将整个url中?之后的部分赋予$str变量,如对于上诉网址,$str="?key=123&b=4";

第12行:$str = substr($str,1);

substr(string,start,length),函数返回字符串string的一部分,start为开始位置(默认开始为0),length为返回的字符串长度。

所以第十二行含义是$str="key=123&b=4" (按以上url)

第13行:$str = str_replace('key','',$str);

str_replace(find_s,replace,string),指用字符串relpace代替string中出现的字符串find_s,

则,第13行代码的含义是将$str中出现的所有"key"代替成空字符,结果如:$str="=123&b=4"

第14行:parse_str($str);

parse_str()函数可以将一串字符串解析成多个变量,按上例url,结果为:

$=123?? $b=4

通过第15行和第17行输出了$key1和$key2的md5码,因为函数没有为$key1和$key2赋值。结合起初打开网页看到的两串解码为空字符的md5码,$key1和$key2均为空字符

根据这个if语句,可以推出当$key1和$key2的md5码相同,而$key1和$key2不同时,会输出flag,

因此可以结合函数输入网址:http://114.67.175.224:18504?key1=...&key2=..."为key1与key2赋值,

但由于第13行,会将字符串中的key字符替换,这里使用双写绕过替换规则:
即字符串写成"kkeyey1=...&kekeyy2=..."时,该函数只会替代源字符串的key,最终得到想要的结果"key1=...&key2=..."

进行到if语句判断,这里利用了php弱类型的漏洞:MD5绕过的技巧_网安溦寀的博客-CSDN博客

对于if(md5($key1) == md5($key2)),想要满足这个判断只需要构造出MD5值为0e开头的字符串,弱类型比较会认为字符串使用了科学技术法,0的多少次方都是0,因此可以绕过

因此只要使得$key1与$key2是两个不同的但是MD5码都是0e开头的字符串即可

输入网址:http://114.67.175.224:18504?kkeyey1=QNKCDZO&kekeyy2=240610708

得到结果:

?

?

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:26:59  更:2022-04-07 22:27:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 13:47:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码