红客听雨

无名小卒的碎碎念

0x00 序言

最近一直在学习容器相关的应用,决定把用的非常频繁的Nginx和PHP环境利用容器(Docker)的方式完成部署,最终实现无需考虑宿主机环境,构建PHP应用的运行环境。

之所以没有将数据库应用如Mysql或者MariaDB也用部署到相同的环境,是因为考虑到目前上云应用的解耦问题,计算资源和存储资源应当分离,就算需要用容器部署数据库服务,也应该在独立的环境中。

对于PHP应用来说,计算资源是作为Web服务的Nginx和运算服务的PHP-FPM,存储资源是各项数据,所以我将Nginx和PHP-FPM以容器的方式部署,数据库和UPLOAD数据单独部署或者利用云数据和云对象存储实现,即可增强应用的扩展性,实现动态扩容等操作。

我以CentOS7宿主机为例,部署PHP应用的运行环境。

注:本文所涉及宿主机命令,默认以root用户执行。

阅读全文 »

0x01 前言

网络和Github上有很多安全相关的面试经验,但部分考点并没有参考的答题思路和解析,本人根据自己的面试经验和知识,对网络资料和自己遇到的题目进行整理。如有不足,请多指正。

0x02 Web安全基础知识点

SQL注入

原理

SQL注入的形成通常是因为未检测或未充分检测用户的输入部分,导致被黑客构造输入对代码进行截断然后执行自己的SQL指令,对数据库敏感数据进行查询。

注入的类型

  • 布尔型注入
  • 报错型注入
  • 可联合查询注入
  • 基于时间延迟的注入
布尔型注入

布尔型注入是通过判断页面的返回情况来获得信息。

利用案例:xxx/view?id=1 and substring(version(),1,1)=5

如果服务端MySQL版本是5.X的话,那么页面返回的内容就会跟正常请求一样。攻击者就可以通过这种方式获取到MySQL的各类信息。

阅读全文 »

LLVM的全称是Low Level Virtual Machine,翻译过来就是底层虚拟机,但事实上LLVM在现阶段已经与虚拟机关系不大,而是作为一套完整的编译链工具或者称为编译框架应用在各大软件领域。而在二进制安全领域,我们常常会用到LLVM Obfuscator进行软件保护。

LLVVM

LLVM的前端可以使用不同的编译工具得到代码的AST(抽象语法树),然后转化成LLVM的IR((Intermediate Representation,即中间表示层,也称中间语言)),不同的前端语言得到的IR都是相同的,LLVM的中间优化器(Pass)会对IR依次进行优化操作,通常包括优化运行时间等,然后LLVM后端将优化好的IR处理成目标平台的二进制代码,完成整个LLVM流程。

PASS

LLVM Obfuscator是瑞士西北应用科技大学于2010年6月份发起的一个项目,该项目旨在提供一套开源的针对LLVM的代码混淆工具,是基于LLVM实现的开源代码混淆器,可以进行多元化自定义的软件代码混淆保护。

LLVM Obfuscator的工作在IR层完成,通过编写Pass来对IR进行混淆。得益于LLVM的多支持特性,所以LLVM Obfuscator支持C、C++、Objective-C等多种语言,而且支持x86、x86-64、ARM、MIPS等多种目标平台。

阅读全文 »

0x01 Nginx

由于我们是通过yum直接安装Nginx,所以要先确保我们安装了YUM的EPEL软件源。

大部分镜像会自带EPEL软件源,但是部分国外VPS的EPEL源需要重新安装才可以正常使用。

1
yum install -y epel-release

如果提示 nothing to do,那需要先删除自带的EPEL软件源,再重新安装。

1
yum remove -y epel-release

安装好EPEL源之后,我们便可以通过如下命令安装Nginx。

1
yum install -y nginx

安装好Nginx之后,我们需要启动它并将其添加到系统自启动项中。

1
2
systemctl start nginx
systemctl enable nginx

此时我们访问服务器的IP地址,应该就可以见到Nginx的欢迎页面了,如果无法联通,可能是由于没有开启80端口导致。我们使用如下命令解决。

1
firewall-cmd --zone=public --add-port=80/tcp --permanent
阅读全文 »
0%