BUUCTF WEB writeup(持续更新)

3 篇文章 0 订阅
2 篇文章 0 订阅

BUUCTF WEB(持续更新)


1、Warmup

打开题目链接,得到一张图片,如下图:

在这里插入图片描述

此时先想到看这个网页的源代码,输入source.php即可得到源代码,如下图:

在这里插入图片描述

进入php代码审计,粗略看一下可以发现有file,所以我们要想办法得到file,首先先看与file有关的代码块:

在这里插入图片描述

看到中间发现需要前面创建的函数,所以我们返回去进行前面代码的审计,在白名单处能看到有两个文件,一个source.php、一个hint.php,我们先打开hint.php,可以看到如下字符:

在这里插入图片描述

暂时不知道是干什么用的,返回去继续阅读,

在这里插入图片描述

审计完发现,我们需要传入一个$page,满足4个传入条件:page不为空且要是字符串;必须得在白名单中;截取page问号前的内容也必须在白名单中;url解码之后的page的?前内容也得在白名单中;所以开始构造url:

1、根据条件,必须得有?source.php;

2、因为url解码后的内容问号前的内容要在白名单中,所以php后面也要有一个问号,但在上传url时,会经过一次解码,所以我们需要先将url经过二重编码,问号的一重是%3F,二重是%25%33%46;

3、然后只需要返回到服务器的根目录,再找到ffffllllaaaagggg,即可获得flag;

在这里插入图片描述


2、[极客大挑战 2019]Havefun

打开附件得到如下页面在这里插入图片描述

直接F12看网页源码,发现要我们get一个cat的参数进入网页,并且参数值要为dog在这里插入图片描述
在url中输入?cat=dog传入cat即可拿到flag在这里插入图片描述


3、[极客大挑战 2019]Secret File

打开附件得到如下网页:在这里插入图片描述
F12看到网页源码信息,发现SECRET可以点击在这里插入图片描述
在这里插入图片描述
发现两个php不同,一个是action.php,另一个是end.php,猜测是php代码中有设置定时自动跳转的部分,利用burp抓包,可以看到action中的代码在这里插入图片描述
看到包含了一个secr3t.php,在网页里修改url可以看到php代码在这里插入图片描述
发现flag在flag.php中,看到上面还有一个include(flag.php),可以判断出是文件包含,利用php伪协议可以得到base64字符串,解码可以得到flag
在这里插入图片描述
在这里插入图片描述


4、[ACTF2020 新生赛]Include

打开附件得到以下页面在这里插入图片描述
点进tips发现是payload是?file=flag.php,但是没有任何东西,联想到题目的include,可以很清楚地知道是文件包含,利用php伪协议?file=php://filter/convert.base64-encode/resource=flag.php绕过得到base64编码,再解码即可得到flag在这里插入图片描述
在这里插入图片描述


5、[护网杯 2018]easy_tornado

打开靶机,很直观有如下三个链接在这里插入图片描述
依次打开查看一下在这里插入图片描述
flag藏在fllllllllllllag文件中
在这里插入图片描述
给了个奇奇怪怪的文件render,暂时先不管
在这里插入图片描述
最后是一个hint,很明显的是一个MD5
紧接着我们看url栏里面由两部分构成,第一部分是文件名,第二部分是filehash,肯定不可能直接用/fllllllllllllag来获得,但我们还是可以试一试在这里插入图片描述

嘿嘿,不出所料,得到一个error,看到msg,感觉应该是一个模板注入,写个{{1+1}}看看在这里插入图片描述

不行,没法运行出结果,再试试{{1}}在这里插入图片描述

发现是在报错的页面进行注入,可以输出输入的指令,但是感觉还是无从入手,此时想到题目给的tornado,百度一下看看,芜湖~在这里插入图片描述

是一个tornado框架,可以进行模板注入,这时候就要开始寻找尝试了,在这里插入图片描述
可以看到有很多关于render的内容,感觉像是它第二个文件中给的样子了,尝试一下在这里插入图片描述
不行,还是不能得到我们想要的结果,在经过一番尝试之后,我找到了这个在这里插入图片描述

在这里插入图片描述
找了挺久的,这个指令让我们找到了hint中所说的cookie_secret然后就是要用hint中的另一个帮助了在这里插入图片描述

#python3
import hashlib
hash = hashlib.md5()

filename='/fllllllllllllag'
cookie_secret="288192ff-679e-4e89-95eb-76d53ac30f9d"
hash.update(filename.encode('utf-8'))
s1=hash.hexdigest()
hash = hashlib.md5()
hash.update((cookie_secret+s1).encode('utf-8'))
print(hash.hexdigest())
#python2
#!-*-coding:utf-8 -*-
import hashlib
def md5(s):
    md5 = hashlib.md5()
    md5.update(s)
    print(md5.hexdigest())
    return md5.hexdigest()
    
def filehash():
    filename = '/fllllllllllllag'
    cookie_secret = '288192ff-679e-4e89-95eb-76d53ac30f9d'
    print(cookie_secret + md5(filename))
    print(md5(cookie_secret + md5(filename)))
if __name__ == '__main__':
    filehash()

在这里插入图片描述
借助hint中的MD5加密,用python脚本跑一下就可以得到对应的filehash,最后构造下面的payload就能得到flagfile?filename=/fllllllllllllag&filehash=12c05aef4b4ba01da4737e984600848c
在这里插入图片描述


[GXYCTF2019]Ping Ping Ping

打开靶机,发现是一道很明显的命令注入题,
在这里插入图片描述

先输个ip没有问题,然后输一下ls,发现可以出来目录下的文件在这里插入图片描述

可以看到目录下有flag和index两个文件,肯定是想直接得到flag,就用cat在这里插入图片描述
emmm,太凶了,但是知道空格被绕过了,试一试/**/在这里插入图片描述

还是不行,害~再换成${IFS}$在这里插入图片描述
枯了枯了,再试试$IFS$1在这里插入图片描述
flag又被过滤了…
这时候其实有两种解法,
解法一:是用内敛执行绕过,先摆上payload

?ip=10;cat$IFS$1`ls`

这样子就可以直接得到flag
在这里插入图片描述

解法二:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值