sql-labs-master中1-5题
第一题
我们进入题目界面之后,可以看到,题目要求我们使用id作为参数输入数据。在输入id=1之后我们得到:
确定可以通过union注入。
之后我们判断id的闭合符号,我们输入?id=1\最终得到的报错可知,这一题目中id的闭合符号是“ ’ ”。
之后我们判断字段长度,通过order by指令,我们的得知字段长度为三:
随后进行查库,我们使用union select来确定数据库的名称,得到结果为:security的数据库名称:
(注意:在进行union select的操作时要将id=1’改为id=-1’用于有时候我们不知道具体的列数和数据类型,或者无法确定它们。在这种情况下,我们可以通过将注入点的值设置为-1来绕过这个问题。这是因为在大多数数据库中,-1被解释为无效的标识符或错误的值,因此它不会影响原始查询的结果。通过将注入点的值设置为-1,我们可以忽略原始查询中的参数,并在UNION SELECT语句中构造我们自己的恶意查询,从而实现SQL注入攻击。)
之后我们进行查表:(通过http://127.0.0.1/sqli-labs-php7-master/Less-1/?id=-1%27%20union%20select%201,2,group_concat(table_name%20from%20information_schema.columns%20where%20table_schema=%27security%27–+即group_concat函数来实现),可以得到库中的列表:
我们看到列表中包含了名为users的列表,之后我们获取users一表中的列名:(缩小搜索范围:http://127.0.0.1/sqli-labs-php7-master/Less-1/?id=-1%27%20union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_schema=%27security%27%20and%20table_name=%27users%27–+)
得到了列名,我们就可以用group_concat来将信息输出:
当group_concat(password)时得到:
当group_concat(username)时:
第二题:
与第一题一样,我们先输入?id=1我们看到说明此题依旧是与第一题相同,之后输入?id=1\我们得到:
说明没有封闭符号。之后同第一题即可。
第三题、
同前两道题,输入id=1,判断可以使用union,之后输入id=1\,得到结果:
说明封闭符号是"‘)",之后的步奏与第一题相同,只不过id后要改为-1’)
第四题
第四题同前面的题目一致,首先通过输入值,确定可以使用union,之后依照之前的做法,输入id=1
从而得到:
这个的闭合符号。之后的做法与之前的题目相同。
第五题
当我们输入id=1时,我们发现,页面中并未给出显示,从而我们明白不能通过常规的union方式继续注入,我们需要利用报错注入。
我们使用的函数为extractvalue(),我们首先进行查库使用的函数语句为http://127.0.0.1/sqli-labs-php7-master/Less-5/?id=1%27%20and%20extractvalue(1,concat(%27~%27,database()))–+,从而得到了:的结果
之后我们进行查表,查到之后,我们看到:
之后我们查列得到:
最后我们将列的数据输出:
和: