mysql注入新姿势(数字与字符编码注入) hex,conv
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绕过新思路
感谢作者提供的思路
转载需注明原文地址 http://www.cnblogs.com/Mrsm1th/p/6842300.html
mysql注入新姿势(数字与字符编码注入) hex,conv的更多相关文章
- mysql的严格模式与无效字符编码问题
问题一般格式为: 1366 Incorrect string value: '' for column 1300 Invalid utf8 character string: '' 向mysql插入中 ...
- DLL注入新姿势:反射式DLL注入研究
在分析koadic渗透利器时,发现它有一个注入模块,其DLL注入实现方式和一般的注入方式不一样.搜索了一下发现是由HarmanySecurity的Stephen Fewer提出的ReflectiveD ...
- 【Mysql sql inject】POST方法BASE64编码注入write-up
翻到群里的小伙伴发出一道POST型SQL注入题,简单抓包判断出题目需要base64编码后才执行sql语句,为学习下SQL注入出题与闯关的思路+工作不是很忙,所以花点时间玩了一下,哈哈哈哈哈哈哈哈哈 ...
- mysql5.6修改字符编码,ERR:Illegal mix of collations for operation 'concat'
mysql5.6修改字符编码,ERR:Illegal mix of collations for operation 'concat' 1.问题起因:搭建环境初始化mysql的时候看到mysql配置文 ...
- JAVA之旅(三十)——打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码
JAVA之旅(三十)--打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码 三十篇了,又是一个 ...
- Python中的数据类型、变量、字符编码、输入输出、注释
数据类型 number(数字) 用于存储类型,通常分为int.long.float.complex: int:32位机器上占32位,取值范围为-231 ~ 231 - 1:64位机器上占64位,取值范 ...
- python字符编码与文件操作
目录 字符编码 字符编码是什么 字符编码的发展史 字符编码实际应用 编码与解码 乱码问题 python解释器层面 文件操作 文件操作简介 文件的内置方法 文件的读写模式 文件的操作模式 作业 答案 第 ...
- 浅析白盒审计中的字符编码及SQL注入
尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如g ...
- Sql注入的分类:数字型+字符型
Sql注入: 就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.通过构造恶意的输入,使数据库执行恶意命令,造成数据泄露或者修改内容等,以 ...
随机推荐
- 百度大脑EdgeBoard计算卡基于Resnet50/Mobile-SSD模型的性能评测
ResNet模型 前言在上一次的测试中,我们从头开始训练了一个三个卷积层串联一个全连接层的输出,作为猫狗分类的预测的模型,这次我们自己训练一个ResNet模型,并在以下三个环境中进行性能的对比 AIS ...
- 4.Redux学习4----react-redux
react-redux是配合redux一起使用的,其中核心组件是Provider Provider是store的提供器,用Provider则store就无需直接引入组件内,而且还可以将一个store公 ...
- ReactNative: 使用AsyncStorage异步存储类
一.简介 AsyncStorage是一个简单的具有异步特性可持久化的键值对key-value的存储系统.它对整个APP而言,是一个全局的存储空间,可以用来替代H5中提供的window属性LocalSt ...
- python3内置函数回忆
1.数学运算类 # 1.数学运算类 # abs:计算绝对值 print(abs(-23)) # divmod,返回一个tuple,第一个值为商,第二个值为余数 print(divmod(10,4)) ...
- TensorFlow实现图像卷积并可视化示例
图片尺寸要自己修改. 看起来好像没啥意思,不知道下一步能干什么,先卷了再说.由于weights是随机生成的(tf.random_normal作用:用于从服从指定正太分布的数值中取出随机数),所以每次卷 ...
- Penetration testing“Linux install Nessus”
Ax_Download www.tenable.com/products/nessus-home,need sent email. Bx_Install su ls dpkg -i [filename ...
- Dijkstra.NET 库体验报告
在VS里用Nuget下载"Dijkstra.NET"库,然后就可以在需要的地方使用了. 首先,这是一个简单的graph,5个节点,7条边. 上代码 移动端看不清楚的可以看下面的: ...
- 打通 DevOps 任督二脉 ,CODING 2.0 制品库全新上线
CODING 在近期的 KubeCon 2019 大会上发布了 CODING 2.0,同时发布了最新功能--制品库.CODING 不断完善 DevOps 工具链,旨在持续提升研发组织软件交付的速度与质 ...
- SQL Server 之事务执行,让语句在事务中执行
BEGIN TRAN BEGIN TRY DELETE FROM dbo.表 INSERT INTO dbo.表( Id, 字段....) SELECTId,字段... F ...
- log file sync等待超高案例浅析
监控工具DPA发现海外一台Oracle数据库服务器DB Commit Time指标告警,超过红色告警线(40毫秒左右,黄色告警是10毫秒,红色告警线是20毫秒),如下截图所示,生成了对应的时段的AWR ...