Background
五一哈工大的新生赛,不要脸的蹭一波比赛看一看
F12
藏在http头里面
easy sql
admin' #
admin' --
easy sql again
简单看了一眼 没有判断username password为不为空 当username为不存在 不设密码的时候 NULL值的时候 传进去NULL===NULL 可以绕过
where is flag
考察linux基础知识 flag被删掉了
可以考虑proc文件提示符
/proc/self/fd/3
表示当前使用的进程
可以成功读取到
ez bypass
自己做过那么多这种题目了
== md5 数组绕过
==20200501 不能是数字 字符串
第三个要求用json password 写入固定的值
注意json格式"123":"123a"这种
前后有双引号,构造payload
pw=20200501a","password":"shuhukunkun
什么蒙混了我的双眼
这题重点说一下,自己没做过 听师傅说是去年DDCTF的原题
一开始本能思路解这个base64 但是并8太行 很多不可见字符 看不到flag,师傅说看看url
将这个url进行三层base64解密 发现是flag.jpg 有这个思路之后将index.php三层加密尝试读取
这时解密这个base64
<?php
/*
* https://www.cnblogs.com/embedded-linux/p/12638906.html
* Date: 2016-12-20 23:26
*/
error_reporting(E_ALL || ~E_NOTICE);
header('content-type:text/html;charset=utf-8');
if(!isset($_GET['jpg'])){
header('Refresh:0;url=./index.php?jpg=V20xNGFGcDVOWEZqUjJNOQ==');
}
$file = base64_decode(base64_decode(base64_decode($_GET['jpg'])));
echo '<title>'.$_GET['jpg'].'</title>';
$file = preg_replace("/[^a-zA-Z0-9.]+/","", $file);
echo $file.'</br>';
$file = str_replace("config","!", $file);
echo $file.'</br>';
$txt = base64_encode(file_get_contents($file));
echo "<img src='data:image/gif;base64,".$txt."'></img>";
/*
* Can you find the flag file?
*
*/
?>
发现是个简单的正则匹配 将config替换成! 只要求输入大小写字母和数字
然后注释里还有个文章
打开之后师傅说是和时间不对 找到正确的时间发现是个vim swp临时文件的文章
所以尝试读取.inde.php.swp
再尝试解密base64
得到提示要读这个文件 !用config替换
解密base64
<?php
include('config.php');
$k = 'flag!flag!';
extract($_GET);
if(isset($t))
{
$content=trim(file_get_contents($k));
if($t==$content)
{
echo $flag;
}
else
{
echo'flag!flag!';
}
}
?>
extract具有变量覆盖漏洞 当get传入同名变量时他会覆盖掉
我们传入k不存时候为false false=="" 所以直接getflag
当然也不只一种解法
get 覆盖t=1 k=php://input
在POST情况下我们可以手工提交1让他们相等