moctf-web题(前15题)

博主分享了参与moctf-web挑战赛的前15题的解题过程,涉及F12代码审计、浏览器访问限制、PHP魔法函数、文件包含漏洞、SQL注入等多种网络安全技术。每题通过分析源代码、修改HTTP请求等方式获取flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

moctf-web

好久没有开始打题了,开始生疏了,过完一个期末考试周,现在我又回来了!
真的是从头开始学习qwq,那我现在的博客一定要好好的写,认认真真的写!

第一题–一道水题

进入网站后
在这里插入图片描述
点击F12
即可得出答案
(这是通常的最简单的水题–一般的平台的第一道都是这样纯粹给大家兴趣)

第二题–还是一道水题

进入后,画面是这个样子的
在这里插入图片描述
但是试图输入moctf进去,无法行得通,于是F12开启,看源代码
在这里插入图片描述
图中重点是蓝色所圈的地方,disabled是无法输入的源头,将其删去后,更改后面的length的长度为5才能将moctf输入输入框中。

最后可以得到flag
(本题主要考察前端的代码审计,两个考察点,需要注意)

第三题–访问限制

点击题目进入后出现了下面这个界面
在这里插入图片描述
略微一思考就是:
用bp改一下改user-agent:NAIVE 后可以得到flag了
(本题主要考察的是浏览器的访问的修改)

第四题–机器蛇

首先进入界面是一个游戏,F12后查看源码,紧接着底下的hint给了提示robots.txt
那么就在网址后面加上一个robots.txt后缀查看出现下图

结果是一个空白版,那么就说明这个只有在源码中
那么说明还有一个隐藏的php文件,接着在之前的网址后面把这一串文件加上,得到白色版面,后查看源码,得到flag

第五题–PHP魔法

好像后台被人一锅端了以后,这个网站就再也没有去修复过
不过,参考别的大神的给的提示就是说利用PHP魔法函数(这个是很重要的):

在这里插入图片描述

后面仔细的审计代码
这个审计大约就是:
1、有俩参数“a”,“b”
2、这俩参数都不能为空
3、这俩参数都不能相等
4、这俩参数在md5加密后相等

这啥啊(菜鸡当时就自闭了)条件4与条件5是不可能完成的吧qwq(热水奉上)

方法有两种:
1、利用md5加密加密数组均返回false的特性,构造数组,于是第四条条件满足,那么第三条条件就好办了,直接?a[]=0&b[]=1

2、(百度后参考的–算是多学习了一种方法)md5加密后0e开头的都相等,例如:240610708 和 QNKCDZO。
?a=240610708&b=QNKCDZO
(参考:https://www.cnblogs.com/gzs-monkey/p/9209303.html#autoid-0-4-0)

第六题–我想要钱

在这里插入图片描述
本题又是审计代码的题目
emmmmmm
那就只能慢慢分析了
怎么办呢…
首先是说包含flag.php文件
接着要满足以下几个条件才能爆出flag:
1、参数money,用get传递money值
2、参数money的长度要小于4
3、money值要大于time()
time的返回值是从1970到如今的秒数…
这是个巨大的数…那就一直大吧
4、money不能够是数组

那么那么通过数学的想法,只能使用指数,这种爆炸性的增长…

结果应该是错的…

那么用科学计数法试一下??
输入?money=9e9
接着就得到flag了

第七题–登录就对了

一上来就是这张图…
在这里插入图片描述
一看到这种登录的题,在目前我只想到sql注入登录这种简单一点点的骚操作

于是构造万能登录
用户名:
'or ‘1’ = ‘1’ #

密码随意
接着登录成功后,查看源代码,在最下方发现flag

第八题–文件包含

进入传送门一看——>
在这里插入图片描述
本题就一个这个qwq
不行,查看源代码——>
在这里插入图片描述
有hint诶,再与题目相结合
emmmmm
构造这个很早很早的一个读取文件的方法:?file=php://filter/convert.base64-encode/resource=flag.php
紧接着base64解码即可得到答案~

第九题–暴跳老板

嘤嘤嘤,看到这道题,我就一脸懵,现在真的是一看题就开始F12看源码,然后啥都没有发现,于是直接抓包走起…首先进行抓包,然后
在这里插入图片描述
接着go,一看
在这里插入图片描述

图中有一个MOCTF…好的,那么就是靠抓包修改就可以得到flag
emmmm,于是就开始在里面进行了一番修改
在这里插入图片描述
注意到每次都是会往do.php放值…
先输入值进入发送,出现了这个界面
在这里插入图片描述
修改一下post的人为DEAR或BOSS…
接着就凉了啊…
反反复复不知道到底发什么。。。
最后有大佬说,为什么不试一下:
&Dear=MyBoss

重新发送http请求…终于可以了
拿到flag!!!
我哭了,这是什么神仙题目在这里插入图片描述???脑洞太大了吧

第十题–flag在哪

这道题也是考脑洞,一定要记得PPAP

超大脑洞

bp抓包走一波,紧接着,疯狂跳跃

bp抓包

真的是脑洞题
看到flag.php——flag.php——frog.php
想想PPAP
接着就去flagfrog.php试一下
抓包后得到
有的同学可能会漏掉包,可以去ctrl+r里面go一go

在这里插入图片描述

-----果然还是太菜了------

第十一题—美味的饼干

在这里插入图片描述

这个题,我一开始以为是sql注入类型的,但是试着弄了一下,随便都是可以登录进去的,好像没什么用处qwq,查看源代码,得到只有admin可以登录…
(果然是个菜鸡,暴风哭泣)

然后…就被大佬爆锤以后得到一个bp抓包的hint…(记住以后都要尝试一遍!!)
在login处发现了大串标红的特殊标记:
在这里插入图片描述
而且

%3D是“=”的URL编码,所以把%3D改成“=”

ZWUxMWNiYjE5MDUyZTQwYjA3YWFjMGNhMDYwYzIzZWU=进行base64解码,

得到MD5密文ee11cbb19052e40b07aac0ca060c23ee,解密后得到user

那么说明只有把admin进行md5加密后加上去即可得到答案!

编码后,记得把“=”换成%3D

MjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzM%3D

再换到cookie上去,即可F12得到答案


(美丽的分割线)
表示本题的题目与做题没啥关系

第十二题–没时间解释了

真的是服气,我的bp老是漏包…
暂时先放放…

第十三题–死亡退出

在这里插入图片描述

本题真的是有点。。。难…
看了大佬们的分析,php://filter的妙用:
https://www.leavesongs.com/PENETRATION/php-filter-magic.html
在这里插入图片描述

在这里插入图片描述
于是就可以明白:
我们只需要在写入$c时在开头随机补充一位,
再进行base64加密和解密时phpexit便会失效。

在这里插入图片描述

所以结合tmp.php构造payload为c=aPD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==&file=php://filter/write=convert.base64-decode/resource=tmp.php

接着用hackbar传过去就可以得到答案了

第十四题–火眼金睛

进入就告诉你本题目2秒刷新一次,数出moctf的数量

那么就直接放python脚本…
我看了好多wp的脚本后…可能我的pycharm少了好多包还是怎么样的,都不太行

参考了:https://blog.youkuaiyun.com/weixin_42275947/article/details/83626655的脚本

# coding:utf-8 #
import requests
from bs4 import BeautifulSoup
url = "http://119.23.73.3:5001/web10/"
s = requests.session()
response = s.get(url)
content = BeautifulSoup(response.text , 'lxml')
str = content.select('textarea')[0].text
con  = "moctf"
count = str.count(con)

url2 = "http://119.23.73.3:5001/web10/work.php"
data = {"answer":count}
flag = s.post(url2 , data=data).text
print(flag)

即可得到答案

第十五题–unset

题目如下:
在这里插入图片描述
据大佬说:

题目原型是 Destoon 20140530最新版超全局变量覆盖导致的安全问题

里面有一些函数不太记得,于是查手册
foreach

某位仁兄的

根据代码的顺序…可以发现函数的运行:unset -> waf -> extract

在这里插入图片描述

在该函数下说明不能传入带有flag字样的键名,需要绕过

然后出现下面的函数我直接懵圈…(小菜鸡不愧是小菜鸡)
在这里插入图片描述

这是一个复杂的逻辑循环

大致的意思如下:
将post、get、cookie三个变量(网页中对应你用get、post传入的值)依次赋值给
变量¥_R(打不了$$这个符号只能用¥代替),若变量¥¥_R存在数据(就是说你post或者get过来数据后,进行下一步)

举个post栗子:
进入下一个语句后,此处只使用了¥¥_R

原本这里¥__R为¥__POST,这时就变成了¥¥__POST,意味着我们要取出“¥POST所对
应的值–的值(注意:是值的值)

举个例子:这里有a=>b;b=>c;
那么$$a的值就是时取出a的值的值,也就是取出c

然后就进入下一个foreach函数,去¥_K为键名,¥_V为值。如果键名作为变量所对应的值与¥¥_R的值相等,则unset掉¥¥_K。这里的unset的内容就是将这个值在程序内所对应的内存销毁,然后…这个就莫得了。

再接着向后面的函数看过去:

然后就是extract函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值