MYSQL8.0注入新特征

【之前看到过一些】文章,然则没复现,最近在嘶吼CTF碰着问题了,以是纪录一下

0x01 环境设置

泛起了两个新的关键字table和values,原本想用phpstudy《搭建的》,然则这两个泛起在8.0.19「之后」..phpstudy只有8.0.12

选择使用docker搭建

docker pull mysql:8.0.22
docker run -itd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.22

sql注入的靶场用sqli-lab

https://github.com/c0ny1/vulstudy

根据文档搭建好,进入容器修改sqli-lab《的设置文件》,/app/sql-connections/db-creds.inc

数据库的IP填宿主机的就可以,通过ifconfig〖查看容器〗IP(地址)

好比容器IP为:172.18.0.2,一般来说宿主机为172.18.0.1

重新设置数据库 ,会报错,“由”于mysql8.0默认认证方式和5不一样,通过下面语句修改即可

ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY '123456';

【再次设置数据库】,环境搭建完成

0x02 table

《先看一下官方文档》

htt ps://dev.mysql.com/doc/refman/8.0/en/table.html

TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]

官方文档形貌和TABLE和SELECT〖有类似的功效〗

电银付免费激活码(dianyinzhifu.com):MYSQL8.0‘注入’新特征 安全技术 WEB安全 第1张

可以列出 表[的详细内容

0x03 values

https://dev.mysql.com/doc/refman/8.0/en/values.html

VALUES row_constructor_list [ORDER BY column_designator] [LIMIT BY number]

row_constructor_list:
    ROW(value_list)[, ROW(value_list)][, ...]

value_list:
    value[, value][, ...]

column_designator:
    column_index

values可以组织一个 表[

电银付免费激活码(dianyinzhifu.com):MYSQL8.0‘注入’新特征 安全技术 WEB安全 第2张

values可以接在union后面,可以判断列数

select * from users where id = 1 union values row(1,2,3)

电银付免费激活码(dianyinzhifu.com):MYSQL8.0‘注入’新特征 安全技术 WEB安全 第3张

若是列数纰谬会报错

0x04 靶机测试

修改Less-1的代码,过滤select

<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);
// take the variables 
if(isset($_GET['id']))
{
$id=$_GET['id'];
//logging the connection parameters to a file for  *** ysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);

// connectivity 
function blacklist($id)
{
    $id= preg_replace('/select/i',"", $id);

    return $id;
}

$id = blacklist($id);

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

    if($row)
    {
    echo "<font size='5' color= ',99FF00'>";
    echo 'Your Login name:'. $row['username'];
    echo "<br>";
    echo 'Your Password:' .$row['password'];
    echo "</font>";
    }
    else 
    {
    echo '<font color= ",FFFF00">';
    print_r(mysql_error());
    echo "</font>";  
    }
}
    else { echo "Please input the ID as parameter with numeric value";}

?>
</font> </div></br></br></br><center>
<img src="../images/Less-1.jpg" /></center>
</body>
</html>

《首先用》order by判断列数

‘然后使用’values判断回显的位置

http://192.168.163.130/Less-1/?id=-1' union values row(1,2,3)--+

电银付免费激活码(dianyinzhifu.com):MYSQL8.0‘注入’新特征 安全技术 WEB安全 第4张

然后就是通例的需要知道库名, 表[名,字段名

,

usdt币游_ALLbet6.com

欢迎进入usdt币游网址(Allbet Gaming):www.aLLbetgame.us,欧博allbet网址开放欧博allbet网址、会员注册、 *** 开户、电脑客户端下载、苹果安卓下载等业务。

,

当前库可以通过布尔盲注{获得}

1&&substr((database()),1,1)='c'

{其余库}名可以通过盲注{获得}

table information_schema.schemata       ,列出所有数据库名

“由”于table不能像select控制列数,除非列数一样的 表[, 否则都回显不出[来,〖也需要使用盲注〗

1&&('def','m','',4,5,6)<(table information_schema.schemata limit 1);

后面的语句是从左到右判断的,第一列判断准确再判断‘第二列’

“由”于schemata 表[中的第一列是def,不需要判断,以是可以直接判断库名

内里的字符也是单个判断的,好比库为mysql

m < mysql
my < mysql
azzzz < mysql

以上判断都是准确的,预测是根据ascii码巨细对照的,『最后』一个就对照坑,若是前一个字符判断不准确,后面的字符都市不准确,以是前面的判断一定要准确

注重判断的时刻后一个列名一定要用字符示意,不能用数字,否则判断到前一个『最后』一个字符会判断不出

('def','mysql',3,4,5,6)<(table information_schema.schemata limit 1);    ,判断错误
('def','mysql','',4,5,6)<(table information_schema.schemata limit 1);   ,判断准确

{获得}当前库名为security,接下来判断 表[名

('def','security','','',5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21)<(table information_schema.tables limit 325,1);

前两个字段都是确定的,可以写一个for循环判断,若是效果为真,代 表[从那行更先,然后盲注第三个列

{获得}所有 表[明后更先判断字段名,找到columns 表[,详细方法和上面一样

('def','security','users','','',6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)<(table information_schema.columns limit 3415,1);

《『最后』注入出数》据

(1,'','') < (table users limit 1);

【这里有】个坑点,若是没有{获得}数据类型的话照样需要猜的,好比ID为1,前面就不能写成'1'

然后一直往下注入数据〖就行了〗

0x05 简朴剧本

试着写了个剧本,照样泛起了一些问题

字符 表[更好根据ascii码 表[的顺序来写,然则又不能所有根据ascii 表[,“由”于内里有些字符也会使数据库报错

匹配 表[名时不能准确的匹配到 表[名在tables中的行数,好比两个 表[一个为sys一个为security

y>s,以是在匹配security『的时刻也』会匹配到sys的行数,照样需要靠履历判断了

电银付免费激活码(dianyinzhifu.com):MYSQL8.0‘注入’新特征 安全技术 WEB安全 第5张

“由”于sys时系统 表[以是行数肯定是在security上面的,这里可以得知security从322行更先到325行竣事

列 表[名同样会泛起这个问题,也是需要猜

电银付免费激活码(dianyinzhifu.com):MYSQL8.0‘注入’新特征 安全技术 WEB安全 第6张

想了想剧本照样不贴出来了,自己都看不下去了实在太僵硬了,到『最后』注入数据的时刻写的还有点问题就不拿出来丢人现眼了

『最后』,关于这些 表[名字段名啥的应该还有些操作空间,mysql<版本>越高可以查询数据库 表[字段的 表[也越来越{多}了,可以根据需求选择用什么 表[查询

https://www.cnblogs.com/20175211lyz/p/12358725.html

详细哪些 表[可以这篇文章内里写的很全


USDT官网接口声明:该文看法仅代表作者自己,与本平台无关。转载请注明:电银付免费激活码(dianyinzhifu.com):MYSQL8.0‘注入’新特征
发布评论

分享到:

usdt无需实名(www.caibao.it):当初嫌吴君如丑而分手的杜德伟现在怎样了
4 条回复
  1. 皇冠足球
    皇冠足球
    (2020-12-27 00:07:37) 1#

    欧博app下载www.allbetgame.us欢迎进入欧博app下载网站,欧博app下载网站是欧博官方网站。欧博app下载网站开放欧博注册、欧博代理、欧博电脑客户端、欧博app下载等业务。啊,我又又又来啦

    1. 下载欧博真人客户端
      下载欧博真人客户端
      (2020-12-31 05:46:32)     

        今日,海内鲜活农产物批发市场重点监测的46个品种中,与昨天相比价钱升幅前五名的是平菇、西葫芦、蒜苔、白鲢鱼和大蒜。幅度分别为5.2%、3.7%、3.5%、3.5%和3.3%;价钱降幅前五名的是鸭梨、生姜、油菜、莴笋和南瓜,幅度分别为7.3%、2.4%、0.8%、0.6%和0.5%。天堂啊

      1. 欧博在线官网
        欧博在线官网
        (2021-01-15 02:24:44)     

        诚信在线(现:阳光在线官网)现已开放诚信在线手机版、诚信在线电脑客户端下载。诚信在线娱乐游戏公平、公开、公正,用实力赢取信誉。这个还行吧,比有的强

      2. allbet登陆网址
        allbet登陆网址
        (2021-02-10 19:02:43)     

        欧博网址开户www.allbet6.com欢迎进入欧博网址(Allbet Gaming),欧博网址开放会员注册、代理开户、电脑客户端下载、苹果安卓下载等业务。还写吗

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。