zoukankan      html  css  js  c++  java
  • SQL注入之Sqli-labs系列第一关

             在开始接触渗透测试开始,最初玩的最多的就是Sql注入,注入神器阿D、明小子、穿山甲等一切工具风靡至今。当初都是以日站为乐趣,从安全法实施后在没有任何授权的情况下,要想练手只能本地环境进行练手,对于sql注入的练习场网上有大把的靶场,我个人比较喜欢sqli-labs这个靶场,关卡有几十个,每一关都有不同的感觉。写这篇文章是个人再练习注入的时候自己总结出来的一部分经验,百度上面也能搜的到相关类似的过关技巧,至于为什么要写这个,这相当于对自己经验的一个总结吧!关于搭建请自行github进行查看,这里我就有不多说了,地址:https://github.com/Audi-1/sqli-labs

        废话不在多说  let's go!   开始挑战第一关(Error Based- String)

     访问我们的地址http://localhost:81/sqli-labs-master/Less-1/index.php,然后构造下注入环境,根据页面提示需要加入一个数字参数,直接加入?id=数字或者其他都可以。

     

    这里为了方便查看自己输入的sql语句是带到数据库中是怎么样的,可以在代码中加入 echo "$sql<br>";

    老规矩,输入and 1=1 来进行判断,显示正常

    继续输入and 1=2来判断,瓦特,既然没有任何的反应

     

    既然这样无效,直接输入单引号看是否会提示报错

    很明显出现了错误,这里我们将错误提示拿出来进行分析,从下图中很容易就看出了门道

    我们来试着构造下它的sql语句,由于mysql会将你输入的内容带入数据库后强制转换成字符串,所以这样一来我们就可以采用闭合单引号的方式进行注入了

     但后面还有个limit 0,1,  直接再采用注释符将后面的内容给干掉,常用的单行注释符有(# , --+),个人比较喜欢#,来吧,开干吧!

    输入 ‘  and ‘1’ =‘1闭合后,回显正确

    在输入  ‘  and ‘1’ =‘2返回错误  

    前面已经测试了存在注入,现在就开始使用 order  by 猜解字段数了,这里我就不一一去试了,正确是3个字段数

    使用union  select进行联合查询,再加入-号或者and 1=2让其报错

    进入下面的操作前,先介绍几个函数:

      (1)version():查看数据库版本

      (2)user():查看当前用户

      (3)database():查看使用的数据库

      (4) limit  :limit子句来分批获取所有数据

      (5)group_concat():一次性获取数据库信息

    查看数据库,版本,当前用户

    可以看出数据库版本是5.0,直接爆出所有表名,数据库名转成16进制,这里可以使用小葵转换工具,或者使用火狐的hackbar工具直接转换

    接下来获取字段名

    获取数据,加入0x5c是为了便于查看

            好了,第一关比较简单,有些肯定会有疑惑,为什么要去看information_schema库,tables,table_schema,table_name都是这么来的, 要学习sql注入,你必须先了解数据的结构,建议使用数据库管理工具一查便知,我这里就不多做解释。。。

  • 相关阅读:
    iptables阐述防火墙
    升级openssh基于openssl
    Linux密钥认证错误解决
    keychain实现ssh对秘钥免登陆免输入密码
    rpcbind服务死活启动不了
    samba温故知新
    Linux下umask的缺省默认权限
    tomcat在线部署且查看堆栈状态
    mariadb多实例搭建
    rarlinux基于linux-x64
  • 原文地址:https://www.cnblogs.com/AmoBlogs/p/8661262.html
Copyright © 2011-2022 走看看