Sqli-Labs less-1

首先,记录一下基础知识,可能不全:

 

几个常用的函数:

1.version()   --Mysql版本

2.user()  --数据库用户名

3.database()  --数据库名

4.@@datadir  --数据库安装路径

5.@@version_compile_os  --操作系统的版本

 

常用的语句(重要):

1.查库:select schema_name from information_schema.schemata

2.查表:select table_name from information_schema.tables where table_schema='security'(此表名用的时候大多数转为16进制)

3.查列:select column_name from information_schema.columns where table_name='users'

4.查字段:select username,password from security.users

 

字符串连接函数:

1.concat(字符串1,字符串2)   --没有分隔符的连接字符串

2.concat(-/~,字符串1,字符串2)  --含有分隔符的连接字符串

3.group_concat(字符串1,字符串2)    --连接一个组的所有字符串,并用,分隔每一个字符。

 

注释符:#  --+  --空

 

 

less-1

开始之前,为了方便笔记,我在网页源码的数据库部分加了两行代码,第一行意思是输出数据库语句,第二行是换行符

Sqli-Labs less-1

 

 

输入?id=1',出现报错:

 Sqli-Labs less-1

 

 

输入?id=1,正常,说明存在字符型注入。

Sqli-Labs less-1

 

 

接下来爆库,爆表,爆列,查询;

用order by语句去猜列数,以下用二分法查到列数为三:

Sqli-Labs less-1

 

 

Sqli-Labs less-1

 

 Sqli-Labs less-1

 

 

用union select 联合查询去回显数据:

这里正确的查询是图2,如果按照图1查询,因为limit0.1的限制,只能输出1个,所以输入id=-1或者0让他只能查询到第二行数据才可以输出。Sqli-Labs less-1Sqli-Labs less-1

 

 

 

 

 

 

Sqli-Labs less-1

 

 

Sqli-Labs less-1

 

 上面的操作结束以后,判断了回显位置,后面就可以利用这两列回显想要的数据

 

查库名:这里是3作为回显位置,语句意思是从数据库中查询数据库的名字,group concat是合并成一行输出

Sqli-Labs less-1

 

 

 

查表名:我们要用的数据库是security 最后查询得到数据库的表信息。注:这里推荐使用图二的16进制,不用考虑单引号的问题,得到的数据是相同的

Sqli-Labs less-1

 

 Sqli-Labs less-1

 

 

查询users表的字段:(这里不知道数据库只有最后三个字段,为啥回显出这么多字段,暂且留一个疑问)

Sqli-Labs less-1

 

 

查询字段中的内容:这里推荐使用图三中的语句查询,可以一次性查询多个字段内容,并且中间有分隔符

Sqli-Labs less-1

 

 Sqli-Labs less-1

 

 Sqli-Labs less-1

 

 

 

 

未完待续。。

上一篇:Sqli-Labs less-7


下一篇:Sqli-labs闯关题基础知识