ARTS:

  • Algrothm: leetcode算法题目
  • Review: 阅读并且点评一篇英文技术文章
  • Tip/Techni: 学习一个技术技巧
  • Share: 分享一篇有观点和思考的技术文章

Algorithm

to-lower-case

https://leetcode.com/problems/to-lower-case/

1)problem

Implement function ToLowerCase() that has a string parameter str, and returns the same string in lowercase.

Example 1:
    Input: "Hello"
    Output: "hello"
Example 2:
    Input: "here"
    Output: "here"
Example 3:
    Input: "LOVELY"
    Output: "lovely"

2)answer

声明一个新的字符串变量,对传入的字符串的字符逐个读取,如果是大写字母就取小写与大写之间的差值,得到大写字符对应的小写字母ASCII码存进字符串中。处理完后返回结果。

3)solution

Cpp:

#include <stdio.h>
#include <string>
using std::string;

class Solution {
public:
    string toLowerCase(string str) {
        string re_val = "";
        for (char str_val : str)
        {
            if (str_val >='A'&& str_val <='Z')
            {
                // 取小写与大写之间的差值,得到字符对应的小写ASCII码对应是什么存进字符串中
                re_val += (str_val + ('a' - 'A'));
            }
            else
            {
                // 如果是小写就不处理
                re_val += str_val;
            }

        }
        return re_val;

    }
};

int main()
{

    // 使用内容
    Solution nSolution;
    nSolution.toLowerCase("hello World?");
    return 0;
}

Python:

class Solution(object):
    def toLowerCase(self, str):
        """
        :type str: str
        :rtype: str
        """
        ret = ""
        for s in str:
            if s>='A' and s<='Z':
                ret += chr(ord(s)+(ord('a')- ord('A')))
            else:
                ret +=s

        return ret

Review

【漏洞分析】在Windows下利用格式字符串

  • 英文原文
> https://osandamalith.com/2018/02/01/exploiting-format-strings-in-windows/
  • 译文
在Windows下利用格式字符串
https://xz.aliyun.com/t/2410

1)场景

利用格式字符串的漏洞。

2)问题难点

文中提到的漏洞程序是GITHUB上的一个挑战程序

https://github.com/OsandaMalith/Exploits/blob/master/Challenges/Challenge%20-%201.7z?raw=true

这个演示程序中的printf函数直接调用eax而没有指定任何格式字符串参数,在该函数内部先使用memset用零填充内存,strncpy用于复制填充缓冲区空间内的用户输入。printf直接调用缓冲区的代码。如果覆盖的内容超过了分配的内容就会形成溢出漏洞。

3)解决问题的方法

使用%X格式字符读取堆栈,可以控制程序执行流程。因为溢出的数据是从低往高增长,而堆栈的地址是高往低增长。而进入函数前,已经将返回函数的地址压入栈中。控制溢出的字符覆盖掉返回地址,溢出后跳转到ShellCode地址,就形成了栈溢出漏洞。

4)方法细节

根据作者的思路走,但是原文作者载入程序地址和我虚拟机测试的地址不同。所以只跟着流程测试了一下控制返回地址。加入Shellcode后,控制返回地址到指向ShellCode的地址还没有测试成功。

问题函数代码:

.text:00401000 sub_401000      proc near               ; CODE XREF: _main+A4↓p
.text:00401000
.text:00401000 var_7D0         = byte ptr -7D0h
.text:00401000 arg_0           = dword ptr  8
.text:00401000
.text:00401000                 push    ebp
.text:00401001                 mov     ebp, esp
.text:00401003                 sub     esp, 7D0h
.text:00401009                 push    7D0h            ; size_t
.text:0040100E                 push    0               ; int
.text:00401010                 lea     eax, [ebp+var_7D0]
.text:00401016                 push    eax             ; void *
.text:00401017                 call    _memset
.text:0040101C                 add     esp, 0Ch
.text:0040101F                 push    7CFh            ; size_t
.text:00401024                 mov     ecx, [ebp+arg_0]
.text:00401027                 push    ecx             ; char *
.text:00401028                 lea     edx, [ebp+var_7D0]
.text:0040102E                 push    edx             ; char *
.text:0040102F                 call    _strncpy
.text:00401034                 add     esp, 0Ch
.text:00401037                 lea     eax, [ebp+var_7D0]
.text:0040103D                 push    eax             ; char *
.text:0040103E                 call    _printf
.text:00401043                 add     esp, 4
.text:00401046                 mov     esp, ebp
.text:00401048                 pop     ebp
.text:00401049                 retn
.text:00401049 sub_401000      endp

控制寄存器Powershell代码:

$Buffer = 'A' * 80
#'%.‭‭‭310744‬‬‬' * 4 可变动
$fmt = '%x' * 69 + '%.‭‭‭310744‬‬‬' * 4  +'%n'

$ret = 'B' * 4

$final = $Buffer + $fmt + $ret

5)总结

strcpy函数分配内存数据是从低往高增长,而堆栈的地址是高往低增长。

Tip

【逆向分析】OD调试OCX

1)场景

该样本是一个自解压文件,自解压的时候会通过regsvr32去加载压缩包里的{5adbaa2b-a73d-4c95-81da-9b8be4179332}.ocx的同时,打开Adobe PDF.pdf文件。

2)问题难点

1、OCX是什么?

2、OD怎么调试?

3)解决思路

1、OCX 是对象类别扩充组件(Object Linking and Embedding (OLE) Control Extension);是可执行的文件的一种,但不可直接被执行; 是 ocx 控件的扩展名,与 .exe、.dll 同属于PE文件。

2、新建快捷方式,断点LoadLibrary()得到加载OCX的位置。

C:\Windows\System32\regsvr32.exe /s /i C:\{5adbaa2b-a73d-4c95-81da-9b8be4179332}.ocx

3、断点VirtualAlloc()得到开辟空间的内存地址。也就是ShellCode注入的位置。

4、查看内存模块,得到十六进制ShellCode,反汇编得到Shellcode行为。

4)方法细节

bp LoadLibrary
bp VirtualAlloc
查看内存模块【M】,代码地址,反汇编得到汇编指令断点调试。

5)总结

大多数加载DLL的技巧都可以这么调试。

海莲花的ShellCode是在PE文件里的资源节里的。

Share

【业务安全】业务安全:不只是跑赢最慢的那个人

https://mp.weixin.qq.com/s/NqsJsC3y5Q-Y0HpMcNFMqw

1)场景

保障业务安全中情报的作用。

2)问题难点

垒砌砖墙的目的不是在于其设计工艺的高端和完美,而在于延缓黑客的攻击。提升黑客攻击的性价比

3)解决问题的方法

情报团队完全可以做到,从一个黑暗面去梳理这个行业的框架,用黑色的视角来比对、梳理这个行业内各家企业的现状与关系。

4)方法细节

一个事件触发后的响应动作中,确认事件是否需要启动响应的一个环节:

  • 要查什么;
  • 要去哪里查;
  • 查询工具是什么;
  • 工具的输入是什么;
  • 不同情况的输出分别代表什么;
  • 每种输出所代表的内容,又对应了什么样的后续动作;
  • 结果通过什么形式反馈;
  • 结果都需要反馈给谁;
  • 事件该如何记录;
  • 事件是否需要复盘;
  • 是否有可改进的指标;

5)总结

这篇文章讲了一个思路,于是我就翻到了。

https://attack.mitre.org/

MITER ATT&CK™是一个全球可用的基于真实世界观测的对手战术和技术的知识库。ATT和CK知识库被用作私营部门,政府以及网络安全产品和服务社区中特定威胁模型和方法的开发基础。

【ARTS】01_03_左耳听风-20181126~1202的更多相关文章

  1. 【ARTS】01_21_左耳听风-201900401~201900407

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  2. 【ARTS】01_20_左耳听风-20190325~20190331

    zz## ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 ...

  3. 【ARTS】01_19_左耳听风-20190318~20190324

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  4. 【ARTS】01_18_左耳听风-20190311~20190317

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  5. 【ARTS】01_17_左耳听风-20190304~20190310

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  6. 【ARTS】01_16_左耳听风-20190225~20190303

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  7. 【ARTS】01_14_左耳听风-20190211~20190217

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  8. 【ARTS】01_10_左耳听风-20190114~20190120

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  9. 【ARTS】01_09_左耳听风-20190107~20190113

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

随机推荐

  1. iOS 【终极方案】精准获取webView内容高度,自适应高度

    前言:是这样的,刚写完上一篇文章还没缓过神来,上一篇文章我还提到了,想和大家聊聊原生+H5如何无缝连接的故事.结果我朋友就给我发了两篇他的作品.他的做法也都有独到之处.好的文章都是这样,让你每次看都能 ...

  2. [luogu1962]斐波那契数列

    来提供两个正确的做法: 斐波那契数列双倍项的做法(附加证明) 矩阵快速幂 一.双倍项做法 在偶然之中,在百度中翻到了有关于斐波那契数列的词条(传送门),那么我们可以发现一个这个规律$ \frac{F_ ...

  3. ZJOI 2019 一试记

    没有心思做太多的铺述. $Day1$考完已经过去了几天,逐渐变得冷静下来,细碎的思绪也已经飘远,剩下一些难以忘怀的东西.$WC$以后一段时间的训练,本以为把状态找了回来,豪情壮志地出发,结果竟又是落魄 ...

  4. 洛谷 P1407 [国家集训队]稳定婚姻 解题报告

    P1407 [国家集训队]稳定婚姻 题目描述 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有关. 25岁的 ...

  5. json序列化 & 反序列化

    json序列化: json的dumps方法可以将json格式数据序列为python的相关数据类型,比如str,常用于打印,另外,在序列化时,中文汉字被转换为unicode编码,在dumps函数中添加参 ...

  6. SDL源码阅读笔记(2) video dirver的初始化及选择

    write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 前一篇文章 讲了SDL的除video以外的大部分模块.本文主要关注SDL的video模块部分. SD ...

  7. pacman安装软件包出现损坏

    状况 File .pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).Do you want to delet ...

  8. Redis我想入门——数据类型

    每一个数据库都有自己的数据类型.同样子redis为我们提供了五种类型的数据——字符串.哈希.列表.集合.有序集合.我们知道关系型数据的数据存放型式是一张二维表.用行和列来表示数据之间的关系.redis ...

  9. shelve模块(二十三)

    shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写; key必须为字符串,而值可以是python所支持的数据类型 用的比较少 目的: 将字典写入文件保存起来 i ...

  10. 什么是 Spring?

    感想: 我在写这个东西的时候看了不同的视频,和不同的书,关于对于spring的讲解,感觉黑马的培训视频,是讲的更加的让人容易理解. 这段时间因为各种的事情,没有写过博客了,曾经做的笔记有的在有道云笔记 ...