Less-38
基於錯誤_GET_單引號_字符型_堆疊注入
這裏有修改系統變量的幾種方法,可以考慮注入時涉及文件操作時先修改權限。
如果遇到Mysql loadfile 不成功,請看Less-7進行解決
注入過程
mysqli_multi_query() 函數執行一個或多個針對數據庫的查詢。多個查詢用分號進行分隔。(有這個才能進行堆疊)
分號我們可以加入注入的新的語句
堆疊注入需要依靠前文所寫的各種注入方式來獲取數據庫的信息,在這裏只演示如何插入新的數據。
?id=1';insert into users(id,username,password) values(38,'less38','hello')--+
再看數據表中的內容:可以看到 less38 已經添加。
順便看下核心源碼吧:
一、mysql與mysqli的概念相關:
1、mysql與mysqli都是php方面的函數集,與mysql數據庫關聯不大。
2、在php5版本之前,一般是用php的mysql函數去驅動mysql數據庫的,比如mysql_query()的函數,屬於面向過程3、在php5版本以後,增加了mysqli的函數功能,某種意義上講,它是mysql系統函數的增強版,更穩定更高效更安全,與mysql_query()對應的有mysqli_query(),屬於面向對象,用對象的方式操作驅動mysql數據庫。mysqli有兩種方式:一種是面對對象的,一種是面向過程的。
二、mysql與mysqli的區別:
1、mysql是非持繼連接函數,mysql每次鏈接都會打開一個連接的進程。
2、mysqli是永遠連接函數,mysqli多次運行mysqli將使用同一連接進程,從而減少了服務器的開銷。mysqli封裝了諸如事務等一些高級操作,同時封裝了DB操作過程中的很多可用的方法。
mysqli的使用:
1.mysqli的面向過程的使用:$conn = mysqli_connect('localhost', 'root', '123', 'db_test') or ('error'); $sql = "select * from db_table"; $query = mysqli_query($conn,$sql); while($row = mysqli_fetch_array($query)){ echo $row['title']; }
2.mysqli的面向對象的使用:
$conn = new mysqli('localhost', 'root', '123', 'db_test'); $sql = "select * from db_table"; $query = $conn->query($sql); while($row = $query->fetch_array()){ echo $row['title']; }
代碼裏面涉及到了很多mysql函數,需要自行學習解決。