ssi服务端包含注入
SSI 注入全称Server-Side Includes Injection,即服务端包含注入。SSI 是类似于 CGI,用于动态页面的指令。SSI 注入允许远程在 Web 应用中注入脚本来执行代码。
题目源码:
@app.route('/getUrl', methods = ['GET', 'POST'])
def getUrl():
url = request.args.get("url")
php调用外部程序常用的函数:
system()—执行shell命令也就是向dos发送一条指令。
shell_exec() — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
exec() —执行外部程序。
passthru() — 执行外部程序并且显示原始输出。
escapeshellarg(string $arg): string
escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,并且还是确保安全的。对于用户输入的部分参数就应该使用这个函数。shell 函数包含 exec(), system() 执行运算符 。
escapeshellcmd
escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数,或者 执行操作符 之前进行转义。
选项 解释
-oN 标准保存
-oX XML保存
-oG Grep保存
-oA 保存到所有格式
-append-output 补充保存文件
-F 实行一次快速扫描
选项-oG
将结果Grep保存
nmap -F -oG test.txt 192.168.23.1
nmap命令中 有一个参数-oG可以实现将命令和结果写到文件
?host=’ -oG hack.php ‘
传入的参数经过了escapeshellarg与escapeshellcmd两个函数的处理,导致在hack.php’这样的情况下会产生hack.php\,解决办法就是在单引号前加空格