sql注入

概念和原因

比如在登录输入框内输入“delete from xx”,点击提交就会删掉xx表。

windows环境发现注入点

使用sqlmap工具检测注入点是否存在

安装python(安装sqlmap之前)

下载地址:https://www.python.org/downloads/,选择2.7的python版本下载。
安装注意:
1.安装路径一般默认是C:\Python27,可以修改,但是请记住。
2.将“Add python.exe to Path"项勾选,勾选后安装完成不再需要单独添加环境变量,默认是“去勾选”的。如果忘记勾选了,可以重新安装或者手动添加C:\Python27到环境变量(不懂可以搜素环境变量的安装)。
3.设置python到环境变量之后,重启系统,查看是否生效,“Win+R”,输入cmd,然后输入python,出现python版本等信息,证明安装python成功。

安装sqlmap

下载地址:http://sqlmap.org/
安装注意:
1.将下载的SQLMAP安装包解压到文件夹sqlmap中,并拷贝到 "C:\Python27" 目录下;
2.“Win+R”,输入cmd,cd到刚刚的sqlmap文件夹,输入sqlmap.py -h,出现sqlmap帮助信息,证明安装成功了

sqlmap脱裤过程

“Win+R”,输入cmd,cd到刚刚的sqlmap文件夹,
例子一:
输入:sqlmap.py -u http://local.plat.twyyx.com/product/detail?id=9786 --dbs
结果:爆出所有的数据库名称
例子二:
输入:-u "要查的url" --tables -D "要看database"
结果:爆出要查询数据库的所有表
例子三:
输入:sqlmap.py -u http://local.plat.twyyx.com/product/detail?id=9786 --password
结果:爆出所有的数据库用户和密码
具体更多功能可网上查找,对于需要登录的注入点,可使用cookie参数

解决方法

1.单请求过滤用户输入
如果知道这个输入值是int的,可以使用类型转化成对应的类型

2.全局过滤用户输入

function isExistSqlInject($inject_value) {
    $is_exist_sql_inject = false;
  // 注入关键字
    $inject_keyword = "'|and|exec|union|create|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|xp_|or|--|+";
    $inject_value = strtolower($inject_value);
    $inject_keyword_arr = explode('|', $inject_keyword);
    foreach($inject_keyword_arr as $inject_keyword_one) {
        if (strpos($inject_keyword_one, $inject_value) >= 0) {
            $is_exist_sql_inject = true;
            break;
        }
    }

    return $is_exist_sql_inject; 
}

过滤值可补充,不建议使用此方法

3.使用pdo的参数绑定
一般的php框架都会使用pdo参数绑定,前提是要使用数组的方式传参

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前提 sqlmap是基于python2.x进行开发的,所以要使用sqlmap请先安装python2,建议安装pyt...
    keitwo阅读 9,422评论 0 2
  • 1.非盲注(页面显示查询结果): 通过burpsuite抓包,获取到post形式请求的id参数有漏洞,并直接用“o...
    夏夜星语阅读 8,519评论 0 1
  • SQL注入 概念 危害 原理 实例 防御 基础 - ### SQL语句所用符号不同数据库的sql注入与提权常见S...
    yddchsc君阅读 5,174评论 1 10
  • 以下内容来自《白帽子讲web安全》一书 Step 查找注入点 输入单引号',如果Web服务器开启了错误回显,那定是...
    creepycool阅读 3,926评论 0 0
  • 1.SQL InjectionSQL注入) 使用工具:sqlmap 前提条件:安装pythonget接口命令:p...
    James黄杰阅读 3,085评论 0 1