mysql注入新姿势(数字与字符编码注入) hex,conv

本文深入探讨MySQL注入的原理,包括hex和conv函数的应用,通过具体案例演示如何利用这些技术进行数据提取。同时,文章提供了两种不同的注入场景,展示了在不同条件下如何有效利用SQL注入漏洞。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
 1 <?php
 2 $id= $_GET['x'];
 3 $conn = mysql_connect('127.0.0.1','root','root'); 
 4 mysql_select_db('flag',$conn);
 5 $sql = "select name from flag where id=$id";
 6 $result = mysql_query($sql);
 7 while($row = mysql_fetch_array($result)){     
 8     echo $row['name'];
 9 }  
10 mysql_close($conn);
11 echo "<hr>";   
12 echo $sql
13 ?>

一个简单的sql注入

 

自己在本地编写好payload代码

成功利用 

demo2 update注入中关闭显错

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

 1 <meta charset="utf-8"/>
 2 <?php
 3 $conn = mysql_connect("localhost","root","root")or die("error".mysql_error());
 4 $db = mysql_select_db("test");
 5 mysql_query("set name utf8");
 6 $id = @$_GET['id'];
 7 $username = @$_GET['username'];
 8 $sql1 = "update users set username='$username' where id ='$id'";
 9 $sql2 = "select * from users where id = '$id'";
10 mysql_query($sql1);
11 if($result = mysql_query($sql2)){
12     $row = mysql_fetch_array($result);
13     echo "ID".$id."的用户变为".$row['username'];
14     mysql_close();
15 }
16 else{
17     var_dump(mysql_error());
18 }
19 ?>

 

在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

转载于:https://www.cnblogs.com/Mrsm1th/p/6842300.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值