一、[HCTF 2018]admin
1.题目
2.解题步骤
这个靶场还是很完整的,注册登陆一应俱全,还有留言板。注册和登陆部分尝试了一下,大部分我认知中的注入都被过滤了。于是老老实实注册了个账号。发现里面有个留言板。这不就是师傅们经常攻击的地方吗~
随便注入的两下没什么反应,看看源码呢~
嗯?这个注释?
虽然能猜到这个是网站的源码,但由于没有网页的开发经验,所以很遗憾还是没看出什么门道~看WriteUp!
说实话看完之后有点被震撼到。跟着师傅们把三种做法都过一遍~
这道题的突破口首先是github上的提示flask。
Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。[百度百科]
这样来看,这是一道模板注入类型的题目。
然后进行源码审计。
首先是发现库中有两个账号,可惜密码被加密了~
接下来就是几种登陆admin的方式
(1)flask session伪造
什么是Session?
在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。[百度百科]
在测试靶场网页的时候就发现了,比如登陆之后再刷新网页,他依旧会显示登陆者的名字
这个功能是靠session实现的。把账号的信息临时储存在我的电脑上(客户端)。只有在关闭浏览器才会销毁session信息。这是一种方便的机制。这里有个大神的博客讲的很好,指路一下~
session要求浏览器必须支持cookie功能,那么对于session的伪造,是否和cookie伪造类似呢?
这道题的session在这个位置: