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可以自动测试两个参数

最新文章

  1. 从零自学Hadoop(22):HBase协处理器
  2. PHPExcel对于Excel中日期和时间类型的处理
  3. Codeforces Round #381 (Div. 2) A B C 水 构造
  4. passing parameters by value is inefficient when the parameters represent large blocks of data
  5. 如何在Asp.net中备份Access数据库?
  6. 18、GPS技术
  7. Android学习笔记(十)BroadcastReceiver初体验
  8. jquery禁用右键、文本选择功能、刷新
  9. MicroPython教程之TPYBoard开发板DIY红外寻迹小车
  10. (NO.00003)iOS游戏简单的机器人投射游戏成形记(十七)
  11. mongodb连接配置实践
  12. canvas里设置width和css里设置width和js里设置width的区别
  13. 03_java基础(二)之jdk的安装与环境变量配置
  14. TabLayout+ViewPager的简单使用
  15. ViewPager源码分析——滑动切换页面处理过程
  16. AForge.NET简介
  17. 在谈PHP中的 抽象类(abstract class)和 接口(interface)
  18. 解决Jquery向页面append新元素之后事件的绑定问题
  19. 【PHP函数】json_decode() ---- 对 JSON 格式的字符串进行解码
  20. iOS: Assertion failure on picker view

热门文章

  1. MyBatis(七):MyBatis缓存详解(一级缓存/二级缓存)
  2. C语言入门--初来乍到
  3. 小白的第一次sql实战
  4. 比Django官方实现更好的分页组件+Bootstrap整合
  5. 如何配置Nginx,实现http访问重定向到https?
  6. ELK查询命令详解总结
  7. 滴水逆向初级-C语言(二)
  8. java面试-CountDownLatch、CyclicBarrier、Semaphore谈谈你的理解
  9. java面试-JVM调优和参数配置,如何查看JVM系统参数默认值
  10. BUAA_OO_第二单元