你在攻擊受害者的電腦時即使你擁有了一個shell,依然可能會有一些拒絕執行指令的限制。
為了獲得目標主機的完整控制權限,你需要在未授權的地方繞過權限控制。
這些權限可以刪除文件,瀏覽私人信息,或者安裝并非受害者希望的軟件例如計算機病毒。
Metasploit 擁有各種使用不同技術的exploits在受害者電腦上嘗試獲取系統級權限。
除此之外,這里還有一些在linux下使用的腳本。當你嘗試在目標機器上提升權限時可能會很有用。
通常它們的目的是枚舉系統信息而不是給出具體的vulnerabilities/exploits。
這種類型的腳本將會為你節省很多時間。
在Linux下使用payload并且開啟反向連接的multi/handler,一旦你侵入了受害者的電腦馬上使用下列腳本提升權限。
LinEnum
可以列舉系統設置并且高度總結的linux本地枚舉和權限提升檢測腳本
隱私訪問:判斷當前用戶是否能夠用空口令使用sudo命令,root用戶的家目錄能否訪問。
系統信息:主機名,網絡詳情,當前IP等等。
用戶信息:當前用戶,列出所有包含uid/gid的用戶信息,列出有root權限的用戶,檢查密碼hash是否保存在/etc/passwd。
內核和發行版詳細信息
1Git clone https://github.com/rebootuser/LinEnum.git
懸鏡-防黑加固
一旦你從上面的鏈接下載了這個腳本,你就可以在終端中簡單的通過./LinEnum.sh來運行它。
隨后它將存儲所有獲取的數據和系統詳細信息。
懸鏡-防黑加固
Linuxprivchecker
枚舉系統設置和執行一些提升權限的檢查。它由python實現,用來對被控制的系統提供建議的exploits。
在下面的鏈接下載
http://www.securitysift.com/download/linuxprivchecker.py
下載完后在終端中只需要使用 python linuxprivchecke.py 命令就可以使用,它將會枚舉文件和目錄的權限和內容。
這個腳本和LinEnum工作方式一樣而且在關于系統網絡和用戶方面搜尋的很詳細。
懸鏡-防黑加固
Linux Exploit Suggester
它基于操作系統的內核版本號。這個程序會執行“uname -r”來得到系統內核版本號。
然后返回一個包含了可能exploits的列表。
另外它還可以使用“-k”參數手工#指定內核版本。
它是一個不同于以上工具的Perl腳本。
使用下列命令下載這個腳本。
1 git clone https://github.com/PenturaLabs/Linux_Exploit_Suggester.git
懸鏡-防黑加固
如果你知道內核版本號就可以在終端中直接使用下列命令:
1./Linux_Exploit_Suggester.pl -k 3.5
如果不知道就輸入./LinuxExploitSuggester.pl uname –r 來獲得內核版本號然后使用上面的命令并把版本號替換成你自己的。
然后它就會給出建議的exploits列表。
懸鏡-防黑加固
Unix-Privesc-checker
在UNIX系統上檢測權限提升向量的shell腳本。它可以在UNIX和Linux系統上運行。
尋找那些錯誤的配置可以用來允許未授權用戶提升對其他用戶或者本地應用的權限。
它被編寫為單個shell腳本所以可以很容易上傳和執行。它可以被普通用戶或者root用戶執行。
當它發現一個組可寫(group-writable)的文件或目錄時,它只標記一個問題如果這個組包含了超過一個的非root成員。
使用下列命令下載
1Git clone https://github.com/pentestmonkey/unix-privesc-check.git
把它解壓然后執行
1unix-privesc-check standard
懸鏡服務器
你可以通過我提供的這些圖片來更好的學習我是如何使用這些工具的。也可以使用另一個命令達到相同的目的。
1unix-privesc-check detailed
01
以上信息來源:安全客
原文鏈接地址:http://bobao.360.cn/learning/detail/3230.html
置頂懸鏡安全實驗室公眾號,給你最新,最有料的資訊,安全技術干貨。
有料丨有趣丨行業丨觀點丨
使用@符號后接C#或VB.NET語句的方式。
1)變量
@后直接變量即可
2)代碼塊
為使用表達式或多行代碼,@后跟大括號將多行代碼包括在大括號中
3)“+”
對于加號連接的兩個字符串變量或屬性,使用小括號將他們括起來
4)插入HTML或文字
每一行前面加上“@:”
5)使用注釋
使用@*和*@將要注釋的部分包起來
6)用@@在頁面上顯示@
在一個View中引入此頁所需程序集的命名空間。
還可以在web.config中配置命名空間,不過將對所有的View起作用。
<system.web.webPages.razor> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces > <add namespace="System.Web.Mvc"/> <add namespace="WebApplication.Models"/> </namespaces> </pages> </system.web.webPages.razor>
指定頁面所用模型的類型。
使用自定義函數。這種方法有可能將一部分數據處理邏輯放到了頁面中,所以盡量不用。
例子:
定義函數
@helper CheckHelp(int i1,int i2) { if (i1 > i2) { @i1 } else { @i2 } }
使用函數
<h3>@CheckHelp(10,1111)</h3>
定義一個方法供當前頁使用,若使用IHtmlString作為方法的返回值,則可將其回傳給當前頁。
例子:
定義函數
@functions { public int CheckFunc(int i1, int i2) { if (i1 > i2) { return i1; } else { return i2; } } }
使用函數
<h3>@CheckFunc(10, 12111)</h3>
使用方式為@后跟輔助方法,注意沒有“;”,否則分號也會顯示在頁面上。
有幾個重載方法,選參數最多的一個
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, string protocol, string hostName, string fragment, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes);
linkText:超連接名稱
actionName:操作名稱
controllerName:控制器名稱
protocol:URL 協議,如“http”或“https”。
hostName:URL 的主機名
fragment:URL 片段名稱(定位點名稱)
routeValues:路由參數
htmlAttributes:HTML 特性
例:
@Html.ActionLink("一個連接", "About")
對應的html代碼
<a href="/MVCPointApp/Home/About">一個連接</a>
有幾個重載方法,選參數最多的一個
public static MvcHtmlString RouteLink(this HtmlHelper htmlHelper, string linkText, string routeName, string protocol, string hostName, string fragment, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes);
routeName:路由名稱
其他參數同ActionLink
還可以使用強類型的輔助方法,一般是以For結尾。
控制器
public ActionResult TestViewData(ModelF mf) { ViewData.Model = new ModelF { Field = mf.Field, Field2 = mf.Field2 }; return View("Index"); }
模型
public class ModelF { public string Field { get; set; } [Range(typeof(DateTime), "1/1/2018", "1/1/2019")] public DateTime Field2 { get; set; } }
視圖Index.cshtml
@using (Html.BeginForm("TestViewData", "Home")) { @Html.ValidationSummary() <input id="filed" name="Field2" type="text" placeholder="請輸入" value="" /> <input type="submit" value="提交" /> }
測試,輸入1/1/2020,執行結果為:
為了能顯示字段的中文名稱使用DisplayName
public class ModelF { public string Field { get; set; } [Range(typeof(DateTime), "1/1/2018", "1/1/2019")] [DisplayName("[這個字段]")] public DateTime Field2 { get; set; } }
執行結果為
由于class是C#保留關鍵字,因此設置class特性時要使用@
@using (Html.BeginForm("Login", "Account", FormMethod.Post, new { @class = "loginForm" })) { }
HTML輔助方法會將下劃線渲染為連字符,因此要表達含有連字符的特性,那么使用下劃線
Html.BeginForm("Login", "Account", FormMethod.Post, new { vla_input=true})
返回URI字符串
· 視圖放在Views文件夾下
· Views文件夾的子文件夾名稱為控制器名稱
· 視圖名稱可以是控制器操作方法名稱也可以不是,若不是控制器操作方法名稱,控制器返回視圖時要指定視圖名。
· Views文件夾下的Shared保存多個控制器共享的視圖
視圖定位規則是,先在Views文件夾中找對應控制器及控制器方法的視圖,沒有找到就到Shared文件夾下找。
· Views文件夾下_ViewStart.cshtml文件指定默認的模板,這個視圖先于任何試圖運行。
· 使用WebPageBase.Layout加載布局模板
· 使用@Html.Partial幫助方法加載部分視圖
· 使用@section定義指定內容的節,然后使用WebPageBase.RenderSection加載指定的節,使用public HelperResult RenderSection(string name, bool required);required=true,那么節必須已經定義,否則拋異常。
· @Styles.Render和@Scripts.Render捆綁和壓縮css、js
App_Start文件夾下BundleConfig類中
public static void RegisterBundles(BundleCollection bundles) { //多個文件用逗號分隔 bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( "~/Scripts/jquery.cookie.js", "~/Scripts/jquery.hoverDelay.js", "~/Scripts/jquery.pagination.js", "~/Scripts/jquery.form.js", "~/Scripts/json2.js", "~/Scripts/hydss.js", "~/Scripts/hydss.utility.js")); bundles.Add(new StyleBundle("~/Content/css/base").Include( "~/Content/css/common.css", "~/Content/css/dev.css")); }
頁面中使用已經捆綁并壓縮的css和js,使用規則是:css文件置頂、js文件置地
@Styles.Render("~/Content/css/base") @Scripts.Render("~/bundles/jqueryval")
使用WebPageBase.Layout加載模板覆蓋_ViewStart.cshtml文件指定默認的模板
例如:
_ViewStart.cshtml文件如下
@{ Layout = "~/Views/Shared/_Layout.cshtml"; }
Index.cshtml文件如下
@{ ViewBag.Title = "Home Page"; Layout = "~/Views/Shared/_LayoutOther.cshtml"; } <div class="jumbotron"> @*具體內容*@ </div>
如果沒有Layout = "~/Views/Shared/_LayoutOther.cshtml";這行代碼,那么此視圖文件將使用_ViewStart.cshtml中的_Layout.cshtml這個模板,但這里Index.cshtml文件使用的是另一個模板_LayoutOther.cshtml
實際項目中可能會有不止一種布局,針對多種布局,既能滿足這種需求要能盡可能地代碼復用。
創建父模板_Layout.cshtml
<!DOCTYPE html> <html> <head> <title>@ViewBag.Title</title> <link rel="icon" href="~/favicon.ico" /> <link rel="shortcut Icon" href="~/favicon.ico" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="imagetoolbar" content="no" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="keywords" content="詞1 詞2" /> <meta name="description" content="網站的主題" /> @Styles.Render("~/Content/css/base") @Scripts.Render("~/bundles/jquery") @*加載HeaderSection節*@ @RenderSection("HeaderSection", false) </head> <body> @*加載主體*@ @RenderBody() <img id="loading" style="display:none;position:fixed;top:50%;left:50%;" src="@Url.Content("~/Content/images/loading.gif")" title="加載中..." alt="加載中..." /> <a href="javascript:void(0);" id="backToTop" title="回到頂部"></a> @*加載腳本*@ @Scripts.Render("~/bundles/jqueryval") @*加載FooterSection節*@ @RenderSection("FooterSection", false) </body> </html>
創建子模板_LayoutOther.cshtml
@{ Layout = "~/Views/Shared/_Layout.cshtml"; } @*定義HeaderSection節*@ @section HeaderSection{ @RenderSection("HeaderSection", false) } @*加載頁頭*@ @Html.Partial("_header") @*加載主體*@ @RenderBody() @*加載頁腳*@ @Html.Partial("_footer") @*定義FooterSection節*@ @section FooterSection{ @RenderSection("FooterSection", false) }
分析
_LayoutOther.cshtml視圖使用了_Layout.cshtml視圖文件,_Layout.cshtml中@RenderSection來加載FooterSection和HeaderSection節,而這個節定義在_LayoutOther.cshtml中,不過沒有具體內容;_LayoutOther.cshtml中定義的FooterSection和HeaderSection又各自加載其他也面定義的FooterSection和HeaderSection節,所以可以在使用_LayoutOther.cshtml中靈活定義FooterSection和HeaderSection節,可以想象這樣一個場景,每個頁面都需要加載js文件,而他們既有共用的js文件,又有非共用的js文件,那么可以在使用_LayoutOther.cshtml的視圖中定義section 節來加載只有此頁面使用的js文件,而把公共的js文件放在_Layout.cshtml視圖文件中
例如Index.cshtml定義@section FooterSection{
@Scripts.Render("~/bundles/index")
}
這個節加載只供Index.cshtml這個頁面實用的js,這樣其他不需要這個js的頁面就不必加載這個js,從而達到減少頁面加載文件的目的進而優化了頁面。
配合@Html.Action方法使用控制器操作返回分部視圖
視圖中使用@Html.Action("TestPy"),控制器如下
public ActionResult TestFrom() { return PartialView("TestPy"); }
或者在視圖中使用@{Html.RenderAction("TestPy");},注意這種內聯視圖和Html.Action使用的區別。
使用Html.Partial直接調用部分視圖而不是通過控制器操作方法。
@Html.Partial("_header")
視圖代碼
@using (Html.BeginForm("TestFrom", "Home")) { <input id="UserName" name="UserName" type="text" placeholder="請輸入用戶名" value="" /> <input id="Password" name="Password" type="password" placeholder="請輸入密碼" value="" /> <input type="submit" value="提交"/> }
控制器代碼
public ActionResult TestFrom(FormCollection c) { var un = c["UserName"]; var pw = c["Password"]; ViewBag.Un = un; ViewBag.Pw = pw; return PartialView("TestPy"); }
返回值類型為IHtmlString,IHtmlString 是一個接口
public static IHtmlString HYSubString(this HtmlHelper helper, string param) { //字符串 String ret =...... return helper.Raw(ret); }
1. Jess Chadwick/Todd Snyder/Hrusikesh Panda,徐雷/徐揚
譯。ASP.NET MVC4 Web編程
2. Jon Galloway/Phil Haack/Brad Wilson/K. Scott Allen,孫遠帥/鄒權譯 ASP.NET MVC4 高級編程(第四版)
3. ASP.NET MVC4開發指南,黃保翕
4. ASP.NET MVC4框架揭秘,蔣金楠
5. https://www.asp.net/mvc
擊上方頭像關注我,每周上午 09:00準時推送,每月不定期贈送技術書籍。
本文3891字,閱讀約需10分鐘
Hi,大家好,我是來輸送技能的CoCo。Python近年來成為編程領域中的佼佼者,得到了迅猛的發展。作為一門強類型的動態腳本語言,JavaScript與Python其實非常相似,無論是語法思維上還是內置API上,對于有Python基礎的我們來說,學習JavaScript非常的友好。
在上一篇JS系列文章,主要對Web基礎知識和JS進行了簡單的介紹。今天介紹JS的語法,了解JS語法的時候,可以順帶聯想一下Python的語法喔~
一
JavaScript基本語法
學習一門語言,一般先學習語言的注釋,因為注釋是給我們自己看,也是給其他編碼伙伴看,添加注釋有利于我們以后閱讀代碼。
(1) 注釋的作用
添加注釋可以起到以下2種作用:
(2) JS注釋的分類
編寫如下代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JS基本語法-ITester軟件測試小棧</title>
</head>
<body>
<script type="text/javascript">
// 我是一個單行注釋
alert('HelloWorld!')
/*
我是一個多行注釋
*/
/*
注釋的代碼不會執行
alert('我是一個彈出層')
alert('我是一個彈出層')
*/
alert('ITester軟件測試小棧')
</script>
</body>
</html>
在瀏覽器打開頁面,效果如下所示:
JavaScript程序按照在HTML文件中出現的順序逐行執行,如果需要在整個HTML文件中執行(如函數、全局變量等),最好將其放在HTML文件的<head>…</head>標記中。
編寫如下代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS基本語法-ITester軟件測試小棧</title>
</head>
<body>
<p>
JavaScript 能夠直接寫入 HTML 輸出流中:
</p>
<script>
document.write("<h1>標題</h1>");
document.write("<p>這是段落。</p>");
</script>
<p>
只能在 HTML 輸出流中使用 <strong>document.write</strong>。
如果您在文檔已加載后使用它(比如在函數中),會覆蓋整個文檔。
</p>
</body>
</html>
在瀏覽器打開頁面,效果如下所示:
在JavaScript中會忽略程序中的空格、換行和制表符,除非這些符號是字符串或正則表達式中的一部分。JavaScript中的換行有“斷句”的意思,即換行能判斷一個語句是否已經結束。
??:與Java語言不同,JavaScript并不要求必須以分號 ;作為語句的結束標記。最好的代碼編寫習慣是在每行代碼的結尾處加上分號,這樣可以保證代碼的準確性。
JavaScript 可以通過不同的方式來輸出數據:
window.alert() :彈出警告框。
document.write(): 將內容寫到 HTML 文檔中。
console.log() :向瀏覽器的控制臺輸出。
編寫如下代碼:
<script>
//控制瀏覽器彈出一個警告框
window.alert('HelloWorld!');
//向瀏覽器輸出一個內容
document.write('ITester軟件測試小棧');
//向控制臺輸出一個內容
console.log('ITester');
</script>
在瀏覽器打開頁面,效果如下所示:
常量:在編程語言中,一般固定值稱為常量。如數字(520)、字符串(ITester)。
變量:變量用于存儲數據值,JavaScript 使用關鍵字 var 來定義變量, 使用等號來為變量賦值。
??注意:HTML并不區分大小寫,但JavaScript對字母大小寫是敏感的,需要嚴格區分字母大小寫。在輸入語言的關鍵字、函數名、變量以及其他標識符時,都必須采用正確的大小寫形式。例如,變量username與變量userName是兩個不同的變量。
JavaScript 關鍵字用于標識要執行的操作。和其他任何編程語言一樣,JavaScript 保留了一些關鍵字為自己所用。
(1) 標識符
JavaScript 標識符(Identifier)包括變量名、函數名、參數名和屬性名。
合法的標識符應該注意以下強制規則:
(2) 關鍵字
關鍵字是JavaScript 語言內部使用的一組名稱,用戶不能自定義同名的標識符。JavaScript關鍵字如下所示:
break | delete | if | this | while |
case | do | in | throw | with |
catch | else | instanceof | try | |
continue | finally | new | typeof | |
debugger | for | return | var | |
default | function | switch | void |
(3) 保留字
保留字是 JavaScript 語言內部預備使用的一組名稱,是為 JavaScript 升級版本預留備用的。JavaScript保留字如下所示:
abstract | double | goto | native | static |
boolean | enum | implement | package | super |
byte | export | import | private | synchronized |
char | extends | int | protected | throws |
class | final | interface | public | transient |
const | float | long | short | volatile |
二
JavaScript小實例
使用JavaScript代碼編寫一個歡迎訪問彈出對話框,同時訪問網頁時顯示當前系統時間。
編寫代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS實例-ITester軟件測試小棧</title>
</head>
<body>
<script type="text/javascript">
var now =new Date(); //創建當前的日期對象
var hour=now.getHours(); //獲取小時數
var min=now.getMinutes(); //獲取分鐘數
alert("您好!現在是"+hour+":"+min+"\r歡迎訪問ITester軟件測試小棧!");
</script>
</body>
</html>
在瀏覽器打開頁面,效果如下所示:
使用JavaScript代碼編寫一個歡迎訪問彈出對話框,點擊按鈕顯示昵稱。
編寫代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS實例-ITester軟件測試小棧</title>
<body>
<p>點擊這個按鈕,來調用帶參數的函數。</p>
<button onclick="myFunction('CoCo','ITester軟件測試小棧!')">點擊這里</button>
<script>
function myFunction(name,platform)
{
alert("歡迎" + name + ", 訪問 " + platform);
}
</script>
</body>
</head>
</html>
在瀏覽器打開頁面,效果如下所示:
以上就是今天的分享,如果大家想要獲取今天以及后續的JS代碼,可以在ITester軟件測試小棧微信公眾號后臺回復“JS代碼”,持續更新JavaScript系列。
更多系列文章
敬請期待
我
*請認真填寫需求信息,我們會在24小時內與您取得聯系。