CTF-后台登陆 WP

登陆地址:http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php

直接没有登陆,右键查看源代码发现问题:

	<!-- $password=$_POST['password'];
	$sql = "SELECT * FROM admin WHERE username = 'admin' and password = '".md5($password,true)."'";
	$result=mysqli_query($link,$sql);
		if(mysqli_num_rows($result)>0){
			echo 'flag is :'.$flag;
		}
		else{
			echo '密码错误!';
		} -->

可以看到sql语句,由于$password在md5方法之内,所以不存在sql注入。

但是有一处不一样的地方:

md5($password,true)

这里给md5方法加了第二个参数,ture,查看php说明:

定义和用法

md5() 函数计算字符串的 MD5 散列。

md5() 函数使用 RSA 数据安全,包括 MD5 报文摘要算法。

来自 RFC 1321 的解释 - MD5 报文摘要算法:MD5 报文摘要算法将任意长度的信息作为输入值,并将其换算成一个 128 位长度的"指纹信息"或"报文摘要"值来代表这个输入值,并以换算后的值作为结果。MD5 算法主要是为数字签名应用程序而设计的;在这个数字签名应用程序中,较大的文件将在加密(这里的加密过程是通过在一个密码系统下[如:RSA]的公开密钥下设置私有密钥而完成的)之前以一种安全的方式进行压缩。

语法

md5(string,raw)
参数描述
string必需。规定要计算的字符串。
raw

可选。规定十六进制或二进制输出格式:

  • TRUE - 原始 16 字符二进制格式
  • FALSE - 默认。32 字符十六进制数

技术细节

返回值:如果成功则返回已计算的 MD5 散列,如果失败则返回 FALSE。
PHP 版本:4+
更新日志:在 PHP 5.0 中,raw 参数变为可选的。

      通过文档可以看到,md5方法有第二个可选参数,当第二个参数为ture时,返回原始16字符二进制格式

何为原始16字符二进制格式?

本地建立一个php文件,查看返回结果

<?php

echo md5("123456",true);

?>

 输出结果:

好像是一堆乱码,去掉true参数

这里大胆预测,是不是md5参数为true时,返回二进制序列,然后通过转hex,得到ASCII码?

<?php
echo hex2bin(md5("123456"));
echo "<br>";
echo md5("123456",true);

?>

输出结果为:

验证猜测正确,我们接着来看,如何才能登陆后台

sql语句为:

$sql = "SELECT * FROM admin WHERE username = 'admin' and password = '".md5($password,true)."'";

要登陆成功,上面这个查询必须不能为空,突破点肯定在md5($password,true)

那么我们要让md5($password,true) 编码后 二进制转字符串为  'or 'xxx

这样sql 为    and password=''or'xx'   ''or'xx'=true    这样查询结果为真

那怎么才能拿到md5('key',true)为真的呢?

需要生成md5('key',true)二进制序列化为'or'开头的即可

 

笔者网上搜集了3个,可做参考:

 

e58  

 ffifdyop  

 129581926211651571912466741651878684928

 

flag is :flag{ffifdyop_has_trash}

 

启示:

要利用md5注入,必须满足三个条件

1.sql使用select * from user where username='xx' and password='xx',类似使用可利用万能密码的变种sql

2.md5第二个参数为true

3.用户名在表中可查到

针对CTF比赛中涉及的HDR-1漏洞利用方法或挑战解题思路,当前提供的参考资料并未直接提及HDR-1的具体细节。然而,可以从已有的资料推断出一些可能适用的技术方向和背景知识。 在处理CTF竞赛中的特定漏洞或挑战时,了解目标系统的架构和技术栈至关重要。对于HDR-1这类假设存在的挑战,通常会涉及到对特定协议、文件格式或是软件实现的理解。例如,在面对基于Linux环境下的可执行链接格式(ELF)文件时,掌握其结构特点是非常重要的[^4]。当遇到权限受限的情况,即提到“在ELF无x权限时运行ELF文件”,这暗示着可能存在绕过常规执行机制的方法来触发潜在的安全问题[^2]。 另外,考虑到实际操作层面,如果HDR-1与某种类型的多媒体文件有关,则WAV音频文件隐写术可能是解决问题的一个角度;而如果是图像类资源,则需关注大白类型图片文件(PNG)的相关特性及其解析方式[^3]。不过这些都只是推测性的关联,并不一定适用于HDR-1本身。 为了更精确地应对HDR-1这样的具体案例,建议深入研究官方文档或其他可靠来源中关于该主题的信息。同时也要注意遵守法律法规以及道德准则,在合法授权范围内开展任何测试活动[^5]。 ```python # 示例代码仅用于展示如何读取并显示文件头部信息, # 实际应用应根据具体情况调整 def check_file_header(file_path): with open(file_path, 'rb') as f: header = f.read(4) if header.startswith(b'\x7fELF'): print("This is an ELF file.") elif header.startswith((b'RIFF', b'WAVE')): print("This might be a WAV audio file.") else: print("Unknown file type.") check_file_header('example') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值