这周四团队进行了一次内部比赛,学长让我们进行对各自搭建的登陆注册界面互相进行sql注入攻击,毫无准备的我很快就被打穿了…,唉,无奈代码写太简陋,没有提前准备,体验感极差hhh。。。



那么先来了解一下什么是sql注入
sql注入定义
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
sql注入原理
   当用户使用输入内容来构造动态sql语句以访问数据库时,如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的 字符串来传递,会发生sql注入。在某些表单中,用户输入的内容直接用来构造动态sql命令,或者作为存储过程的输入参数,这些表单特别容易受到sql注入的攻击。因此,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,这样,用户就可以提交一段数据库查询的代码, 根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是sql注入就发生了。
  如何防护  
主要有以下几点:
1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和
双"-"进行转换等。
2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。


下面是我的登陆验证代码:

<?php$conn=mysql_connect("localhost",'root','root') or die("数据库连接失败!");//连接你的本地数据库localhost为服务器 root为用户名 root为密码mysql_select_db('myphp',$conn) or die("您要选择的数据库不存在");//选择你建立的数据库$name=$_POST['username'];$pass=$_POST['password'];//获取表单提交的内容用两个变量来存post方式接受的值$sql="select * from user where username='$name' and password='$pass'";//查询语句$query=mysql_query($sql);//函数执行一条 MySQL 查询。$arr=mysql_fetch_array($query);然后从$query中取一行数字数组if(is_array($arr)){//对$arr进行判断setcookie('username',$name,time()+3600);//设置cookie,时间为一小时,(以秒为单位)header("Location:index.php");//跳转页面}else{echo "您的用户名或密码输入有误,<a href=\"login.php\">请重新登录!</a>";}?>

注意到了没,我们直接将用户提交过来的数据(用户名和密码)直接拿去执行,并没有实现进行特殊字符过滤,待会你将明白,这是致命的。
  代码分析:如果,用户名和密码都匹配成功的话,将跳转到目的操作界面 index.php,不成功,则给出提示信息。
演示注入手法
接下来将展开我们的重头戏SQL注入:
  填好正确的用户名(123)和密码(123)后,点击提交,将会返回给我们“登陆成功”的界面。
  因为根据我们提交的用户名和密码被合成到SQL查询语句当中之后是这样的:

 select * from users where username='123' and password='123'

很明显,用户名和密码都和我们之前给出的一样,肯定能够成功登陆。
但是,如果我们输入一个错误的用户名或密码呢?很明显,肯定登入不了吧。恩,正常情况下是如此,但是对于有SQL注入漏洞的网站来说,只要构造个特殊的“字符串”,照样能够成功登录。
比如在用户名输入框中输入:’or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为:

select * from users where username='' or 1=1#' and password=md5(' ')
语义分析:“#”在mysql中是注释符,这样#号后面的内容将被mysql视为注释内容,
这样就不会去执行了,换句话说,以下的两句sql语句等价:select * from users where username='' or 1=1#' and password=md5(' ')
等价于   select * from users where username='' or 1=1因为1=1永远都是成立的,即where子句总是为真,将该sql进一步简化之后,
等价如下select语句:
select * from users

没错,该sql语句的作用是检索users表中的所有字段
果不其然,我们利用万能语句(’or 1=1#)能够登录!看到了吧,一个经构造后的sql语句竟有如此可怕的破坏力,相信你看到这后,开始对sql注入有了一个理性的认识了吧~

第一次团队内部比赛总结相关推荐

  1. 腾讯云容器团队内部Istio专题分享

    转载:https://juejin.im/post/5c5408ee6fb9a049f154a160 ServiceMesher 2019年02月01日 阅读 70 腾讯云容器团队内部Istio专题分 ...

  2. 团队协作与团队内部竞争_从个人团队到竞争组织

    团队协作与团队内部竞争 TrustYou is the largest feedback platform in the world. We analyze hundreds of millions ...

  3. 团队协作与团队内部竞争_为什么您的团队可能在协作游戏中失败

    团队协作与团队内部竞争 当我们考虑建立开放结构和建立开放思维方式所需的技能时,协作会立即浮现在脑海. 为了有效地进行协作,沟通(或者更明确的沟通)必须使它们全部正常工作. 交流可以定义为信息从一个空间 ...

  4. 第一次参加DC比赛总结

    第一次参加DC比赛,选择一个不太难的"游戏玩家付费金额预测大赛"进行,虽说看了各种'top 1%'.'top 10%'.'top 5%'等文章,成绩依然还是不理想.总结原因发现还是 ...

  5. 太极团队内部邮件曝光:iOS8完美越狱重大突破

    今晨,盘古越狱团队发布了iOS7.1完美越狱,引起了行业内的广泛关注.而据可靠人士透露的"太极团队"内部高层邮件中,也对"盘古"在iOS 漏洞挖掘领域的坚持给予 ...

  6. [北航软工]第一次团队作业

    第一次团队作业 团队简介 我们小组一共六个人,卓培锦,牛雅哲,张圆宁,韩笑冰,余凯,李天宇 卓培锦 菜鸡后端,六只程序猿的组长 是福建人啊. 一起努力做出一个还不错的项目,那应该还是蛮有趣的一件事情. ...

  7. LSGO软件技术团队内部技术交流【2015-2016(1)第七周】

    LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统:研究方向为数据分析与计算机视觉.成立几年来为学校培养了一批优秀学生,他 ...

  8. LSGO软件技术团队内部技术交流

    LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统:研究方向为数据分析与计算机视觉.成立几年来为学校培养了一批优秀学生,他 ...

  9. 从svn导入多个项目_GIT和SVN相比有哪些优势?如何在团队内部推行GIT?

    相信有不少开发的同学遇到过这些问题: 1.自己正在使用git,想推荐其他人使用git却说不出所以然 2.当有人问"svn很简单很好用,为什么要用复杂的git?"你没法有理有据的说服 ...

最新文章

  1. Cell Reports:中大骆观正+上科大季泉江-CRISPR引导的细菌靶向遗传筛选系统
  2. 每日一皮:996标配工位原来是这样的!
  3. PreparedStatement预编译的sql执行对象
  4. 关于前端设置cookie
  5. execve系统调用_Linux操作系统中的namespace是个什么鬼
  6. Html5带来了什么?
  7. Google之海量数据的交互式分析工具Dremel
  8. 计算机编码,二进制编码数字
  9. 企业微信直播有哪些优势呢?
  10. 计算机科学环境保护,计算机在环保领域中的应用
  11. 机器学习5——决策树
  12. MATLAB计算机器人工作空间【源码】
  13. Duke的咆哮语录②:我求求你们跟我学一下代码“分层”吧!
  14. 离线地图for arcgis tpk
  15. 电主轴编码器测试工具VS sensorikHCU500/DCMU-BOX,海德汉PWM21/PWT101,LENORD+BAUER(L+B)211BSO/211CS04E2M使用对比
  16. 文本标注工具-brat安装
  17. python打开文件,路径存在'\t'被转义
  18. android开发多国语言对照表
  19. 仓央嘉措经典语句分享
  20. ST官网获取并生成常用PCB EDA工具的原理图库和封装库方法

热门文章

  1. android git提交整个项目_使用子模块和子树来管理 Git 项目 | Linux 中国
  2. 【机器学习算法专题(蓄力计划)】十九、机器学习中SVM算法代码实操
  3. Java 100(三)
  4. 深度学习作业(一)手写字体
  5. 直播 | ACL 2021论文解读:低资源语言场景下的跨语言文本摘要
  6. 你写的机器学习代码占多少内存?这件事很重要,但很多人还不懂
  7. 报名啦!阿里云智能客服对话式AI算法大赛之知识图谱构建与问答
  8. 指哪分哪:交互式分割近期发展
  9. 复旦大学肖仰华教授:知识图谱落地的基本原则与最佳实践
  10. 阿里巴巴创新研究计划AIR2018正式发布 邀全球学者共创未来