以portswigger为学习蓝本,选择All Labs,逐个攻破与汇总知识点。
本节知识点汇总:
(1)判断是否有注入
-直接在GET请求的参数后添加单引号,如果报错,即存在注入,因为引入的SQL语句出错
(2)union select 追加足够多的null: '+union+select+null,null,null,null+--ss,直到报错为止。减少一个null,显示正常响应结果,此时null的数量即为正常请求的语句select出来的列数。--为注释符,之所以后面再追加一个ss,是防止系统会删除结尾的非正常字符。只所以不像一般课程说的直接用select 1,2,3--之类,因为有的数据库不能识别select 1,2,3,但是都支持null。
(3)判断前面语句select的类型
用随机字符串,先替换第一个null,观察结果,再逐个新增地替换null
第一个null替换为'aaaaa‘报错,将它换回来,再将第二个null换成'aaaaa',以此类推
以上几个图可以判断出,第1列和第3列为数字,第2列为字符串,第1列未在网页中显示,第3列作了除以100的操作。我们需要的就是第2列!
(4)以下是一个可以显示2列字符串的例子,实验题目已经告诉了表名和要查的就是administrator的密码,所以我们这样写语句,并在右侧直接找到administrator,其对应的条目就是密码。
(5)在一个列中显示所数据,用到数据库的拼接
'+union+select+'1',username||'~'||password+from+users+--+ss(postgresql用双竖线进行拼接)