进入发现是一张图片,上面写着图片?,猜测可能藏了东西
右键另存为图片,拖进kali虚拟机,使用binwalk检测一下
果然还藏了个7-zip,重命名图片,后缀改为.7z,打开获得flag
进入发现一直循环弹两个窗,题如其名,确实睿智
打开burp,重新访问页面抓包,没什么发现
查看响应包,发现一段HTML编码过的数据,复制解码获得flag
进入发现是一个小萝莉给你丢个了雪球,雪球上是一个二维码,黑白颜色不明显,并且仔细观察会发现右半部分的二维码被进行过反色处理
右键另存为,使用Photoshop打开,图像->调整->色阶,调整到90-120
框选二维码右半部分,图像->调整->反相,得到原二维码,扫描获得flag
进入发现是一段代码
审计后不难发现,第一层,a[]=1&b[]=2,第二层,key={“key”:0}
?a[]=1&b[]=2&key={"key":0}
进来发现一张图和一个框,测试发现没啥用,F12发现有一个txt文件
访问发现是index.php的源码
此时针对于该php代码进行分析,这里需要绕过两个if语句,第一个是检测POST传入的参数必须是存在,第二传入的POST必须为包括数字(1-9)组成的数字,同时要输出flag。strpos检测num中的#testaasafd必须返回true。那么逐步尝试发送可以使用%00进行截断,可以使用burp抓包修改也可以使用hackbar进行传值
Payload:num=1%00#testaasafd
打开题目发现提示,flag就在这,flag格式zKaQ{xxxx},F12发现一段摩斯密码
复制解码,在线解码:https://www.bejson.com/enc/morse/
解出一段疑似MD5加密的值,先提交看看,题目也提示了格式,zKaQ{xxxx},提交发现flag正确
进来发现两段相同的md5值,测试没发现什么有用的信息,试试目录扫描
发现flag.php,访问没东西,下载index.php.bak,打开是index.php源码
strstr($_SERVER['REQUEST_URI'], '?');
//截取?后面的值,所以这里我们可以用kekeyy绕过第一个过滤;然后在用数组绕过第二个过滤,因为md5()函数无法处理数组
Payload:?kekeyy1[]=a&kekeyy2[]=b
进来发现让登录,SQL注入发现无果,随便敲个账号密码提示不是管理员,admin,admin提示密码错误
爆破也无果,F12发现一段base64编码
解码为zKaQZkAq,尝试登录,提示IP禁止访问
head添加X-Forwarded-For: 127.0.0.1,登录得到flag
打开题目提示仅限本地访问!
head添加x-forwarded-for: 127.0.0.1,无果,head添加Client-Ip: 127.0.0.1 再次访问,得到flag
打开题目发现让我们下载附件,下载下来是一个rar,根据提示,密码四位数字,用ARCHPR爆破压缩包密码得到密码2016
最后得到一张图片,查看hex,在里面找到flag,去掉空格提交,flag正确
进来发现一段提示和一个输入框,输入框测试无果,试试目录扫描
发现index.php.bak文件,下载下来发现一段JSFUCK编码
解码以后发现又是一个新的编码,之前index.php.bak文件中提示key为ZKAQ,试试AES解密,得到flag
进来发现一句话,要我点他,这辈子没见过这么嚣张的人,点他!
点完发现下载了一个压缩包,打开发现是一堆JSFUCK密文,尝试解密。
看着头大,算了,直接甩F12,console执行一下看看
OK,成功拿到flag
打开发现也是要下载附件,我们下载下来发现是一个Word文档
进来直接Ctrl + A全选,找个地方粘贴出来,就可以拿到flag了
题目是head,猜测应该在head可以找到有用信息,burp抓包,未发现有用信息
F12->Network,刷新页面,在响应包中找到flag,也可以用burp抓响应包
访问页面查看源码发现注释里面的内容访问它
访问发现源码
发现hint.php 打开看到提示,flag在ffffllllaaaagggg
分析一下源码
<?php
highlight_file(__FILE__);
class emmm
{
public static function checkFile(&$page)
{//白名单列表
$whitelist =
["source"=>"source.php","hint"=>"hint.php"];
//isset()判断变量是否声明 is_string()判断变量是否是字符串
if (! isset($page) || !is_string($page))
//如果变量声明且为字符串才不会判别为真
{
echo "you can't see it";
return false;
}//不返回值
if (in_array($page, $whitelist)) {
return true;
}//白名单判断,是hint或source返回真
/*
mb_strpos():返回要查找的字符串在别一个字符串中首次出现的位置
mb_strpos (haystack ,needle )
haystack:要被检查的字符串。
needle:要搜索的字符串
*/
//?截断 截取page变量从开头到?
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}//白名单检查
$_page = urldecode($page);//url解码
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);//二次截断
if (in_array($_page, $whitelist)) {
return true;
}//第三次白名单检查
echo "you can't see it";
return false;
}
}
if (! empty($_REQUEST['file'])
&& is_string($_REQUEST['file'])
&& emmm::checkFile($_REQUEST['file'])
) {
include $_REQUEST['file'];
exit;
} else {
echo "<br><img src=\"5bdb0d93dc794.jpg\" />";
}
?>
需要满足经过两次?截断后仍能通过白名单检查,并且include正确路径,才输出flag。
构建payload: source.php?file=hint.php?../../../../../../../../ffffllllaaaagggg
解释一下这段payload,checkfile检测传入的file的值,将file赋给page变量,首先白名单检测hint.php在白名单内返回真。
然后?截断在第一次截断的时候将file中的hint.php?../../../../../../../../ffffllllaaaagggg截断为hint.php并顺利通过第二次白名单检测。
接着是一次url解码,将page变量进行一次url解码。
注意
mb_strpos($_page . '?', '?')
这段代码,“$_page . ‘?’,”,中的那个.是一个连接符,相当于在__page变量后加上一个?。于是这次同样截断剩下hint.php再次顺利通过白名单检测。最后满足3个if条件执行include语句。在包含的时候会把hint.php?/当成一层目录,然后构造../../向上遍历找到flag。
因为白名单有两个字符串所以把file里面的hint换成source也是一样能拿到flag。
即source.php?file=source.php?../../../../../../../../ffffllllaaaagggg
可以达到相同的效果。
进来发现是一张图,网站标题显示:你被黑啦!
检查源码无果,扫一下目录,发现有一个webshell.php,访问看看
发现是个是个表单,随便输入提示
使用burp爆破,密码是:a123456789,拿到flag。
进来发现是一段文字,我们暂时忽略劲夫是怎么奖励自己的,我们只抓住重点,那段奇奇怪怪的文字
题目是与佛论禅,那我们去解密一下,在线网站:https://www.keyfc.net/bbs/tools/tudoucode.aspx
解密以后成功拿到flag。是不是很简单?
进来后发现一个超链接,点击发现url产生变化,猜测是文件包含
目录扫描没什么收获,尝试使用PHP伪协议读取一下index.php。
Payload:?file=php://filter/read=convert.base64-encode/resource=index.php
获得index.php经过base64编码以后的源码,解码以后在注释中找到flag。
进来查看网页源码发现提示source传参,传参以后出现图片,里面是源码
源码:
<?php
$ip = isset($_POST['ip'])?$_POST['ip']:die();
if(!preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/i',$ip)){
die("ip 格式错误!");
}
echo strlen($ip);
if(strlen($ip)<7||strlen($ip)>21){
die("ip 长度错误!");
}
// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows
$cmd = shell_exec( 'ping ' .$ip );
}else {
// *nix
$cmd = shell_exec( 'ping -c 1 ' .$ip );
}
// Feedback for the end user
echo "<pre>{$cmd}</pre>";
无字符过滤,post传参,对IP格式检测,还有限制长度,先查看一下根目录 ip=127.0.0.1;ls /
发现有个ffffllllaaaagggg文件,直接读取肯定是不行的超过长度了,但我们可以使用通配符ip=127.0.0.1;cat /f*
$pat1 = "/[^0-9a-zA-Z \/\*]/";
if (preg_match($pat1, $cmd)>0){
die();
}
$pat2 = "/^[a-zA-Z]+ [0-9a-zA-Z\/\*]+$/";
if (preg_match($pat2, $cmd)==0){
die();
}
不能有0-9a-zA-Z /*之外的字符
字符串以a-zA-Z开头
中间有空格
0-9a-zA-Z/*结尾
构造payload,查看目录
Payload:?action=cmd&cmd=ls /
发现有一个flag文件,cat读取一下,拿到flag
进来发现一段emo文字~,看着好像没什么思路,看一下网页源码发现,这个链接二字居然是超链接
点击出现一段源码,审计发现可以用数组绕过
Payload:?v1[]=1&v2[]=2&v3[]=
进来啥也没有,查看网页源码发现?source
提示
传参出现源码
审计发现可以采用科学计数法加截断进行绕过,传参password=1e7%00*-*
,解析后的1e8%00*-*
字符串长度小于8,且1e8>9999999
Payload:?password=1e7%00*-
*
进来是要求解密一段密文
题目是低头,那咱们低头,看到的是啥?键盘,好的,flag出来了
进来题目提示了flag的格式,以及要我们下载附件,下载以后是一个压缩包,解压是两张图片
发现第一张能打开,而第二张无法打开,很明显我们需要在第二张下手,查看hex发现,第二张少了GIF头
那我们把GIF8
给他补上去
再次打开,发现图片里有一段文字,根据题目提示的flag格式,提交flag。
进来提示flag就在当前页面,F12查看源码,发现一个隐藏的图片
我们把display: none;
去掉,图片出来了,右键保存到本地,使用StegSolve打开,换色,得到flag
进来发现一张图片,检查页面没什么收获。
保存到本地,右键属性,详细信息,在照相机一栏找到flag
打开题目,有个超链接告诉你flag就在这里,点击却是跳转到了404.php,仔细观察其实会发现原本应该访问的是flag.html,说明被重定向了
burp抓包,一个一个包放过去,在其中一个包的head中找到了flag
进来发现有个超链接,点击发现url的变化应该是文件包含,并且页面提示flag在flag.php
使用伪协议读取一下flag.php,?file=php://filter/read=convert.base64-encode/resource=flag.php
,然后base64解码,发现flag是一串摩斯密码,再次解码,得到一段MD5密文,根据题目提示的flag格式提交就行了
进来发现是一张图
其实这是一段摩斯密码,短的是.
长的是-
空的是/
,得到.-/.-../.--./..../.-/.-../.-/-...
解码以后根据flag格式提交flag即可
RmxhZ0lTdGFud2VpZ3VhbnpoaQ==
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.