日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DVWA Command Injection 练习总结

發(fā)布時間:2025/3/8 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DVWA Command Injection 练习总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

low:

首先查看源碼沒有對字符進(jìn)行任何過濾

target參數(shù)為將要ping的ip地址,比如在輸入框輸入127.0.0.1后,對于windows系統(tǒng),會發(fā)出ping 127.0.0.1操作。

這里可以引入命令行的幾種操作方式:

A && B: 先執(zhí)行A,如果成功,執(zhí)行B;

A || B :先執(zhí)行A,如果失敗,執(zhí)行B;

A | B:管道,先執(zhí)行A后,將A的結(jié)果作為B的輸入,打印的是B的結(jié)果;

A & B:先執(zhí)行A,然后不管成功與否,執(zhí)行B;

意味著我們可以通過輸入 【ip】+【連接字符】+ 【命令】 的格式進(jìn)行命令注入

medium


可以看到增加了黑名單
但是還有 || ,& 等命令可以使用

high


可以看到high完善了這個黑名單
但是仔細(xì)看還是能發(fā)現(xiàn) , | 符號的后面多加了一個空格
意味著我們?nèi)匀荒苁褂?| 符號加命令繼續(xù)命令注入

impossible

<?phpif( isset( $_POST[ 'Submit' ] ) ) {// Check Anti-CSRF tokencheckToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// Get input$target = $_REQUEST[ 'ip' ];$target = stripslashes( $target );// Split the IP into 4 octects$octet = explode( ".", $target );// Check IF each octet is an integerif( ( is_numeric( $octet[0] ) ) && ( is_numeric( $octet[1] ) ) && ( is_numeric( $octet[2] ) ) && ( is_numeric( $octet[3] ) ) && ( sizeof( $octet ) == 4 ) ) {// If all 4 octets are int's put the IP back together.$target = $octet[0] . '.' . $octet[1] . '.' . $octet[2] . '.' . $octet[3];// Determine OS and execute the ping command.if( stristr( php_uname( 's' ), 'Windows NT' ) ) {// Windows$cmd = shell_exec( 'ping ' . $target );}else {// *nix$cmd = shell_exec( 'ping -c 4 ' . $target );}// Feedback for the end userecho "<pre>{$cmd}</pre>";}else {// Ops. Let the user name theres a mistakeecho '<pre>ERROR: You have entered an invalid IP.</pre>';} }// Generate Anti-CSRF token generateSessionToken();?>

相關(guān)函數(shù)介紹

stripslashes(string) : 該函數(shù)會刪除字符串string中的反斜杠,返回已剝離反斜杠的字符串。

explode(separator,string,limit): 該函數(shù)把字符串打散為數(shù)組,返回字符串的數(shù)組。參數(shù)separator規(guī)定在哪里分割字符串,參數(shù)string是要分割的字符串,可選參數(shù)limit規(guī)定所返回的數(shù)組元素的數(shù)目。

is_numeric(string): 該檢測string是否為數(shù)字或數(shù)字字符串,如果是返回TRUE,否則返回FALSE。

可以看到,Impossible級別的代碼加入了Anti-CSRF token,同時對參數(shù)ip進(jìn)行了嚴(yán)格的限制,只有諸如“數(shù)字.數(shù)字.數(shù)字.數(shù)字”的輸入才會被接收執(zhí)行,因此不存在命令注入漏洞。

一波強(qiáng)行總結(jié)

不僅要學(xué)會攻擊,更要學(xué)會防御
對命令處理要盡可能過濾
盡可能完善黑名單,但是黑名單的方式總會有紕漏和繞夠
可以用函數(shù)限制所輸入的格式,例如限制為只有數(shù)字,或者本題中【數(shù)字】.【數(shù)字】.【數(shù)字】

總結(jié)

以上是生活随笔為你收集整理的DVWA Command Injection 练习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。