zoukankan      html  css  js  c++  java
  • 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

     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

  • 相关阅读:
    系统可靠性计算
    jira与readmine区别
    linux下批量替换文件内容
    JMeter学习(十九)JMeter测试MongoDB
    mongoVUE1.5.3 破解方法
    Junit使用GroboUtils进行多线程测试
    JMeter学习(十八)JMeter测试Java(二)
    JMeter学习(十七)JMeter测试Java
    Tomcat 和 Resin 比较,哪个更适合你?
    JMeter学习(十四)JMeter监控Tomcat性能
  • 原文地址:https://www.cnblogs.com/Mrsm1th/p/6842300.html
Copyright © 2011-2022 走看看