本地搭建简单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;

      如下图所示
本地搭建简单SQL注入环境_第1张图片
      使用phpmyadmin也可以配置用户权限,参考下面文章:
      phpmyadmin用户及权限管理
      配置用户权限主要是为了防止跨库,直接使用root用户来连接当然也是可以的。
      数据库的用户权限配置好了,接下来就是在数据库下建表,建字段等,同样可以使用mysql console命令来完成这些操作,但是使用phpmyadmin比较方便
      首先在fake这个数据库下建立一个user表,user表下包括3个字段,分别是id,username和password,设置id为主键。
本地搭建简单SQL注入环境_第2张图片
      然后向字段中插入内容
本地搭建简单SQL注入环境_第3张图片
      最终的内容如下
本地搭建简单SQL注入环境_第4张图片
      如果想要用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');

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



$id = $_GET['uid'];

echo "您当前执行的sql语句为:" ;
echo "select * from user where id=" . $id . "
"
; echo "
"
; $mysqli = new mysqli('127.0.0.1','leon','leon','fake'); if(mysqli_connect_errno()){ printf("连接失败:%s
"
,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 . "
"
; echo "用户名:" . $username . "
"
; echo "用户密码:" . $password . "
"
; } $result->close(); $mysqli->close() ?>

      从SQL查询语句中可以看到这是数字型的注入,本地的访问效果:
本地搭建简单SQL注入环境_第10张图片
      手工注入,sqlmap注入都是可以的。
本地搭建简单SQL注入环境_第11张图片
本地搭建简单SQL注入环境_第12张图片
      比较怀旧的也可以使用下面的代码



$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'] . "
"
; echo "用户名:" . $row['username'] . "
"
; echo "用户密码:" . $row['password'] . "
"
; } mysql_close($conn); echo "
"
; echo "您当前执行的sql语句为:" ; echo $sql; ?>

你可能感兴趣的:(SQL注入)