buu(ssti模板注入、ssrf服务器请求伪造)

目录

目录

[CISCN2019 华东南赛区]Web11

[BJDCTF2020]EasySearch

[De1CTF 2019]SSRF Me

[CSCCTF 2019 Qual]FlaskLight

模板注入过滤 globals,拼接绕过

[HITCON 2017]SSRFme

[RootersCTF2019]I_

二个方法都可以  lipsum



[CISCN2019 华东南赛区]Web11

打开界面,好熟悉可能是做过一道类似的题,是通过ip进行注入的题目

 最下面给出了smarty模板注入

会随着我的x-Forwarded-for的改变而改变,用if标签

{if system(‘cat /flag’)}{/if} 

 

[BJDCTF2020]EasySearch

 打开界面源码,什么都没有发现,试一下万能密码之类的登录,只返回fail

那么尝试一下扫目录,发现index.php.swp然后访问

发现页面源码,看完代码,只要密码经过md5加密的前六位6d0bc1相同,便可成功登陆

那么构建脚本

 2020666

 

 一般这种界面都存在ssti注入,可能是cxk或者ip那里,

搜索一下,shtml的信息,补充一下什么是ssi注入,SSI 注入全称Server-Side Includes Injection(服务端包含注入),ssi可以赋予html静态页面的动态效果,通过ssi执行命令,返回对应的结果,当在 站目录中发现了.stm .shtm .shtml或在界面中发现了

{$what}

Welcome, {{username}}

{%$a%}

就容易产生ssi注入,此处问题的其注入格式为:
username=&password=2020666

[De1CTF 2019]SSRF Me

打开界面,整理一下python源码,表面是一道ssrf题,其实是一道python flash框架审计题


  1. #! /usr/bin/env python
  2. # #encoding=utf-8
  3. from flask import Flask
  4. from flask import request
  5. import socket
  6. import hashlib
  7. import urllib
  8. import sys
  9. import os
  10. import json
  11. reload(sys)
  12. sys.setdefaultencoding('latin1')
  13. app = Flask(__name__)
  14. secert_key = os.urandom(16)
  15. class Task:
  16. def __init__(self, action, param, sign, ip):
  17. self.action = action
  18. self.param = param
  19. self.sign = sign
  20. self.sandbox = md5(ip)
  21. if(not os.path.exists(self.sandbox)):
  22. os.mkdir(self.sandbox)
  23. def Exec(self):
  24. result = {}
  25. result['code'] = 500
  26. if (self.checkSign()):
  27. if "scan" in self.action:
  28. tmpfile = open("./%s/result.txt" % self.sandbox, 'w')
  29. resp = scan(self.param)
  30. if (resp == "Connection Timeout"):
  31. result['data'] = resp
  32. else:
  33. print resp
  34. tmpfile.write(resp)
  35. tmpfile.close()
  36. result['code'] = 200
  37. if "read" in self.action:
  38. f = open("./%s/result.txt" % self.sandbox, 'r')
  39. result['code'] = 200
  40. result['data'] = f.read()
  41. if result['code'] == 500:
  42. result['data'] = "Action Error"
  43. else:
  44. result['code'] = 500
  45. result['msg'] = "Sign Error"
  46. return result
  47. def checkSign(self):
  48. if (getSign(self.action, self.param) == self.sign):
  49. return True
  50. else:
  51. return False
  52. @app.route("/geneSign", methods=['GET', 'POST'])
  53. def geneSign():
  54. param = urllib.unquote(request.args.get("param", ""))
  55. action = "scan"
  56. return getSign(action, param)
  57. @app.route('/De1ta',methods=['GET','POST'])
  58. def challenge():
  59. action = urllib.unquote(request.cookies.get("acti

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月21日
下一篇 2022年9月21日

相关推荐