tangye
发表于 2015-06-18 11:23
不大懂,学习!
idi0t
发表于 2015-06-18 17:38
1、请阐述漏洞与bug的区别?
我个人理解, 漏洞是产品发布后,产品自身的未检出的可以被恶意利用的缺陷,bug是开发时期测试出来的缺陷,本质没什么区别.
2、常见的linux rootkit对自身隐藏方法,及列出你所知道的rootkit后门?
这个不懂,但从要隐藏,无非是替换, 注入, run once等方式.
3、端口复用的理解,以及哪些常见恶意软件会使用该技术?
端口复用就是使用已经打开的端口, 木马等使用这些技术, 识别自身的报文,转发正常的报文等.但如果端口打开是独占的好像就不能可利用了.
4、请简述你对sql注入的理解?
Sql注入就是通过了解程序在与用户交互时如何构建SQL语句对DB操作, 通过构造特定的SQL语句来实现特定的功能.
5、请简述缓冲区溢出原理?
缓冲区溢出原理主要是通过对缓冲区以外区域数据的覆盖等以此来改变程序的执行流程, 如EIP之类的是保存在栈中的.
下班.
shenlanyouyu
发表于 2015-06-19 14:57
Bug不仅仅是开发时期测试出来的缺陷。隐藏的未测试出来的缺陷都是bug。
idi0t
发表于 2015-06-23 16:54
回复 23# shenlanyouyu
:lol:恩,学习了
xkf01
发表于 2015-06-24 11:29
shenlanyouyu
发表于 2015-06-24 22:51
本帖最后由 shenlanyouyu 于 2015-06-25 00:22 编辑
1、请阐述漏洞与bug的区别?
Bug是软件程序中存在的缺陷和错误。
漏洞是硬件,软件,协议上的具体实现或安全策略上存在的缺陷,攻击者能够利用这些缺陷在未授权的情况下访问或破坏系统。
漏洞包括的内容更广泛一些,漏洞可能是由bug导致的,也可能是系统设计,协议的不完善导致的。linux心脏流血漏洞就是程序中的bug导致信息泄露。Bash shellshock漏洞可以控制被感染的机器,破坏数据,关闭网络。
2、常见的linux rootkit对自身隐藏方法,及列出你所知道的rootkit后门?
隐藏文件,替换ls,du等命令。
隐藏进程,替换ps,top命令。
隐藏网络连接。隐藏/proc/net/tcp和/proc/net/udp的文件。
重定向可执行文件。
日志过滤。
隐藏自身模块,替换lsmod命令,或者hook系统调用。
后门:
LKM linux可加载内核模块
Cron后门
3、端口复用的理解,以及哪些常见恶意软件会使用该技术?
在系统已开放的端口上进行通讯,只对输入的信息进行字符匹配,不对网络数据进行任何拦截、复制类操作,所以对网络数据的传输性能丝毫不受影响。木马会使用。
4、请简述你对sql注入的理解?
我个人认为sql注入是由于程序员没有对用户输入数据的合法性进行检查,导致程序存在安全问题,从而使得攻击者有机可乘,抓住程序中的漏洞,提交数据库查询代码获得其他数据。
5、请简述缓冲区溢出原理?
通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数,这是程序的bug。
在gcc中已经有缓存区溢出保护措施了,gcc首先在缓冲区被写入之前在buf的结束地址之后返回地址之前放入随机的gs验证码,并在缓冲区写入操作结束时检验该值。
void copy_func(char *src)
{
char buff;
strcpy(buff, src);
}
通过反汇编,发现在调用strcpy之前
mov gs:0x14, eax
mov eax,0x2c( esp)
.......
mov 0x2c( esp), eax
xor gs:0x14, eax
je 0x8048470 ;通过比较写入前和写入后gs验证码的数据,判断是否产生溢出。
call 0x8048340 <__stack_chk_fail@plt>
adds0
发表于 2015-06-25 11:19
不大懂,学习!
只爱睡觉
发表于 2015-06-28 09:13
回复 26# shenlanyouyu
厉害!
forgaoqiang
发表于 2015-06-30 23:21
这本书相当的高深 而且没有进行手把手的教学 。。。 如果真要学习 可以参考这本书讲解的软件官网
http://www.modsecurity.org/
ckf513728912 发表于 2015-06-17 17:19 static/image/common/back.gif
路过正准备学习这方面的东西
shenlanyouyu
发表于 2015-07-01 00:44
写了一个缓冲区溢出的测试代码,验证基本原理,测试代码能够说明缓冲区溢出的攻击方法。
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define SRC_LEN 16
#define BUFF_LEN 4
void copy_func(char *src)
{
char buff;
strcpy(buff, src);
}
void shell_func()
{
printf("buffer overflow,i'm the shell code.\n");
exit(0);
}
int main()
{
char data = "TestCodeTestCode";
int addr = (int)&shell_func;
data = (addr >> 24) & 0xFF;
data = (addr >> 16) & 0xFF;
data = (addr >> 8) & 0xFF;
data = (addr >> 0) & 0xFF;
copy_func(data);
return 0;
}
关闭gcc的堆栈溢出保护,使用-fno-stack-protector编译选项,编译测试程序:
shenlan@shenlan-desktop:~/apue$ gcc -fno-stack-protector -o test test.c
运行测试程序,得到测试结果。
shenlan@shenlan-desktop:~/apue$ ./test
buffer overflow,i'm the shell code.