[BJDCTF2020]Cookie is so stable 进入环境后看到有hint,点击之后查看源代码 提示我们cookie有线索 flag页面是: 需要输入一个username,或许这道题目是cookie伪造,随便输入一个username 输入的结果显示在了页面上,很容易能想到注入,抓包 cookie里面有我们最开始输入的username 可以猜到后端的代码应该是类似于 这样的 Hello %s 将用户cookie里面传过来的user字符串通过模板渲染在页面上,处理不当的话就会导致模板注…
0x00 知识点 Twig模板注入 链接: https://www.k0rz3n.com/2018/11/12/%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E5%B8%A6%E4%BD%A0%E7%90%86%E8%A7%A3%E6%BC%8F%E6%B4%9E%E4%B9%8BSSTI%E6%BC%8F%E6%B4%9E/#2-Twig 0x01 解题 测试一下发现*wig模板注入 找注入点: 根据提示,cookie中的user是注入点 payload: {{_s…
1.打开之后在各个界面查看源代码,未发现很明显的有用信息,仅发现了提示,结果如下: 2.尝试输入数据,结果就是输入什么就回显什么,也未进行过滤,尝试进行sql注入失败,结果如下: 3.那就根据提示抓包查看下cookie信息,结果如下: 4.sql注入失败,这里想到了ssti注入,那就进行ssti注入测试,payload:{{2*2}},结果如下: 5.确定了ssti注入之后,该如何选择ssti注入方式呢,观察抓取的数据包中存在关于服务端的关键信息,结果如下: 6.确定服务端的语言之后,范围就很小…
记录一下BUUCTF中两个类似的SSTI注入关卡 [BJDCTF2020]The mystery of ip-1: 1.打开之后显示如下: 2.在hint.php中进行了相关提示,如下: 3.既然获取的是ip地址信息,那我们此时应该想到包信息中与ip地址相关的参数:X-Forwarded-For,进行尝试,结果如下: 4.那就对X-Forwarded-For参数进行修改,尝试sql类注入,失败,那就在尝试下ssti注入,结果成功,如下: [CISCN2019 华东南赛区]Web11 1.打开之后…
1.打开之后给出了三个连接,分别查看下三个连接内得信息,结果如下: 2.url中参数包含一个文件名与一串应该是md5得加密的字符串,文件名已经获得了,就需要获取加密得字符串,但是加密字符串时需要使用到cookie_secret.搜索下tornado render信息,显示是找到模板进行渲染,因此就想到了ssti注入. 3.开始思考获取cookie_secret,未在三个页面中发现存在可利用得地方,然后就只能开始目录扫描,发现了error页面,就想到了修改前面正常的参数,然后看下报错界面,发现了错…
从hint.php可以找到提示,要求观察cookies 打开flag.php可以看到需要输入用户名,多次试验后发现输入的用户名会以cookies的方式储存 使用dirsearch扫描没有发现什么有用的信息,一开始以为是cookies注入,但是没有找到sql注入点 猜测用户名的回显含有ssti漏洞,于是尝试输入 {7+7} 但是发现+变成了空格,于是改为了{7*7}也没有什么反应,后面才知道要两个大括号{{7*7}} 才行 经检验发现是Twig 上网搜索Twig的payload但是套用不了,后面看…
[BJDCTF2020]Mark loves cat 源码泄露 使用GitHack.py下载源码 下载之后对源代码进行审计 flag.php代码为: <?php $flag = file_get_contents('/flag'); iindex.py里的关键代码为: <?php include 'flag.php'; $yds = "dog"; $is = "cat"; $handsome = 'yds'; foreach($_POST as $x =…
源代码地址 (请用python2.7运行,python3有点出入) 注入点: 不是返回的静态模板而是反回模板字符串变得让客户端可以控制. XSS 这里直接 http://39.105.116.195:9000/<script>alert(1)</script>就会有反射性XSS flask对模板文件和模板文件中内容进行转义,可如果直接返回模板字符串或者直接返回字符串的话是不会转义的: 只有xss1不会弹框,因为传到了静态文件里面,flask会自动进行转义. 注入测试 http://…
1.打开之后很明显的提示flask框架,但是未提供参数,在源代码中发现了一个git地址,打开之后也是没有啥用,结果如下: 2.这里我们首先需要爆破出来参数进行信息的传递,就需要使用Arjun这一款工具来进行破解,工具的使用过程: 1.pip3 install arjun 2.python3 setup.py install 输入arjun -h显示如下即可: 3.使用arjun爆破参数名,payload:arjun -u url -c 150 -d 0.5,成功获得参数名name,结果如下: 4…
在python沙盒逃逸中绕过道理是一样的. 1.python沙盒中删除了很多模块,但是没有删除reload reload(__builtins__),重新加载被删除的模块,直接命令执行,只用于py2 2.直接过滤了敏感字符,如eval,os等. {{().__class__.__bases__[0].__subclasses__()[59].__init__.__globals__.__builtins__['eval']("__import__('os').popen('ls').read()…