PortSwigger SQL注入LAB7 LAB8 LAB9
PortSwigger SQL注入LAB7 LAB8 LAB9今天我把这三道LAB一起来分享主要是因为他们之间有着特别紧密的关联至于有那些关联就让我们来看一下吧。【本篇目标】1. 理解并掌握通过UNION来确定查询的列数及数据类型2. 通过LAB7、LAB8的知识来获取LAB9所需的用户名及密码并完成登录一、LAB 7我们先来看LAB7的题目页面上的注入点是/filter?category...LAB的目标是要让我们确认原查询的列数我们这里可以直接使用ORDER BY *的递增来确认原查询返回的列数但是我们看原题目题目要我们返回包含空值(NULL)的额外行来确定查询返回的列数其实很好理解就是在进行UNION联合查询的时候把要查询的值给换成NULL说可能说不太清楚但是一看就明白什么意思了我们可以发现服务器返回了ERROR 500错误这是因为我们的UNION查询语句返回的列数与原查询列数不符所以我们可以通过添加NULL的个数直到服务器不返回ERROR 500这样就可以确定原查询的列数了就像这样一样当我们把NULL的个数增加到3的时候服务器返回了200 OK所以我们可以得出原查询的列数为3列LAB7实验目标达成。【LAB7 Payload】 UNION SELECT NULL,NULL,NULL FROM information_schema.tables --二、LAB 8先看LAB8这道题页面上的注入点仍然是/filter?category...LAB的目标是要让我们发现一个可以返回文本的列并且返回对应的随机值这里我们需要返回的值为Wo1mBK接下来我们先来通过上一个LAB的方法来获得原查询的列数然后再到他的基础上进行下一步操作通过尝试可知原查询的列数为3那么接下来我们只需要知道那一列的数据类型支持返回字符串即可在这里我们只需要把其中的NULL改为我们所需要返回的字符串Wo1mBK来对每一个列数进行尝试即可。(注意加引号否则非字符串类型!)成功定位并返回随机字符串值LAB8实验目标达成。【LAB8 Payload】 UNION SELECT NULL,Wo1mBK,NULL FROM information_schema.tables --三、LAB 9最后我们来看LAB9这道题页面上的注入点还是/filter?category...最后一个LAB的目标是要我们获取数据库中存储的用户名和密码并且使用administrator账户来进行登录这道LAB相较于上一篇的LAB5和LAB6题目中已经告诉了我们目标用户名密码被存放在了users表的username和password列中这下倒是省去了我们遍历寻找的麻烦3.1 确认列数还是老样子既然我们要用到UNION那就必然要先来确定原查询的列数我们可以使用以下两种办法但是此处我选的是后者ORDER BY *SELECT NULL,NULL,...FROM information_schema.tables