| |
|
开发:
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字符替换,这里使用双写绕过替换规则: 进行到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 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/23 6:48:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |