以下是OMG小编为大家收集整理的文章,希望对大家有所帮助。

SQL注入是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。其实就是就是提交精心构造的数据库语句,使其反馈一些有用的数据。说白了就是去欺骗数据库,假如只有web服务器的话,是没法进行SQL注入的。

网上常用的注入手法有两种,一种是猜测,让数据库暴出用户名、密码等信息;另一种直接绕过认证,取得权限。相对应,要想修复此类漏洞,就必须禁止特殊数据的提交或将特殊提交的数据修改。

下面是不同脚本语言下的防注入过滤代码,其实思想是一致的。

1、 PHP防注入过滤代码

php 代码复制内容到剪贴板

/*************************

说明: 判断传递的变量中是否含有非法字符 如$_POST、$_GET

功能: 防注入

使用方法: 将下列代码保存为ak,php,调用方式 在数据提交页加上include("ak.php");

**************************/

function dowith_sql($str)

//实现将特征码两边加.

{

$refuse_str="exec|and|or|select|update|from|where|order|by|*|delete||insert|into|values|create|table|

database|set|char|asc|cast|declare|

//定义防注入的字符

$arr=explode("|",$refuse_str);

//将$refuse_str中的值单独取出

for($i=0;$i

{

$replace="[".$arr[$i]."]";

$str=str_replace($arr[$i],$replace,$str);

//在变量$str中搜索字符串$arr[$i],并将其替换为字符串[$replace]

}

return $str;

}

foreach ($_GET as $key=>$value)

//遍历获GET方法获得的参数$_GET的值传给$key,并赋值给$value

{

$_GET[$key]=dowith_sql($value);

//将$value中的特征码处理传个$_GET[$key]

}

foreach ($_POST as $key=>$value)

{

$_POST[$key]=dowith_sql($value);

}

?>

上面的防注入的方法只是防了GET与POST方法提交的数据,但是,WEB服务器读取数据的顺序是,先取GET中的数据,没有再去POST中的数据,没有还会再去COOKIES中的数据,上面的代码还没有防cookies注入。防cookies注入就比较简单了,cookies的id值一般只为阿拉伯数字,但是cookies注入必须得在id中构造代码,只要在获得参数UID后,对其进行过滤就可以了,代码如下:

php 代码复制内容到剪贴板

if($_COOKIE[id]!=null) {

//判断cookies不为空

foreach ($_COOKIE[id] as $key=>$id){

//读取cookies中的值

if (is_numeric($id)<0){

echo " ";

}

}

?>

将上述代码保存为hk.php。

所以在平时应用时,在网页上加上include("ak.php");与include("hk.php");

2、 ASP防注入过滤代码

--------说明------------------

使用方法: 在需要防注的页面头部用 处理 SSI 文件时出错

包含就可以了

友情提示:把代码复制到CONN.asp(数据库连接文件) 那么,只要包含了CONN的所有文件都防注了

-------- ------------------------

Dim xf_Post,xf_Get,xf_In,xf_Inf,xf_Xh,xf_db,xf_dbstr

自定义需要过滤的字串,用 "|" 分隔

xf_In = "|;|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"

xf_Inf = split(xf_In,"|")

If Request.Form<>"" Then

For Each xf_Post In Request.Form

For xf_Xh=0 To Ubound(xf_Inf)

If Instr(LCase(Request.Form(xf_Post)),xf_Inf(xf_Xh))<>0 Then

Response.Write ""

Response.Write "非法操作!系统做了如下记录↓

"

Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"

"

Response.Write "操作时间:"&Now&"

"

Response.Write "操作页面:"&Request.ServerVariables("URL")&"

"

Response.Write "提交方式:POST

"

Response.Write "提交参数:"&xf_Post&"

"

Response.Write "提交数据:"&Request.Form(xf_Post)

Response.End

End If

Next

Next

End If

If Request.QueryString<>"" Then

For Each xf_Get In Request.QueryString

For xf_Xh=0 To Ubound(xf_Inf)

If Instr(LCase(Request.QueryString(xf_Get)),xf_Inf(xf_Xh))<>0 Then

Response.Write ""

Response.Write "非法操作!系统已经给你做了如下记录↓

"

Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"

"

Response.Write "操作时间:"&Now&"

"

Response.Write "操作页面:"&Request.ServerVariables("URL")&"

"

Response.Write "提交方式:GET

"

Response.Write "提交参数:"&xf_Get&"

"

Response.Write "提交数据:"&Request.QueryString(xf_Get)

Response.End

End If

Next

Next

End If

%>

同样,再将cookies防一下,代码加在数据提交页。

if(Request.Cookies["uid"]!=null)

{

uid=Request.Cookies["uid"].value;

isnumeric cooidesID = new isnumeric();

//这是一个类

if (cooidesID.reIsnumeric(ruid))

//如果是数字就运行下面的

{

string str="select * from userTable where id="+uid;

...

}

}

3、 JSP防注入过滤代码

sql盲注如何修补_如何修复SQL注入漏洞相关推荐

  1. python脚本自动化盲注_三、基于报错型注入和sql盲注的自动化实现

    通过前面payload的构造,不难发现,对于报错型注入和布尔注入(sql盲注)纯手工注入的效率是非常慢的.这些payload语句虽然复杂,但大部分内容都是相同的,因此,一言不合就写了个脚本自动化注入, ...

  2. 让你轻松学会PHP版自动化SQL盲注工具-全库-全表-全字段-全字段值查询

    前言 由于一些个人原因,很久没有研究WEB安全方面的一些问题了(废话四个月前月还发了帖),正好炎炎夏日暑假的生活到来,这个时候我需要的是恶补,恶补,恶补.兜兜转转到了SQL盲注部分,然后在SQL盲注上 ...

  3. 【网站架构】网站系统怎么才是安全的?安全验收?等保、网络安全、SQL盲注、https、鉴权

    大家好,欢迎来到停止重构的频道. 本期我们讨论网站系统的安全性. 安全的重要性不言而喻,大部分安全问题确实是安全扫描后根据指引修改就可以了. 但是仍有一些问题修改起来是特别麻烦的,这些问题会严重影响上 ...

  4. SQL盲注工具BBQSQL

    SQL盲注工具BBQSQL SQL注入是将SQL命令插入到表单.域名或者页面请求的内容中.在进行注入的时候,渗透测试人员可以根据网站反馈的信息,判断注入操作的结果,以决定后续操作.如果网站不反馈具体的 ...

  5. sql注入攻击与防御第二版读书笔记二——SQL盲注利用

    寻找并确认SQL盲注 强制产生通用错误 注入带副作用的查询 如 mssql waitfor delay '0:0:5' mysql sleep() 拆分与平衡 5 -> 7-2 常见SQL盲注场 ...

  6. python sql注入漏洞 ctf_CTF-WEB 一个登录框SQL盲注

    一些师兄给了个平台,最近学了很多SQL注入和编写脚本的知识,跃跃欲试,结果这一做就是漫漫长路,还是很多东西不熟悉啊. 首先找注入点: 发现用户名错误和密码错误会分开提示,可以用布尔盲注,(*^▽^*) ...

  7. SQL注入:5、SQL盲注

    5.SQL盲注 SQL注入与SQL盲注的区别 逻辑判断注入漏洞是否存在 SQL盲注之无权读取information_schema库和拒绝union.orderby语句 一次SQL盲注: SQL注入与S ...

  8. sql盲注特点_sql盲注讲解

    盲注 有时候,开发人员不会把数据库报错信息显示在前端页面,这样就使我们想要通过union注入或报错注入的攻击方式难以实现. 当不显示报错信息的时候,我们还可以通过盲注的方式来对数据库进行注入攻击. 盲 ...

  9. sql盲注二分法注入脚本

    sql盲注二分法注入脚本 次脚本可以用来检测sql靶场第五关 http://caichuanqi.cn/lab/sqli-labs-master/Less-5/?id=1 #-*-coding:utf ...

最新文章

  1. 无法启动MySQL数据库
  2. CentOS 6.8 安装 RabbitMQ
  3. ECSTORE 关于FILTER条件所代表的含义
  4. 【线上分享】基于人眼主观视觉的画质评价与提升
  5. 2021年峰峰春晖中学高考成绩查询,峰峰春晖中学2019年录取分数线
  6. STL源码剖析 第二次温习 细节审核
  7. [Unity][FlowCanvas][NodeCanvas] ForEach 不适合连接 Wait,FSM 的 SubFlowScript 接受不到事件
  8. python中fd和rt是什么意思_python中fd()是什么
  9. 34.scrapy解决爬虫翻页问题
  10. tomcat在conf/Catalina/localhost目录下配置项目路径
  11. UVA - 11520 Fill the Square
  12. HTC vive Eye pro眼动追踪初识
  13. 《微软System Center 2012 R2私有云部署实战》——第二章 微软私有云选型2.1 服务器选型...
  14. 基于YOLO的新型RGB-D融合方法对行人进行检测和3D定位
  15. Java实例(1)BMI计算
  16. 如何用电脑制作VR全景图
  17. Neutron的Port详解
  18. TTF 字体文件 删除不了,提示已经在System 打开
  19. 大一学计算机需要准备做东西,我是浙江大学大一的学生,以后打算学习计算机专业,想去卡耐基梅隆大学或MIT读研,不知道需要做哪些准备?...
  20. 时序数据库 InfluxDB

热门文章

  1. 著名安全组织邪恶八进制遭到不明攻击
  2. 关于usb3vision开发
  3. SAS学习笔记(一)
  4. DVWA通关--SQL注入(SQL Injection)
  5. win10 python 查看安装库的帮助文档
  6. TortoiseGit小乌龟基本使用
  7. C语言课程设计之火车订票系统
  8. 试卷分析报告matlab,试卷分析报告(精选10篇)
  9. 高校科研管理系统设计与实现小程序-计算机毕业设计
  10. ad采样信噪比与噪声_AD噪声分析