本地搭建简单SQL注入环境

      首先本地要有一个wamp server,因为SQL注入涉及到与数据库交互,所以先从搭建测试数据库开始。
      打开mysql console,输入root账户密码登陆。创建一个数据库,并命名为fake,命令如下:

create database fake;

      因为我之前已经建立好了,这里直接配置fake数据库的用户权限,配置为leon用户访问,且leon用户的密码为leon,命令如下:

grant all privileges on fake.* to leon@localhost identified by 'leon' with grant option;

      如下图所示
这里写图片描述
      使用phpmyadmin也可以配置用户权限,参考下面文章:
      phpmyadmin用户及权限管理
      配置用户权限主要是为了防止跨库,直接使用root用户来连接当然也是可以的。
      数据库的用户权限配置好了,接下来就是在数据库下建表,建字段等,同样可以使用mysql console命令来完成这些操作,但是使用phpmyadmin比较方便
      首先在fake这个数据库下建立一个user表,user表下包括3个字段,分别是id,username和password,设置id为主键。
这里写图片描述
      然后向字段中插入内容
这里写图片描述
      最终的内容如下
这里写图片描述
      如果想要用mysql console来实现,我们可以新建一个fake2数据库来测试,create好数据库后,输入下面命令建立数据表和字段并简单配置:

create table `user`(`id` int(11) not null,`username` varchar(20) not null,`password` varchar(20) not null,primary key (`id`)) engine=myisam default charset=latin1;

      接着向数据库的字段里insert内容

insert into `user` (`id`,`username`,`password`) values (1,'leon','admin'),(2,'susan','test');

      操作过程如下图
这里写图片描述
这里写图片描述
      这里有个小细节,其实上面的这些建表、建字段和插入的语句我是利用导出的user.sql文件得到的,具体操作就是使用phpmyadmin进入下面的界面
这里写图片描述
      全选所有字段并导出,跳转到下面的页面
这里写图片描述
      点击执行就会导出一个user.sql文件,然后使用编辑器打开
这里写图片描述
      怎么感觉跑题了。。。到了这里数据库方面就处理好了,然后就是注入文件的构造,代码如下:

<?php

$id = $_GET['uid'];

echo "您当前执行的sql语句为:" ;
echo "select * from user where id=" . $id . "<br/>";
echo "<hr>";

$mysqli = new mysqli('127.0.0.1','leon','leon','fake'); 

if(mysqli_connect_errno()){
    printf("连接失败:%s<br>",mysqli_connect_error());
    exit();
}


$result = $mysqli->query("select * from user where id=$id");
//print_r($result->fetch_array(MYSQLI_ASSOC));

while(list($id,$username,$password)=$result->fetch_row()){
    echo "用户ID:" . $id . "<br/>";
    echo "用户名:" . $username . "<br/>";
    echo "用户密码:" . $password . "<br/>";
}

$result->close();
$mysqli->close()

?>

      从SQL查询语句中可以看到这是数字型的注入,本地的访问效果:
这里写图片描述
      手工注入,sqlmap注入都是可以的。
这里写图片描述
这里写图片描述
      比较怀旧的也可以使用下面的代码

<?php

$id = $_GET['uid'];

$conn = @mysql_connect('127.0.0.1','leon','leon');  //这里使用@符号屏蔽出错信息
mysql_select_db('fake',$conn);

$sql = "select * from user where id=$id";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
    echo "用户ID:" . $row['id'] . "<br/>";
    echo "用户名:" . $row['username'] . "<br/>";
    echo "用户密码:" . $row['password'] . "<br/>";
}

mysql_close($conn);
echo "<hr>";
echo "您当前执行的sql语句为:" ;
echo $sql;

?>
展开阅读全文

没有更多推荐了,返回首页