CTFHUB-WEB-POST请求

CTFHUB-WEB-POST请求

  1. 点击题目给出的链接:
    http://challenge-b97f433c0cb97c5f.sandbox.ctfhub.com:10800
    在这里插入图片描述
    利用伪协议去读flag.php的源码:

<?php

error_reporting(0);

if ($_SERVER["REMOTE_ADDR"] != "127.0.0.1") {
    echo "Just View From 127.0.0.1";
    return;
}

$flag=getenv("CTFHUB");
$key = md5($flag);

if (isset($_POST["key"]) && $_POST["key"] == $key) {
    echo $flag;
    exit;
}
?>

<form action="/flag.php" method="post">
<input type="text" name="key">
<!-- Debug: key=<?php echo $key;?>-->
</form>

可以知道访问这个文件的时候,我们需要从127.0.0.1的地址进入,然后同时提交一个key,才可以输出$flag,但问题是我们怎么从本地换回地址进入呢,想了想试试XFF,不行,那就上网搜,然后找到一个协议gopher,它可以确保从127.0.0.1去发送,这个协议有一个具体的格式,url=gopher://127.0.0.1:80/_POST要发送的数据。
查看源代码发现了key的值:view-source:challenge-b97f433c0cb97c5f.sandbox.ctfhub.com:10800/?url=127.0.0.1/flag.php。
先抓一个包,写入post的请求,key=639a00c8f5a232d3b8561e3be857a8d9,然后将其中的空格,回车都进行两次编码,一次是因为本身浏览器要发一次,一次是因为gopher协议的缘故,需要在服务器内部再进行一次编码(就和我们用bp进行sql注入的时候一样,发送出去之前都需要将空格换成+一样),然后将这个数据包当作是url后面的部分,抓一个包,发过去。
在这里插入图片描述

进行编码的时候也要注意了,第一次选1,第二次选2
在这里插入图片描述

我这里替换空格回车实在太麻烦了,干脆直接写了一个脚本,将我的东西替换了,为了避免将空格多敲,这个东西关乎Content-Type的值,而这个的值是发送的内容的有效长度,如果我发多了,不会相应正确的数据给我。所以我先编码,然后再将空格回车替换成两个特定的字母,然后再将所有的编码恢复到编码之前的内容,然后再将空格回车编码,其实如果出现空行,也就是两个回车,在行开始我就编码了,一个空格编码之后确实是两个回车的编码,这样就保证后面会被替换成该有的东西。

import urllib.parse

file='./url_encode.txt'
with open(file,'r') as file:
    string = file.read()
file.close()
string = string.replace('%20','alpo')
string = string.replace('%0d%0a','alpq')
string = urllib.parse.unquote(string)
string = string.replace('alpo','%2520')
string = string.replace('alpq','%250d%250a')
file_print=open('./result.txt','w')
print(string,file=file_print)

运行python 1.py,直接替换,文件目录如下,将要替换的内容放到url…中,在这里插入图片描述

最后获取flag,提交完结!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值