初探SQL注入需要知道的5个问题
2024-10-20 16:43:25
SQL注入产生原理
- 可控变量(注入点,就是传参)
- 带入数据库查询
- 变量未存在过滤或过滤不严谨
例子:
获取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可以自动测试两个参数
最新文章
- 从零自学Hadoop(22):HBase协处理器
- PHPExcel对于Excel中日期和时间类型的处理
- Codeforces Round #381 (Div. 2) A B C 水 构造
- passing parameters by value is inefficient when the parameters represent large blocks of data
- 如何在Asp.net中备份Access数据库?
- 18、GPS技术
- Android学习笔记(十)BroadcastReceiver初体验
- jquery禁用右键、文本选择功能、刷新
- MicroPython教程之TPYBoard开发板DIY红外寻迹小车
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(十七)
- mongodb连接配置实践
- canvas里设置width和css里设置width和js里设置width的区别
- 03_java基础(二)之jdk的安装与环境变量配置
- TabLayout+ViewPager的简单使用
- ViewPager源码分析——滑动切换页面处理过程
- AForge.NET简介
- 在谈PHP中的 抽象类(abstract class)和 接口(interface)
- 解决Jquery向页面append新元素之后事件的绑定问题
- 【PHP函数】json_decode() ---- 对 JSON 格式的字符串进行解码
- iOS: Assertion failure on picker view