ZVulDrill靶场漏洞分析(简单的代码审计学习)

装了一个小靶场来进行简单的代码审计学习

ZVulDrill靶场漏洞分析(简单的代码审计学习)_第1张图片

  • 搜索框sql注入
    代码分析
if (!empty($_GET['search'])) {
	$query = "SELECT * FROM comment WHERE comment_text LIKE '%{$_GET['search']}%'";
	$data = mysqli_query($dbc,$query);

该语句没有任何防护,典型的搜索框注入
搜索输入1后监控变量
ZVulDrill靶场漏洞分析(简单的代码审计学习)_第2张图片
sql语句 SELECT * FROM comment WHERE comment_text LIKE '%1%'
所以只要构造语句闭合%‘就能执行sql注入
Payload: %’ and 1=2 --+
ZVulDrill靶场漏洞分析(简单的代码审计学习)_第3张图片
And 1=1 页面正常,存在注入,不再深入
ZVulDrill靶场漏洞分析(简单的代码审计学习)_第4张图片


  • 远程文件包含漏洞
    代码分析

$f = $_GET['f'];
include_once('sys/config.php');
include($f);
?>

典型include文件包含函数,且页面显示了以下配置,证明存在远程文件包含漏洞,可直接拿下
• allow_url_include = on
• allow_url_fopen = on
ZVulDrill靶场漏洞分析(简单的代码审计学习)_第5张图片

  • 反射xss
    代码分析
 echo 'The result for'.$_GET['search'].'is:'?>

典型的xss反射语句,传入的值没有进行htmlspecial过滤
ZVulDrill靶场漏洞分析(简单的代码审计学习)_第6张图片


  • 文件上次漏洞
    代码分析

include_once('../sys/config.php');
$uploaddir = '../images';

if (isset($_POST['submit']) && isset($uploaddir)) {
	
    if (move_uploaded_file($_FILES['upfile']['tmp_name'], $uploaddir . '/' . $_FILES['upfile']['name'])) {
        echo '文件上传成功,保存于:' . $uploaddir . '/' . $_FILES['upfile']['name'] . "\n";
		//更新用户信息
		$clean_user_avatar = $uploaddir . '/' . clean_input($_FILES['upfile']['name']);
		$query = "UPDATE users SET user_avatar = '$clean_user_avatar' WHERE user_id = '{$_SESSION['user_id']}'";
		mysqli_query($dbc,$query) or die('updata error!');
		mysqli_close($dbc);
		//刷新缓存
		$_SESSION['avatar'] = $clean_user_avatar;
		header('Location: edit.php');
    }
	else {
		echo '图片上传失败!
'
; echo '返回'; } }

这段代码没有进行判断文件上传的格式,存在任意文件上传。即可拿shell。


继续加油吧!

你可能感兴趣的:(代码审计)