SQL注入sqli-labs-master关卡一
创始人
2024-11-06 12:08:48

 本文环境搭建使用的是小皮,靶机压缩包:通过百度网盘分享的文件:sqli-labs-php7-master.zip
链接:https://pan.baidu.com/s/1xBfsi2lyrA1QgUWycRsHeQ?pwd=qwer 
提取码:qwer

下载解压至phpstudy的WWW目录下即可。

第一关如下:判断是否存在注入点。

页面提示我们输入ID作为数值参数,

我们查看该关卡的php源码进行分析:第一步是要连接MySQL,二这个MySQL进行了一个文件包含,将sql-connections/sqli-connect.php的文件代码参数用至index.php中,连接至数据库后的if(isset($_GET['id']))等代码就是进行数据库的一个查询。这里的isset($_GET['id']))代码不知道是什么意思的可以去PHP: PHP 手册 - Manual进行一个查询:

传参有GET和POST两种传参方式,GET传参一般在浏览器的地址栏中传参,POST传参一般在from表单中传参。然后我们传入id=1即输入?id=1,回车后页面显示如下我们的名字和密码为Dumb。传入id=2时返回的名字密码也不同,说明我们传入的值是被带进数据库中进行了一个查询并打印到前端页面中来。也就是说通过php源码我们可以看出该关卡的内容很简单,就是接收参数,查询数据库,前端显示的一个操作。

然后我们可以从中看出该代码存在的漏洞:首先没有对用户的输入进行一个过滤

因为没有对用户输入做过滤,我们进行一个联合查询,注意地址栏中的%20是空格符,因为编码先转ASCLL码再转十六进制,前面的0x变为%替代。但是查询结果依然是?id=1的结果。

在源码中我们可以看到查询语句是这一句。

我们union select 1,2,3就相当于

注意前面id的单引号,我们联合查询的语句并没有进入,在数据库中执行的语句依然为id = 1,没有我们要联合查询的语句,所以我们要逃离单引号,逃离单引号我们可以加一个单引号使之闭合。

union select 1,2,3'就像这种,注意单双引号要成对出现,不然会报错。所以我们需要给他闭合上单引号。但是我们已经逃脱了单引号的控制。

我们联合查询多的单引号就要想办法去给他搞掉。我们有两个办法去把这个单引号弄掉;1.加个单引号,给它闭合上。2.给这个单引号注释掉。MySQL的注释符有三个:-- 和# 和/***/ */这三个注释符。若是依然报错,地址栏中注释符存在,则我们可以转为ASCII编码再转十六进制再去尝试即可。

我们的最终目的是注入管理员的账号密码,首先我们就需要知道管理员表表名和列名。

我们不知道管理员的表名列名,但是我们可以知道MySQL自带的三个表, information_schema, mysql,performance_schema 这三个表。重点放在信息表information_schema它包含了数据库里的所有表。

我们通过order by检测它的列数,?id=1'order by 1 --+通过1,2,3,4一个一个去尝试,发现其列数为3列。

查询前端显示的是1,2,3列中的那一列?id=-1'union select 1,2,3--+得到显示的是2,3列。这里将id值作为-1是为了让前面的语句失效再使用union查询是否有回显位。

查找它的数据库名字和版本?id=-1'union select 1,database(),version()--+得到它的数据库名为security。

在information_schema中存在的columns表(列名)和table表(表名)是我们需要查看的地方。则通过

?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+查询出表名。

在表名里我们看到了users用户表,再查看它的字段名?id=-1' union select 1,2,group_concat(column_name)from information_schema.columns where table_name='users'--+,

在里面我们看到了username表和password表。就直接进行查询这个users中的username和password。

?id=-1' union select 1,2,group_concat(username , password) from users--+

拿到账号密码这样看太抽象了,于是我又换了个代码查询。

?id=-1' union select 1,username,password from users where id=2 --+

?id=-1' union select 1,username,password from users where id=3 --+

?id=-1' union select 1,username,password from users where id=4 --+

上就是第一关的内容了。

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...