i春秋ctf夺旗赛(第四季)writeup——web

前言:

这次的比赛一共有六道web题,接下我会详细介绍解题的步骤以及思路,以便让小白和没有接触过这类题型的小伙伴们能读懂。

第一题,nani

1、打开网页啥都没有,内容一片空白啥。这时候我们应该按F12去查看网页源码。往往很多提示和关键性信息都藏在这里。如图所示:
在这里插入图片描述
2、得到提示:./index.php?file=show.php ;看到关键字file,下意识想会不会存在文件包含呢?不急,我们先去访问一下这个链接。如图所示:
在这里插入图片描述
3、得知user.php的提示,我们接着再去访问user.php会发现又得到空白页面。不急,我们回头研究一下./index.php?file=show.php,检测是否存在文件包含漏洞。
构造一下payload:
/index.php?file=php://filter/read=convert.base64-encode/resource=user.php
在这里插入图片描述
4、成功返回了base64加密后user.php的源代码,说明思路是正确的,我们继续往下走。
base64解密后得到如下代码:在这里插入图片描述
5、开始代码审计,主要有两个要注意的地方,wakeup()函数和unserialize()函数。之所以关注他们,是因为这两个函数在一起容易引发__wakeup()函数漏洞。构造payload:cmd=O:7:“convent”:3:{s:4:“warn”;s:13:“system(“ls”);”;}

解释一下payload吧:
传入的参数是cmd,是post类型的;
O:后面的数字7表示类"convent"的长度
3:表示的是错误的变量的数量
s: 表示的是字符串的长度

6、在hackbar执行构造好的payload:在这里插入图片描述
7、成功执行了ls命令,返回了目录信息。所以我们用同样的方法构造payload得到flag在这里插入图片描述

第二题,random
在这里插入图片描述
1、代码审计后,可以知道代码可以传入三个参数:hello,seed,key;
hello参数作用:调用文件flag.php;
seed参数的作用:为mt_scrand()函数选定种子。种子确定了,mt_rand()就可以生成相应的随机数了。
key参数作用:传入的值要等于mt_rand()生成后的随机数。

2、可以利用php伪随机数漏洞,我们通过如下编写脚本:在这里插入图片描述

3、通过这几行代码就可以把我们选定的种子数(123456)对应的随机数打印出来,然后就可以构造我们payload了。(提醒一下小白,php文件可以放到我们的虚拟机的靶机服务器,然后去访问它就会输出结果了。。。)

4、访问网页得到:1863022934
在这里插入图片描述

5、构造payload:/?hello=file(‘flag.php’)&seed=123456&key=1863022934

得到flag:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值