0x01 前言

今天看到师傅们发的一篇文章,感觉mysql注入还能这么用,于是自己搭建了一个简单的环境,进行复现.

0x02原理

首先介绍两个mysql函数 hex和conv

conv(N,from_base,to_base) conv函数接收一个数字,进行进制转换

如上图就是将25从16进制转化成10进制,我们复原的结果同样也证实了这样的猜想

hex(str) 将str转化成16进制
unhex 复原

所以我们可以通过语句将字符串转换成数字   先将test转换成16进制,再转换成10进制

由于Mysql的特性 导致输入的字符串的最大长度为8个字节,超过会导致不能成功解码

这时候我们可以用substr来截取

0x03 复现

demo1

 <?php
$id= $_GET['x'];
$conn = mysql_connect('127.0.0.1','root','root');
mysql_select_db('flag',$conn);
$sql = "select name from flag where id=$id";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
echo $row['name'];
}
mysql_close($conn);
echo "<hr>";
echo $sql
?>

一个简单的sql注入

自己在本地编写好payload代码

成功利用

demo2 update注入中关闭显错

首先介绍一篇文章 利用insert,update和delete注入获取数据

 <meta charset="utf-8"/>
<?php
$conn = mysql_connect("localhost","root","root")or die("error".mysql_error());
$db = mysql_select_db("test");
mysql_query("set name utf8");
$id = @$_GET['id'];
$username = @$_GET['username'];
$sql1 = "update users set username='$username' where id ='$id'";
$sql2 = "select * from users where id = '$id'";
mysql_query($sql1);
if($result = mysql_query($sql2)){
$row = mysql_fetch_array($result);
echo "ID".$id."的用户变为".$row['username'];
mysql_close();
}
else{
var_dump(mysql_error());
}
?>

在mysql开启报错的时候,可以使用几种报错函数得到结果 payload之一

:?id=1&username=wakakaka' or extractvalue(1,concat(0x7e,database())) or'

就可以得到数据。

如果开启了报错可以用conv hex来得到数据

Mysql注入博大精深,以后还有很多姿势需要学习

参考 mysql绕过新思路

   在Update的注入中如果关闭了显错该怎么办

感谢作者提供的思路

转载需注明原文地址 http://www.cnblogs.com/Mrsm1th/p/6842300.html

mysql注入新姿势(数字与字符编码注入) hex,conv的更多相关文章

  1. mysql的严格模式与无效字符编码问题

    问题一般格式为: 1366 Incorrect string value: '' for column 1300 Invalid utf8 character string: '' 向mysql插入中 ...

  2. DLL注入新姿势:反射式DLL注入研究

    在分析koadic渗透利器时,发现它有一个注入模块,其DLL注入实现方式和一般的注入方式不一样.搜索了一下发现是由HarmanySecurity的Stephen Fewer提出的ReflectiveD ...

  3. 【Mysql sql inject】POST方法BASE64编码注入write-up

      翻到群里的小伙伴发出一道POST型SQL注入题,简单抓包判断出题目需要base64编码后才执行sql语句,为学习下SQL注入出题与闯关的思路+工作不是很忙,所以花点时间玩了一下,哈哈哈哈哈哈哈哈哈 ...

  4. mysql5.6修改字符编码,ERR:Illegal mix of collations for operation 'concat'

    mysql5.6修改字符编码,ERR:Illegal mix of collations for operation 'concat' 1.问题起因:搭建环境初始化mysql的时候看到mysql配置文 ...

  5. JAVA之旅(三十)——打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码

    JAVA之旅(三十)--打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码 三十篇了,又是一个 ...

  6. Python中的数据类型、变量、字符编码、输入输出、注释

    数据类型 number(数字) 用于存储类型,通常分为int.long.float.complex: int:32位机器上占32位,取值范围为-231 ~ 231 - 1:64位机器上占64位,取值范 ...

  7. python字符编码与文件操作

    目录 字符编码 字符编码是什么 字符编码的发展史 字符编码实际应用 编码与解码 乱码问题 python解释器层面 文件操作 文件操作简介 文件的内置方法 文件的读写模式 文件的操作模式 作业 答案 第 ...

  8. 浅析白盒审计中的字符编码及SQL注入

    尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如g ...

  9. Sql注入的分类:数字型+字符型

    Sql注入: 就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.通过构造恶意的输入,使数据库执行恶意命令,造成数据泄露或者修改内容等,以 ...

随机推荐

  1. Python面向对象-访问权限public和private

    上一节我们介绍了,Class内部可以有属性和方法,外部代码通过直接调用实例的方法来操作数据,这样就可以隐藏内部的逻辑实现:同时,外部代码还是可以自由的修改实例的属性和增加方法. 但是有时候,我们不想这 ...

  2. 3. abp依赖注入的分析.md

    abp依赖注入的原理剖析 请先移步参考 [Abp vNext 源码分析] - 3. 依赖注入与拦截器 本文此篇文章的补充和完善. abp的依赖注入最后是通过IConventionalRegister接 ...

  3. ES6 学习之 let

    关于闭包: <html> <body> <div> <div> <button >aaa</button> <button ...

  4. easybcd误删Win10启动项,UEFI恢复引导

    参考文章https://blog.csdn.net/A_Sen_A/article/details/89545311 想给电脑安Ubuntu双系统,期间根据一些不靠谱的文章用了easybcd软件,Ub ...

  5. DataGridView使用BindingNavigator实现简单分页功能

    接上一篇<DataGridView使用自定义控件实现简单分页功能>,本篇使用BindingNavigator来实现简单分页功能.其实也只是借用了一个BindingNavigator空壳, ...

  6. markdown简单使用

    Markdown介绍: ​ Markdown是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档.使用Markdown编写的文档可以导出为HTML.Word.图像.PDF等多种格式的文档. ...

  7. ES6面向对象 动态添加标签页

    HTML <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml&quo ...

  8. 构建Electron的常见问题(Mac)

    背景 起因是产品的需求,需要更换Electron为底层平台,但因为会有不少定制化的功能要实现,必须自己实现此类内容,所以也就导致必须自己编译Electron的源代码. 整个构建过程,看Electron ...

  9. CSS雪碧图(精灵图)使用

    1:CSS雪碧图:CSS雪碧图 即 CSS Sprites,也有人叫它CSS精灵图. 2:雪碧图的由来:一个网站的页面需要大量的小图片或者小图标,但是大量的图片如果放在服务器上,每次当打开网站并且向服 ...

  10. MVC 控制台 +log4net 存入数据库

    首先在你的项目 安装好 log4net包 如下图进入AssemblyInfo.cs类 代码里面 加上这一串 [assembly: log4net.Config.XmlConfigurator(Conf ...