[MRCTF2020]Ez_bypass
他说F12里有东西,那我们就打开
I put something in F12 for you include 'flag.php'; $flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}'; if(isset($GET['gg'])&&isset($GET['id'])) { $id=$GET['id']; $gg=$GET['gg']; if (md5($id) === md5($gg) && $id !== $gg) { echo 'You got the first step'; if(isset($POST['passwd'])) { $passwd=$POST['passwd']; if (!is_numeric($passwd)) { if($passwd==1234567) { echo 'Good Job!'; highlight_file('flag.php'); die('By Retr_0'); } else { echo "can you think twice??"; } } else{ echo 'You can not get it !'; } } else{ die('only one way to get the flag'); } } else { echo "You are not a real hacker!"; } } else{ die('Please input first'); } }Please input first
可读性真差,在F12里双击它会变得好看一点
第一个点是md5($id) === md5($gg) && $id !== $gg
简单的md5强比较,用数组
md5强比较没有规定字符串如果这个时候传入的是数组不是字符串,md5()函数无法解出其数值并且不会报错,就会得到数值相等;
第二个点is_numeric是弱比较数字只需要1234567a就可以绕过,注意是post方式
总结
我一开始没仔细看,以为是弱比较,然后发现不对,找了找问题发现原来是强比较。。。
弱比较和强比较都可以用数组!但是我一开始用的0e
[GYCTF2020]Blacklist
我上一次刷题居然漏了一个注入!!!
fuzz一下发现过滤的比强网杯更严格了
preg_match("/set|prepare|alter|rename|select|update|delete|drop|insert|where|./i",$inject)
堆叠还是可以用的!
又学习了堆叠的骚操作!!
HANDLER ... OPEN可以打开一个表
HANDLER ... READ可以访问,并在会话中调用HANDLER ... CLOSE或者绘画结束前不会关闭,前提是该表对象未被其它会话共享
payload
1';HANDLER%0aFlagHere%0aOPEN;HANDLER%0aFlagHere%0aREAD%0aFIRST;HANDLER%0aFlagHere%0aCLOSE;#
总结
又收获了堆叠注入的骚姿势
上传一个马试一试,发现后缀不能有ph
上传shell.Php也不行看来大小写一样
上传shell.shtml和shell.pwml说我太露骨
那我就修改一下Content-Type为image/jpeg
上传他说我还是php文件,那我把<?php改为<php
上传成功了,但是shtml没解析pwml也是
(一下就过滤了php / php5 / pht / phtml / shtml / pwml / phtm)
因为上传目录下没有php文件,所以.user.ini失效了
本来看了一下这是nginx不是apache就没想到用.htaccess,但是发现wp就是用.htaccess!学到了新知识!原来nginx也是支持.htaccess的!
.htaccess文件内容为
AddType application/x-httpd-php .mochu
然后上传图片马会被当做php解析,连接菜刀或者直接文件读取就行啦!
文件读取时候发现cat不出来,于是我看了看phpinfo的disable_functions禁用了好多系统函数
于是找到了show_source(filename,return)
show_source()函数对文件进行语法高亮显示(是highlight_file()的别名
语法:show_source(filename,return)
其中filename必须return可选,如果设置为true,则返回高亮处理的代码!而不是输出它们!(比如写了一段计算的代码,会返回代码本身而不是计算结果)否则,若成功,则返回 true,失败则返回 false。
总结
原来不只是apache支持.htaccess文件!
学到了show_source()函数!
终于!buu开始做第二页了,拖到现在终于算告一段落,我们下一章见!
感谢buu提供题,也感谢勤劳的自己!债见!