初探SQL注入需要知道的5个问题

SQL注入产生原理

  1. 可控变量(注入点,就是传参)
  2. 带入数据库查询
  3. 变量未存在过滤或过滤不严谨

例子:

获取admin表的pass里面的数据

select * from users where id=1 union select 1,pass,3,4 from admin  //正常执行的SQL查询命令

http://127.0.0.1:8080/test.php?x=1 union select 1,pass,3,4 from admin  //有注入点的SQL注入示例
http://127.0.0.1:8080/test.php?x=  //注入点,可控变量

 

修改URL地址上的参数值,就等于修改对应执行的SQL语句(利用自定义的SQL语句达到查询指定数据)

 

SQL注入的危害?

数据库数据泄露,文件操作,数据读取等

数据泄露可导致后台权限,后台权限导致网站权限,网站权限导致服务器权限。。。。。。

 

SQL注入发现及利用方式

由于SQL注入属于WEB应用层,发现的话可以采用web扫描器或手工检测,利用的话也是分为工具及手工(相互配合使用,工具不一定万能),常用工具Sqlmap。

 

SQL注入的攻击方式的影响因素

  • 数据库类型

    不同数据库类型导致不同攻击方式
    access
    mysql
    mssql
    Oracle
    postSQL等

  • 提交方式

    参数传递的提交方式不同类型导致不同攻击方式
    get
    post
    HTTP
    全局提交
    cookie等

  • 参数类型

    参数的数据类型导致不同攻击方式
    数字
    字符
    搜索

  • 绕过注入

    waf防护
    代码防护
    函数防护
    其他防护

  • SQL查询类型

    select
    insert
    update
    delete等

  • 盲注或复杂注入

    各类复杂的注入问题
    延时注入
    二次注入
    逻辑注入等

 

SQL注入环境搭建常见问题

初学者建议搭建sqli-labs靶场学习

如果出现搭建错误:mysql_connet()函数版本不兼容,解决方法:

1.降低PHP版本

2.修改代码中的mysql连接函数

 

注意经常遇到的问题:

www.xxx.com/php?page=1&id=5   该注入点如果用以前过时的注入工具对这个地址注入时,很可能只在后面加上判断语句:

www.xxx.com/php?page=1&id=5 and 1=1

这就造成了,只测试到id参数,而前面的page参数测试不到,所以我们要把id和page参数位置调换一下:

www.xxx.com/php?id=5&page=1 and 1=1

这样才行,使用sqlmap可以自动测试两个参数

 

初探SQL注入需要知道的5个问题

上一篇:东芝宣布时域神经网络技术:要让低功率物联网设备也能深度学习


下一篇:Netty如何解决TCP的粘包半包问题?(下)