常见的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>
=========================
欢迎关注:
