整形溢出分类
0x1 强制宽度转换(Widthness)
从高级语言层面来看,如果数值超过 对应类型 可容纳的范围,会导致高位丢失:
char buffer[80];
char *src = argv[1];
int len = atoi(argv[2]);
unsigned short i = len; // mov WORD PTR [ebp + i], len
if (i < 80) {
memcpy(buffer, src, len);
}
运行:
从高级语言层面来看,如果数值超过 对应类型 可容纳的范围,会导致高位丢失:
char buffer[80];
char *src = argv[1];
int len = atoi(argv[2]);
unsigned short i = len; // mov WORD PTR [ebp + i], len
if (i < 80) {
memcpy(buffer, src, len);
}
运行:
3 月底 Drupal 官方放出一个 安全通告,其中描述了 Drupal 核心代码中的远程命令执行执行漏洞,但并未公布具体细节,同时在推送的 更新补丁 中,加入了对输入 HTTP 参数的过滤:
protected static function stripDangerousValues($input, array $whitelist, array &$sanitized_keys) {
if (is_array($input)) {
foreach ($input as $key => $value) {
if ($key !== '' && $key[0] === '#' && !in_array($key, $whitelist, TRUE)) {
unset($input[$key]);
$sanitized_keys[] = $key;
}
else {
$input[$key] = self::stripDangerousValues($input[$key], $whitelist, $sanitized_keys);
}
}
}
return $input;
}
根据补丁内容,如果传入的参数名为 # 开头,则对其进行移除。于是根据补丁中提供的线索,一场军备竞赛开始了 0v0。而在昨天的时候,CheckPoint 的安全研究员率先发布了漏洞的细节,同时 @a2u 发布了针对 8.x 的 PoC。
文章的标题定了好久,但是一直没动笔,几天前完成了 Java 实现部分,后来由于时(划)间(水)关系,今天克服下懒癌完成 .NET 平台部分。文章可能会比较长,算是抛砖引玉吧蛤蛤。(・∀・)
在日常渗透测试中,由于目标主机上存在反病毒软件,Webshell 后门被删是一件非常蛋疼的事情。对于功能较为完善的 Webshell ,都包含大量的静态特征,通过静态规则可以很容易进行匹配。
对于解释性的脚本语言,通常是由脚本引擎在运行时进行动态解析,因此可以比较灵活对指令进行控制,包括使用 eval
等函数完成动态执行。
logrotate 在日志轮询中,支持简单的生命周期事件 prerotate / postrotate 等,当日志轮询之前/之后,会尝试调用 sh 执行定义的语句块。
日志对于应用调试、故障排查、攻击溯源等都有非常重要的作用。而随着时间的累加,日志的大小也随之增长,对单个庞大的日志文件进行分析,会消耗较多的时间和资源。
而 logrotate 可以很好的解决这些问题,logrotate 可以根据定义的规则,定期对日志进行归档重建、压缩等。
之前的坑还没填完,现在开始挖新的坑的了 = =。其实基于 SEH 的实现已经不算什么秘密了,网上各种文章也满天飞( 当然理解 SEH 必读的肯定是 Matt Pietrek 于 1997 年发表在微软月刊的一篇文章:A Crash Course on the Depths of Win32™ Structured Exception Handling。作为整理和加深理解,在此总结前辈们的各种精♂经验。