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知识库 -> ctfshow红包第六弹 -> 正文阅读

[PHP知识库]ctfshow红包第六弹

在开始界面点击hint得到提示信息:
在这里插入图片描述
打开连接得到的是一个登录界面,前面提示了不是sql注入,直接放弃尝试,查看网页源码得到信息:

<script>
		function login(s){  
		var u=document.getElementById("username").value;
		var p=document.getElementById("password").value;
        var xhr = new XMLHttpRequest();  
        xhr.open('GET', "login.php?u="+u+"&p="+p);  
        xhr.responseType = 'arraybuffer';  
        xhr.onreadystatechange = function getPdfOnreadystatechange(e) {  
            if (xhr.readyState === 4) {  
              if (xhr.status === 200) {  
                 var data = (xhr.mozResponseArrayBuffer || xhr.mozResponse ||  
                            xhr.responseArrayBuffer || xhr.response);   
				if(data){
					ctfshow(s,data);
				}
              } 
            }  
        };  
        xhr.send(null);  
		}  
		function ctfshow(token,data){

			var oReq = new XMLHttpRequest();
			oReq.open("POST", "check.php?token="+token+"&php://input", true);
			oReq.onload = function (oEvent) {
				if(oReq.status===200){
						var res=eval("("+oReq.response+")");
						if(res.success ==1 &&res.error!=1){
							alert(res.msg);
							return;
						}
						if(res.error ==1){
							alert(res.errormsg);
							return;
						}
				}
				return;
			};
			oReq.send(data);
		}
	</script>

发现登录信息仿佛不是很重要的信息oReq.open("POST", "check.php?token="+token+"&php://input", true);
继续查看没有发现更多的有用信息,下一步尝试使用dirsearch进行扫描:
在这里插入图片描述
web.zip文件很有可能是网站的备份文件,解压后得到check.php.bak文件,查看文件内容:

function receiveStreamFile($receiveFile){
 
    $streamData = isset($GLOBALS['HTTP_RAW_POST_DATA'])? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
 
    if(empty($streamData)){
        $streamData = file_get_contents('php://input');
    }
 
    if($streamData!=''){
        $ret = file_put_contents($receiveFile, $streamData, true);
    }else{
        $ret = false;
    }
 
    return $ret;
 
}
if(md5(date("i")) === $token){
	
	$receiveFile = 'flag.dat';
	receiveStreamFile($receiveFile);
	if(md5_file($receiveFile)===md5_file("key.dat")){
		if(hash_file("sha512",$receiveFile)!=hash_file("sha512","key.dat")){
			$ret['success']="1";
			$ret['msg']="人脸识别成功!$flag";
			$ret['error']="0";
			echo json_encode($ret);
			return;
		}

			$ret['errormsg']="same file";
			echo json_encode($ret);
			return;
	}
			$ret['errormsg']="md5 error";
			echo json_encode($ret);
			return;
} 

$ret['errormsg']="token error";
echo json_encode($ret);
return;

发现这里是和key.dat文件进行强碰撞(内容不一样,但是两个文件的md5值相同,同时sha1值不相同)
key.dat文件key直接进行下载
借助工具:fastcoll_v1.0.0.5.exe生成两个md5值相同的文件。fastcoll_v1.0.0.5.exe -p key.dat -o 1.dat 2.dat
接下来直接将1.dat或2.dat直接作为post内容上传即可碰撞成功。

import requests
import time
import hashlib
import threading

def post(data):
	try:
		r=requests.post(url,data=data)
		if "ctfshow" in r.text:
			print(r.text)
	except Exception as e:
		pass

mi=str(time.localtime().tm_min)
m=hashlib.md5(mi.encode()).hexdigest()
url='http://ce61acc9-c947-4ac4-9d2c-3b81b8708df5.challenge.ctf.show:8080/check.php?token={}&php://input'.format(m)
with open('key.dat','rb') as f:
    data1=f.read()
with open('2.dat','rb') as f:
    data2=f.read()
for i in range(30):
	threading.Thread(target=post,args=(data1,)).start()
for i in range(30):
	threading.Thread(target=post,args=(data2,)).start()

直接执行上面的代码就可以成功(以上代码来自于一位大佬,有些地方我也不是很清楚)
完成这道题目后,进行了一下尝试将key.dat文件前面的Hellworld!删除掉也能成功,这就完全不知道为什么了!

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 10:58:37  更:2021-08-04 11:00:36 
 
开发: 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/7 0:09:27-

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