第三期 NSATP-A 初级试题(2018.Years)

NSATP

NSATP 全国网络安全应用检测专业技术人员认证
我自己审过一遍,部分题有些不严谨,但是我没变动,参考需谨慎.

shadowsocks deploy

安装shadowsocks

shadowsocks是用python写的,直接使用pip install 安装即可

1
pip install shadowsocks

group by with rollup

group by 用于结合合计函数,根据一个或多个列对结果集进行分组。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
mysql> select id,username,password from demo_member;
+------+----------+----------------------------------+
| id | username | password |
+------+----------+----------------------------------+
| 1 | admin | 7fef6171469e80d32c0559f88b377245 |
| 2 | guest | e10adc3949ba59abbe56e057f20f883e |
+------+----------+----------------------------------+
2 rows in set (0.00 sec)

mysql> select id,username,password,count(*) as sum from demo_member group by password;
+------+----------+----------------------------------+-----+
| id | username | password | sum |
+------+----------+----------------------------------+-----+
| 1 | admin | 7fef6171469e80d32c0559f88b377245 | 1 |
| 2 | guest | e10adc3949ba59abbe56e057f20f883e | 1 |
+------+----------+----------------------------------+-----+
2 rows in set (0.00 sec)

mysql> insert into demo_member
-> values(3,"test","7fef6171469e80d32c0559f88b377245");
Query OK, 1 row affected (0.00 sec)

mysql> select id,username,password,count(*) as sum from demo_member group by password;
+------+----------+----------------------------------+-----+
| id | username | password | sum |
+------+----------+----------------------------------+-----+
| 1 | admin | 7fef6171469e80d32c0559f88b377245 | 2 |
| 2 | guest | e10adc3949ba59abbe56e057f20f883e | 1 |
+------+----------+----------------------------------+-----+
2 rows in set (0.00 sec)

mysql>

Terminal DIY

0x01 zsh && (oh-my-zsh)

安利一个Linux下终端美化产品zshzsh有强大的配置功能,可以任意配置你的zsh成你想要的样子,为了简化配置而提供一个配置模板oh-my-zsh,通过oh-my-zsh来更好的管理zsh的各项配置。
官网:http://ohmyz.sh
GitHub:https://github.com/robbyrussell/oh-my-zsh

XML External Entity Injection

0x01 浅谈XXE

XXE是什么

XML External Entity Injection 字面意思 XML外部实体注入,通常被叫做XXE注入漏洞。
在 2013年旧版的 OWASP TOP 10 中被归类为 A4 级别的安全问题 ( A4:不安全的直接对象引用 ).2017年 新版的 OWASP TOP 10 将 2013年 的 A4 级别安全问题和另外一个 A7 级别的安全问题都归类到新版的 A4 中,命名为 ( A4:失效的访问控制)。

iptables 详解

前言

关于iptables个人感觉里面还是有很多东西的,早几年有学过,后来因为工作的原因,就逐渐淡忘。
最近打算重拾一下,然后各种查阅文献(参考网络),找运维老师傅发参考文档研究,同时整理下此文。
希望看到该文的读者能大概有所了解.

SSH安全配置

SSH (Security Shell)

SSH(安全外壳协议)为建立在应用层基础上的安全协议。
SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

Linux用户管理

新建用户

​ Linux创建新用户的命令(useradd 、adduser)

2017广东省第二届"强网杯"信息安全攻防赛-writeup

前言

​ 赛事:广东省第二届 “强网杯”
时间:2017年9月9日10:00——2017年9月10日18:00,共32小时 (预赛)
题目涵盖:Misc、Crypto、Web、Reverse、Pwn

st2-052(CVE-2017-9805)远程代码执行漏洞复现

情报

首先 “吐槽” 一下. 朋友圈的“态势感知”真心吓人, 漏洞刚爆出来,分分钟就被刷屏,连poc在网上都还没找到,就有人发复现截图……
我在知道这个漏洞的时候,大概是2017年9月5日晚22:00左右,漏洞大概在21:00左右的时候发布的吧,具体时间这个就不追究了。
参考地址:https://cwiki.apache.org/confluence/display/WW/S2-052
影响版本:Struts 2.5 - Struts 2.5.12
漏洞描述:当启用 Struts REST的XStream handler去反序列化处理一个没有经过任何类型过滤的XStream的实例,可能导致在处理XML时造成远程代码执行漏洞。
修复建议:

Windows Api BreakPoint

常用断点API

拦截对话框相关:
bp MessageBeep ->播放一个系统声音。系统声音的分配方案是在控制面板里决定的
bp MessageBoxA(W) ->创建消息框
bp MessageBoxExA(W) ->创建消息框
bp MessageBoxIndirect(A) ->创建定制消息框
bp MessageBeep ->播放一个系统声音,拦截警告声
bp DialogBox ->从资源模板建立一模态对话窗
bp DialogBoxParamA(W) ->从资源模板建立一模态对话窗
bp DialogBoxIndirect ->从内存模板建立一模态对话窗
bp DialogBoxIndirectParam ->从内存模板建立一模态对话窗
bp CreateDialog ->从资源模板建立一非模态对话窗
bp CreateDialogParam(A) ->从资源模板建立一非模态对话窗
bp CreateDialogIndirect ->从内存模板建立一非模态对话窗
bp CreateDialogIndirectParam(A) ->从内存模板建立一非模态对话窗
bp EndDialog ->结束一模态对话窗
bp GreateWindowExA(W) ->获取指定设备场景的窗口范围
bp ShowWindow ->控制窗口的可见性
bp UpdateWindow ->强制立即更新窗口

C language base 14:文件操作

0x01

文件都是采用二进制方式记录数据
如果文件里的所有二进制数据都有对应的字符,这种文件叫做文本文件
除了文本文件以外的文件都叫二进制文件

C language base 十三:动态内存分配

0x01 理论

在程序运行的时候临时决定需要分配多少存储区空间,这种方法叫动态内存分配
为了使用动态内存分配,需要用到一组标准函数,包含标准头文件 stdlib.h

C language base 十二:高级指针

0x01 二级指针 && 指针数组

用来记录普通类型存储区地址的指针叫一级指针
指针变量存储区的地址可以记录在二级指针里
声明二级指针需要使用到 ** (两个星号)
在二级指针变量名称前使用两个 ** 可以找到捆绑的普通变量存储区
在二级指针变量名称前使用一个 * 可以找到捆绑的一级指针存储区

1
2
3
4
5
6
7
8
9
#include "stdio.h"
int main(){
int num = 0;
int *p_num = #
int **pp_num = &p_num;
**pp_num = 10; //代表num变量的存储区
*pp_num = NULL; //代表 p_num 指针变量的存储区
return 0;
}

C language base 十一:联合与枚举

0x01 联合

联合可以用来创建新的数据类型,联合的成员变量对应的存储区是互相重叠
联合存储区的大小是”最大存储区的大小”
联合存储区可以当作多种不同类型的存储区使用,每个成员变量代表一种对应的类型,这一点和结构体有点相似
联合的所有成员变量存储区的开始地址一样,联合中所有成员分配的是同一块内存
声明联合的时候需要使用 union 关键字(使用 typedef 关键字和结构体一样)

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
typedef union /* tmp */{
int num; //最大存储区,占4个字节
float fnum;
char buf[2];
}tmp;
int main(){
tmp p = {0};
printf("&(p.num)是%p\n", &(p.num)); //0xbfc6da34
printf("&(p.fnum)是%p\n", &(p.fnum)); //0xbfc6da34
printf("sizeof(tmp)是%d\n", sizeof(tmp)); //4
return 0;
}

C language base 十:结构体

0x01 为什么使用结构体

假设:现在需要存储多条数据,如学生的学号,和姓名,一个是整型,一个是字符串
存储多条数据可以使用数组,但是数组存储的数据必须是同一类型
这时候结构就是用来解决这个问题,结构可以用于存储不同类型的多条数据,学生的学号和姓名都可以放在一个结构中保存

C language base 九:多文件编程

0x01 多文件编程的步骤

多文件编程:一个文件可以包含多个函数,一个函数功能只属于一个文件

C language base 八:宏和条件编译

0x01 宏

宏定义:
通过 #define 预处理指令可以定义宏
宏的作用:
&nsbp; &nsbp; 宏可以用来给数字起名字
&nsbp; &nsbp; 宏可以用来给计算公式起名字

1
2
#define PI 3.14f
#define CIRCLE(r) 2*PI*r

C language base 六:字符串

0x01 字符串字面值

字符串是所有语言中最重要的类型之一,而C语言没有直接定义 String 类型
C语言中可以用字面值,字符数组和字符指针表示字符串,字符串字面值用双引号括起来

1
2
3
4
5
//可以延续字符串字面量
"I am string \
and go on."

"a string" "another string"

C language base 七:main 函数的参数

0x01 main 函数原型

C语言规定main函数的参数只能有两个,这两个参数习惯写为argc和argv。
main函数的两个参数可以这样写:

1
2
int main(int argc,char const *argv[]){……}
int main (int argc,char const **argv){……}

C language base 五:指针

前言:为什么要用指针

使用指针,便得明白为什么要用指针,它有什么优点值得去用

C language base 四:递归

0x01 递归

本章浅析递归,笔者在学习递归的时候,也曾绕了很大一个圈子,老是往复杂的方面去想,如递归内部每一步是怎么运行
结果绕着绕着就绕晕了,导致给我的感觉是,递归很难懂
简而言之,递归即是函数自己调用自己,它解决了我们很难思考的问题,将问题大而化小
使用递归:
    1.必须有退出条件,不能无限循环
    2.必须保证递归后,算法简化
编写递归函数:
    1.编写语句解决分解后的每个小问题(先假设递归函数已经可以使用)
    2.在函数开头编写分支,用来处理不能分解的情况,这个分支保证函数可以结束

C language base 三:数组和函数

0x01 数组

数组和数组元素:
C语言的数组是一种用于存储 相同类型数据 的数据结构.
被存储的数据叫数组元素,通过数组下标进行访问这些数组元素
一个数组被定义后,可以有多个数组元素
数组也分一维数组和多维数组

C language base 二:流程控制

0x01 判断

1
2
3
4
5
6
7
if(条件){
/* code */
}else if(条件2){
/* code */
}else{//否则,以上条件都不满足执行
/* code */
}

C language base 一:数据类型、进制转换、运算符、缓冲区与变量

0x01 数据类型

C语言有六种基本数据类型,语法如下:
数据类型 空间名 ; C 语言规定以’;’来代表每条指令的结束


以上数据类型又分为有符号数和无符号数,使用 unsigned 修饰
另外在C99规范引入的数据类型(布尔型),只有1和0(True、False)

1
2
3
4
int i = (double)a; //将double类型的变量a强制转换int
printf("%d",sizeof(i)) //sizeof() 获取存储区大小

result:4

http head injection

本文仅针对http 头注入进行总结,首先按常见性罗列一下存在http头注入的参数.

上述http头部存在都是有真实的案例,作为科普文,还是得将每个头部具体干嘛的写下.
HTTP头部详解
User-Agent:使得服务器能够识别客户使用的操作系统,游览器版本等.(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中)
Cookie:网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密).
X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库or某文件[通过修改XXF头可以实现伪造IP]).
Clien-IP:同上,不做过多介绍.
Rerferer:浏览器向 WEB 服务器表明自己是从哪个页面链接过来的.
Host:客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号(这个我本人还没碰到过,不过有真实存在的案例还是写上吧).

(CVE-2017-8464)LNK文件(快捷方式)远程代码执行漏洞复现

情报

北京时间2017年6月13日凌晨,微软官方发布6月安全补丁程序,“震网三代” LNK文件远程代码执行漏洞(CVE-2017-8464)和Windows搜索远程命令执行漏洞(CVE-2017-8543).

Master File Table Bug

$MFT

每天进步一点,人帅就要多读书。

催债

宝川很气愤,天底下总有人借钱不还
单纯索要,换来却是处处躲着宝川,与之闲聊也不受待见
索要次数频繁,中下旬提及二三,便会急眼
不就是借了你点钱吗?至于三天两头的来问吗?
甚至还会被一顿臭骂,估计宝川早已被不想还钱那人恨透。

Winrar 去广告弹窗

所需工具

ZIP Pseudo Encryption

伪加密

伪加密是在未做加密的ZIP文件基础上修改了它的压缩源文件目录区的全局方式位标记的比特值。
伪加密让压缩软件打开它的时候识别为加密文件,想获取压缩包中的文件,就必须输入密码,但是你
不管输入什么密码都提示密码错误,都没办法打开它。

杰斐逊盘

​一种生僻的古典密码,最早由托马斯·杰斐逊Thomas Jefferson)于1795年发明的,这个密码并没有成为众所周知的,而是由一个世纪之后的伟大的密码的征服者艾蒂安·巴泽尔司令独立发明的。该系统所使用的美国合众国陆军从1923年直到1942年的M-94

​又称Bazeries圆桶,是一种密码系统使用一组轮或磁盘,每个磁盘具有布置围绕它们的边缘字母表的26个字母的。字母的顺序对于每个磁盘是不同的,并且通常以随机的方式加扰。每个磁盘都标有唯一的数字。磁盘中心的一个孔允许它们堆叠在一个轴上。磁盘是可移动的,可以按照所需的顺序安装在轴上。磁盘的顺序是加密密钥),发送方和接收方都必须以相同的预定义顺序排列磁盘。

Hello World

1.node.js and git

node.js : https://nodejs.org/en/download/