天天看点

基于HTTP头部的注入

常见的sql注入一般都是通过表单或请求参数进行注入,但这里给出的例子是通过HTTP协议头部进行注入。

例如一个的请求如下:

这里看起来都很正常,但仔细看HTTP协议的User-Agent头部为“Mozilla/5.0’(select*from(select(sleep(20)))a) #”。其中“select * from (select(sleep(20)))”是不正常的,可能是攻击者正在注入攻击。

这里的攻击主要是让数据库什么也不干而睡眠20秒,从而浪费数据库处理线程。这是一个简单的注入,除此之外还能进行更多复杂的攻击。

一般获取头部的信息用于数据分析,例如这里获取User-Agent就可以知道客户都是通过什么浏览器访问系统的。jsp中直接通过<code>request.getHeader("User-Agent")</code>就可以获取到该值,接着可能就直接保存到数据库了,Mozilla/5.0’(select*from(select(sleep(20)))a) #中的#号在数据库中作为注释符号,它产生的sql可能如下:

<code>INSERT INTO visits (useragent, datetime) VALUES ('Mozilla/5.0', (select*from(select(sleep(20)))a)) #', '2016-06-13 13:00:06')</code>

这时#号后面都被注释掉了,于是数据库睡眠了20秒。

========广告时间========

<a href="http://blog.csdn.net/wangyangzhizhou/article/details/74080321">为什么写《Tomcat内核设计剖析》</a>

=========================

欢迎关注:

基于HTTP头部的注入
下一篇: 注解的原理