XCC

处理xss攻击

夙愿已清 提交于 2020-08-11 23:30:01
前端处理方法: function checkXSS(param){ var pattern = /<[^>]+>|alert(.*)/; var str = “”; $("[id=’"+ param +"’]").each(function () { str += $(this).val(); }); if (pattern.test(str)){ $.umapMessager.alert([[#{common.hint}]], [[#{config.cvalue.validate}]]); return true; } } 后端加过滤器的例子: @PropertySource(value = {“classpath:security.properties”}) @ConfigurationProperties(prefix = “security”) @Component @Data public class SecurityParam { private String antiparam; private String whiteparam; } security.properties: #antiparam xcc/css security.antiparam=<,>,%3c,set-cookie,src="javascript:,ProcessBuilder,alert(

int3断点指令的原理和示例

拈花ヽ惹草 提交于 2020-08-10 18:49:50
今天有人让我解释一下断点调试的原理,我就想先解释一下int3指令,就写了一篇短文。 单字节指令int3的二进制码是0xcc,它的效果是: 处理器执行到0xcc时,会陷入内核,执行int3的异常处理代码,比如给当前进程发送一个SIGTRAP信号。 就这么简单。剩下的就看信号处理程序如何发挥了。 我给出一个简单的代码,演示一下一个程序的 自我单步跟踪 如何实现: # include <stdio.h> # include <sys/mman.h> # include <signal.h> unsigned char old ; unsigned char * inst ; // RIP距离stack的当前位置正好192字节,详情参见rt_sigframe结构 # define PC_OFFSET 192 // value ++指令从main函数的第106字节开始,这个是从objdump -D看出来的。 static int i = 106 ; // 这是我们单步跟踪的变量。 int value = 0 ; // 打断点需要两步: // 1. 保存原始单字节指令。 // 2. 替换为int3指令。 void breakpoint ( char * inst ) { old = * inst ; * inst = 0xcc ; } void trap ( int unused ) {

Linux系统调试之return probe原理和示例

允我心安 提交于 2020-08-10 12:06:58
前面谈了kprobe的原理,其实uprobe也差不多: https://blog.csdn.net/dog250/article/details/106520658 那么return probe如何实现呢? 我们知道,hook一个函数的起始位置非常容易,拿函数名当指针,直接修改成0xcc或者别的什么call/jmp即可,而hook一个函数的结束就没有这么简单了: 函数大小不容易计算。 函数可以在任意位置调用return。 怎么办呢? 很简单,只要执行流到了函数里面,直接取RSP寄存器指示的地址即可,它就是函数返回的地址,hook这个地址,就OK了。 于是,方法也就有了: 在函数开头打int3断点(也可以ftrace,但这里仅谈int3)。 在函数调用时的int3处理函数中获取stack上的return address。 将return adress替换成int3的address(也可以用单独的函数)。 在return address的int3处理函数中调用return probe函数。 恢复正常流程。 如下图所示: 下面是一个示例程序: # include <stdio.h> # include <sys/mman.h> # include <signal.h> // sigframe的RIP偏移 # define PC_OFFSET 192 // sigframe的RSP偏移 #

HBase的优化

不想你离开。 提交于 2020-08-09 20:33:23
一、HBase的优化 1,高可用   在 HBase 中 HMaster 负责监控 HRegionServer 的生命周期,均衡 RegionServer 的负载,如果 HMaster 挂掉了,那么整个 HBase 集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以 HBase 支持对 HMaster 的高可用配置。 1 .关闭 HBase 集群(如果没有开启则跳过此步)   [xcc@linux01 hbase]$ bin /stop- hbase.sh 2 .在 conf 目录下创建 backup- masters 文件   [xcc@linux01 hbase]$ touch conf /backup- masters 3 .在 backup- masters 文件中配置高可用 HMaster 节点   [xcc@linux01 hbase]$ echo linux02 > conf/backup- masters 4 .将整个 conf 目录 scp 到其他节点   [xcc@linux01 hbase]$ scp -r conf/ linux02:/opt/module/hbase/   [xcc@linux01 hbase]$ scp -r conf/ linux03:/opt/module/hbase/ 5 .打开页面测试查看   http: //

编译bash实现history的syslog日志记录

本小妞迷上赌 提交于 2020-08-08 18:08:33
一、下载bash源码包 [root@repo other_x86_64]# http://vault.centos.org/6.9/os/Source/SPackages/bash-4.1.2-48.el6.src.rpm 二、安装源码包 [root@repo other_x86_64]# rpm -ivh bash-4.1.2-48.el6.src.rpm #警告可以忽略 1:bash warning: user mockbuild does not exist - using root warning: group mockbuild does not exist - using root warning: user mockbuild does not exist - using root warning: group mockbuild does not exist - using root warning: user mockbuild does not exist - using root warning: group mockbuild does not exist - using root warning: user mockbuild does not exist - using root warning: group mockbuild does not

头部校验和实现

ぐ巨炮叔叔 提交于 2020-08-05 13:51:47
#include<stdio.h> #include<stdlib.h> int main(){ unsigned short s[]={ 0x4500, 0x0030, 0x2c72, 0x4000, 0x8006, 0x0000, 0xc0a8, 0x0002, 0x4a7d, 0xcc66}; unsigned long i,sum=0; for(i= 0 ; i < sizeof(s)/sizeof(short) ; i++){ sum+=s[i]; } while(sum>>16){ sum = (sum>>16)+(sum&0xffff); } printf("%p",~sum); return 0; } 来源: oschina 链接: https://my.oschina.net/u/3695598/blog/4283005

Boot | 手把手教你写BootLoader

不打扰是莪最后的温柔 提交于 2020-07-28 09:42:05
在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。这段说人话意思就是: 工程中不会将JTAG等烧录口引出但是一定有一个对外的通信口我们升级程序时就可以利用可操作的通信接口把要升级的程序文件发送到芯片再擦写到对应地址的内存中,这样就实现了程序升级。 熊猫大概去年这个时候写的BootLoader工程(以下简称boot),最近正好被朋友问起发现好多细节已经记不清,就赶快写一篇关于boot专题加深记忆也把思路提供给大家。 概 述 针对飞思卡尔的MC9S12XET256芯片(熟悉吗?BMS最老的基础平台MCU)开发了下位机部分,上位机部分软件。上位机软件用的VS平台,语言是C#,下位机用的CW5.1,下载工具是USBCAN-2E-U。 目前一共有三种思路启动boot: 特殊硬件管脚:复位上电之后通过判断PP0管脚输入电平状态判断进入APP还是boot,PP0默认上拉高电平进入APP如果要进入boot则需要复位时按下按键,这种方式用作调试可以但是实际工程中我们根本没有条件操作按键,所以不推荐; 上电进入延时退出:每次上下电复位都先进去boot模式然后等待升级通信指令,如果收到升级指令则开始升级,反之延时耗完进入APP

Swift5.2 语言指南(二十九)高级运算符

人走茶凉 提交于 2020-05-08 02:06:39
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝( https://www.cnblogs.com/strengthen/ ) ➤GitHub地址: https://github.com/strengthen/LeetCode ➤原文地址: https://www.cnblogs.com/strengthen/p/10973030.html ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。 ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创! ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 除了 Basic Operators中 描述的 运算符外 ,Swift还提供了一些高级运算符,它们执行更复杂的值操作。 这些包括您将在C和Objective-C中熟悉的所有按位和移位运算符。 与C中的算术运算符不同,Swift中的算术运算符默认情况下不会溢出。 溢出行为被捕获并报告为错误。 要选择溢出行为,请使用默认情况下会溢出的Swift第二组算术运算符,例如溢出加法运算符( &+ )。 所有这些溢出运算符都以“&”号开头 & 。 当定义自己的结构,类和枚举时,为这些自定义类型提供标准Swift运算符的实现可能会很有用。

python中 字节数据 字符串数据 ASCII码 进制数据 转换总结

和自甴很熟 提交于 2020-04-30 10:21:56
# hex():把十进制转换成十六进制字符 a = 170 print("把十进制转换成十六进制字符") print(hex(a)) # oct():把十进制转换成八进制字符 o = 9 print("把十进制转换成八进制字符") print(oct(o)) # bin():把十进制整形转换成二进制字符 b = 10 print("把十进制整形转换成二进制字符") print(bin(b)) # ord(): 把ASCII码表中的字符转换成整数 o = '!' print("把ASCII码表中的字符转换成整数") print(ord(o)) # chr():把整数转换成ASCII码表中的字符 c = 123 print(chr(c)) s = "123456" print("字符串转字节") print(bytes(s, encoding="utf8")) b = b'123456' print("字节转字符串") print(str(b, encoding="utf-8")) # 使用 binascii import binascii aa = "aabbccddeeff" # 十六进制显示的字符串转换为十六进制显示的字节数据 print("十六进制显示的字符串转换为十六进制显示的字节数据") print(binascii.unhexlify(aa)) a = b'\xaa

内存保护机制及绕过方案——从堆中绕过safeSEH

喜你入骨 提交于 2020-04-25 18:43:42
1.1 SafeSEH内存保护机制 1.1.1 Windows异常处理机制 Windows中主要两种异常处理机制,Windows异常处理(VEH、SEH)和C++异常处理。Windows异常处理结构未公开的,包含向量化结构异常VEH及结构化异常处理SEH。由操作系统提供的服务,当一个线程出现错误时,操作系统调用用户定义的一个回调函数_exept_handler。回调函数接收到操作系统传递过来的许多有价值的信息,例如异常的类型和发生的地址。使用这些信息,异常回调函数就能决定下一步做什么。 C++异常处理是C++语言的特性,在Windows平台上由系统提供支持。 Windows异常处理顺序流程 l 终止当前程序的执行 l 调试器(进程必须被调试,向调试器发送EXCEPTION_DEBUG_EVENT消息) l 执行VEH l 执行SEH l TopLevelEH(进程被调试时不会被执行) l 执行VEH l 交给调试器(上面的异常处理都说处理不了,就再次交给调试器) l 调用异常端口通知csrss.exe 1.1.2 SafeSEH工作原理 异常处理链(SEH)结构在通过SHE链绕过/GS中已经介绍过了,这里接直接说safeSEH了, i. SafeSEH工作流程: ii. RtlIsVaildHandler() 函数校验流程: 1.1.3 SafeSEH绕过思路 那么有3种情况