集训第二周学习
virink_2019_files_share
打开靶机,是一个魔方游戏,看源码有hint说flag在 f1ag_Is_h3re,一开始去js文件里面看了一下,没有发现平时游戏题目中可以利用的点

发现有一个uploads/favicon.ico ,直接访问./uploads/,存在两个文件都分别抓一下包,在preview里面发现get传的参,猜测会不会存在文件包含
这里Server是openresty,百度之后发现是基于nginx,那么直接试着看nginx的配置文件啥的

尝试之后发现有些字符被ban掉了,可以自己试着能不能通过重复等绕过,绕过过滤之后还要进行目录穿越

那么,想要其他文件就直接在后面改吧,根据提示直接去f1ag_Is_h3re找flag
payload1:
1 | ?f=....//....//....//....//....//....//f1ag_Is_h3rere |
但是显示该文件不存在,看了别的师傅的wp
在后面还要加上flag(为什么呢,虽然能理解f1ag_Is_h3re可能是个目录名,但是为什么能想到呢,可能还是一种思维吧
最终payload:
1 | ....//....//....//....//....//....//f1ag_Is_h3rere//flag |
[PASECA2019]honey_shop
- 经典买东西
- session伪造
- /proc/self
- /environ
靶机主页面,经典要用钱买flag,刚好差一块钱,先都看看吧:

抓包,发现又是session伪造,所以我们可以修改balance为1337,这样就可以购买flag了,但是我们不知道密钥呀!!
再次回到首页,康康源码,抓抓包
最后点击图片可以下载,抓包康康;这种样子不禁让人觉得有文件包含漏洞,用/etc/passwd测试是否存在文件包含漏洞

目录穿越之后实现了文件包含

看师傅的wp,学到的新知识:
(因为这里用到了flask session伪造,所以应该是python的环境
1 | /proc/self 指向当前的进程 |

得到密钥那就直接伪造,修改session,购买flag吧

[watevrCTF-2019]Supercalc
- flask session伪造
{{config}}
打开靶机,是一个计算器

测试几次之后,抓包发现session,kali中解密之后可以确定是flask session,我们可以进行伪造,既然已经知道是flask框架,然后执行的代码又是{'1+1'}这样的,那么可以猜测是ssti注入
但是同样的,重点还是找到密钥
这里利用{{config}},不过这里必须要是再前面的运算报错的情况下才能实现,这或许和后端的check有关(?可以去看一下源码
利用注释绕过判断,但是在执行过程中又会执行,得到密钥

之后直接打payload:
1 | {"history":[{"code":"__import__(\"os\").popen(\"ls\").read()"},{"code":"1 + 1"},{"code":"1 + 1"},{"code":"1 + 1"},{"code":"1 + 1"}]} |
发现有flag.txt

直接cat就好啦
payload2:
1 | {"history":[{"code":"__import__(\"os\").popen(\"cat flag.txt\").read()"},{"code":"1 + 1"},{"code":"1 + 1"},{"code":"1 + 1"},{"code":"1 + 1"}]} |
[b01lers2020]Scrambled
- python脚本编写
简单来说,transmissions两边的kxkxkxkxsh都不会改变,而中间的0b29指的是第29位是b,第28位是0,直接写脚本
1 | import requests |
最后:
学到的新知识点:
0x01:
/proc/self 指向当前进程
/environ 指向进程的环境变量信息
做了好多flask session伪造
0x02:
利用{{config}}获取环境变量
flask框架ssti注入
———————–TBC—————————
