web漏洞

目录遍历漏洞

漏洞源码1:

1
2
3
4
if(isset($_GET['title'])){
$filename=$_GET['title'];
//这里直接把传进来的内容进行了require(),造成问题
require "soup/$filename";

在dir_list.php文件中直接包含了soup文件夹下的文件,引发了目录遍历漏洞,通过此漏洞可能读取到网站根目录中的敏感文件(../)

因为title=soup/jarheads.php传入的php文件是嵌套在html中的,所以会在界面中展示

上面只是包含,加上这几行代码,查看源代码显示

1
2
3
4
$filename = "soup/$filename";
$handle = fopen ($filename,"r") ;
$contents = fread($handle,filesize($filename) ) ;
echo $contents;

漏洞源码2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

function my_dir($dir) {
$files = [];
if(@$handle = opendir($dir)) {
while(($file = readdir($handle)) !== false) {
if($file != ".." && $file != ".") {
if(is_dir($dir . "/" . $file)) { //如果是子文件夹,进行递归
$files[$file] = my_dir($dir . "/" . $file);
} else {
$files[] = $file;
}
}
}
closedir($handle);
}
return $files;
}

echo "<pre>";
$d=$_GET['d']; //没有防范
print_r(my_dir($d));
echo "</pre>";

传入参数d=pikachu,就会遍历目录下的所有文件,会出现..\打印上级目录,这样会出现网站源码结构泄露

sql注入漏洞

sql注入就是在数据交互中,前端数据传到后台时没有做严格的判断,导致传进来的数据被拼接到sql语句中,被当作sql语句的一部分进行执行

注入时信息收集


mysql的版本5.0以上才有information_schema数据库

  • 信息收集:
    查询数据库 version()
    数据库名字 databaase()
    数据库用户 user()
    操作系统 @@version_compile_os

跨库查询:目标网站的同一个服务器中如果存在一个网站的数据库是使用root权限连接的,且存在sql注入漏洞,就会有被跨库攻击的风险。数据库名存放在information_schema.schemata表中的schema_name字段,查询方式和查表名一致