目录
1.Simple_SSTI_1
题目首先给出一个提示:你需要传入一个名为flag的参数。
查看网页源码,提示我们flask框架,并且有一个变量名为:secret_key。
在flask中,{{}} 是变量包裹标识符,{{}}不仅仅可以传递变量,还可以执行一些简单的表达式,存在template注入。
参考链接:https://blog.csdn.net/qq_44418229/article/details/125184259
构造payload:?flag={{2*4}},发现注入执行成功。(我后面刷到smarty模块注入的时候发现一个{}里也可以执行命令,这题后来没试过,因为重启环境要金币- =)
继续构造payload:?flag={{config.SECRET_KEY}}出现flag,其中config是flask中的全局变量。(config这个是我看题解得出的,刚开始我也很懵,对于我们新手而言大家积累就行了。)
2.Simple_SSTI_2
给出和SSTI_1一样的内容,但是网页源码没有提示变量名了。
此时构造paload:?flag={{ config.class.init.globals[‘os’].popen(‘ls …/’).read() }}即可实现命令执行。(我选择了记下来这个payload,希望后面能理解吧)
发现可以命令执行后,然后查找flag:?flag={{ config.class.init.globals[‘os’].popen(‘find / -name flag*’).read() }}
最后直接查看flag:?flag={{ config.class.init.globals[‘os’].popen(‘tac /app/flag’).read() }}即可获取flag。(popen里执行的命令应该都没啥问题吧老铁们)
**
3.Flask_FileUpload
**
是一个文件上传的题目,最开始用了常规的上传php一句话,发现找不到上传地址,无法连接到shell,故放弃。
后来通过查看网页源码,原来有提示,它返回的是一个python,于是编写一个python脚本来执行系统命令。(我一开始看了网页源码,但是经验太少,根本就不知道是这个意思,哎,积累吧。)
import os
os.system('tac /flag')
将代码的后缀名改名jpg或者png的格式上传,随后返回的就是之后命令后的结果。最后构造出查询语句即可查看flag。
4.game1
首页是一个游戏界面,查看了一下源码 发现没有可用信息。
抓个包试试,游戏开始的数据包也很正常,没有发现什么,在游戏结束提交分数时,发现sign有点像base64加密,但是解密时乱码,而且尝试修改分数并没有效果。
尝试得到其他分数的数据包与当前数据包对比,发现不管分数获取多少,sign中zM始终不变,变的是后面的值,拿zM后面的值去解密,发现和前面对应分数一样,于是修改分数和sign的md5加密,改为9999和OTk5OQ==。在返回包中发现flag。(这题也是需要靠经验啊老铁们,不然谁知道要多试几次对比)
5.网站被黑
首页进去是一个被黑的页面,首先进去查看了源代码,没有什么可用信息
然后直接dirmap扫描目录,发现有shell目录和login目录,首先查看shell目录,发现需要密码才能登录,手动尝试了几个弱口令发现不对,然后去查看login目录,发现一片黑,通过js修改背景后,发现也没有什么可用信息。
随后打开bp准备尝试暴力破解shell口令,最后成功爆出flag。
注:本文涉及的所有地址均来源于bugku靶场,仅用于个人笔记保存,请勿转载,如有错误请指教。
版权归原作者 深度学习不如深度入眠 所有, 如有侵权,请联系我们删除。