04.SQL注入实例

1.SQL注入的简介

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

2.SQL注入攻击的总体思路.

1.寻找到SQL注入的位置
2.判断服务器类型和后台数据库类型
3.针对不同的服务器和数据库的特点进行SQL注入攻击

3.SQL注入攻击实例

/**
 * 在一个登陆界面,要求输入用户名和密码:
 * 可以这样输入;实现不用账号输入:
 * 用户名: 'or 1 = 1 -
 * 密码:
 * 
 * 点登陆,如果没有做特殊处理,那么这个非法用户就很得意的登陆进入了,
 * (当然有些语言的API已经处理了这个问题)
 * 理论上说:后台认证程序中会有如下的SQL语句:
 *
 */
/**
         * String sql="select * from user_table where user name = '"+username+"'and password='"+password+"'" ;
         * 当输入了上面的用户名和密码,上面的SQL语句就变成了
         * SELECT * FROM user_table WHERE username ="or 1 = 1 -- and password= ";
         * 分析SQL语句:
         * 条件后面username="or 1=1 用户名等于 "
         * 或1=1 那么这个条件一定会成功;
         * 
         * 然后后面加两个-,这意味着注释,他将后面的语句注释,让他们起不到作用,这样语句永远都能正确执行,
         * 用户轻易骗过系统,获取合法身份
         * 
         * 假如执行:
         * SELECT * FROM user_table WHERE username= "DROP DATABASE(DB NAME) -- and password="
         * 就完蛋了
         */
/**
         * 解决的方法就是:
         * 针对JSP,提供下面的应对方法:
         * 一.PreparedStatement(简单有效的方法)
         * 采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值就可以解决.
         * 
         * 使用好处:
         * 1.代码的可读性和可维护性.
         * 2.PreparedStatement尽最大可能提高性能.
         * 3.最重要的一点是极大的提高了安全性.
         * 
         * 原因:SQL注入只对SQL语句的准备(编译)过程有破坏作用,
         * 而preparedStatement已经准备好了,
         * 执行阶段只是把输入串作为数据处理.
         * 而不再对SQL语句进行解析,因此也就避免了SQL注入问题.
         * 
         * 
         * 二.使用正则表达式过滤传输的参数
         * 引入的包:import java.util.regex.*;
         * 正则表达式:private String CHECKSQL = "^(.+)\\sand\\s(.+)|(.+)\\sor(.+)\\s$";
         * 判断是否匹配:
         * Pattern.matches(CHECKSQL,targerStr);
         * 
         * 下面是具体的正则表达式:  /(\%27)|(\')|(\-\-)|(\%23)|(#)/ix
         * 修正监测SQL-meta-character的正则表达式:/((\%3D)|(=))[^\n]*((\%27)|(\')|(\-\-)|(\%3B)|(:))/i
         * 
         * 典型的SQL注入攻击的正则表达式:/\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix
         * 
         * 检测SQL注入,UNION查询关键字的正则表达式:/((\%27)|(\'))union/ix(\%27)|(\')
         * 
         * 检测MS SQL Server SQL注入攻击的正则表达式: /exec(\s|\+)+(s|x)p\w+/ix
         * 等等.
         * 
         * 三.字符串过滤
         * 比较通用的一个方法:
         * (|| 之间的参数可以根据自己的程序的需要添加)
        
         */
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容