基于HTTP头部的注入
2016-06-13 13:06
471 查看
基于HTTP头部的注入
常见的sql注入一般都是通过表单或请求参数进行注入,但这里给出的例子是通过HTTP协议头部进行注入。例如一个的请求如下:
GET / HTTP/1.1 Host: www.example.com Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0'(select*from(select(sleep(20)))a) # Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US,en;q=0.8,fr;q=0.6
这里看起来都很正常,但仔细看HTTP协议的User-Agent头部为“Mozilla/5.0’(select*from(select(sleep(20)))a) #”。其中“select * from (select(sleep(20)))”是不正常的,可能是攻击者正在注入攻击。
这里的攻击主要是让数据库什么也不干而睡眠20秒,从而浪费数据库处理线程。这是一个简单的注入,除此之外还能进行更多复杂的攻击。
一般获取头部的信息用于数据分析,例如这里获取User-Agent就可以知道客户都是通过什么浏览器访问系统的。jsp中直接通过
request.getHeader("User-Agent")就可以获取到该值,接着可能就直接保存到数据库了,Mozilla/5.0’(select*from(select(sleep(20)))a) #中的#号在数据库中作为注释符号,它产生的sql可能如下:
INSERT INTO visits (useragent, datetime) VALUES ('Mozilla/5.0', (select*from(select(sleep(20)))a)) #', '2016-06-13 13:00:06')
这时#号后面都被注释掉了,于是数据库睡眠了20秒。
相关文章推荐
- 社交网络:有意义的不仅是邓巴数
- hjr-TCP,UDP,http,FTP,TCP/IP
- NSURLSession的使用
- 应用层的 TCP/UDP 协议,和 HTTP、FTP、SMTP 等区别?
- 网络、社会、社交
- 虚拟机网络连接的三种模式
- 【51CTO学院三周年】这一年在学院的收获
- Android通过HttpURLConnection与HttpClient联网代理网关设置
- Picasso网络图片加载框架的使用
- 五TCP窗口与拥塞处理
- 一般网络架构和工作遇到代理问题架构想象图
- 四-网络性能排查之TCP重传与重复ACK
- 三应用Wireshark观察基本网络协议
- cas取消HTTPS协议
- Http协议详解
- ICMP控制报文协议
- iOS开发网络篇—数据缓存
- 【Angular2】http模块
- HttpURLConnection请求数据
- 神经网络概述