【边尝试边写博客】入侵学校服务器

现在是凌晨1点,2016年2月16

无聊中看了一下学校主页,就想试着入侵一下学校网站。

其实对入侵并没有什么研究,毕竟这行见不得光。

但是~对计算机的基础还是有的,于是前期设想如下:

1.找到管理员后台登入地址

2.弱密码不断尝试一直到正确登入

3.登入管理员后台,注入小马大马提权

4.提权后获取教务处数据库or上传木马到服务器获取服务器权限


我本身并没有任何黑客工具,木马,一切自己从头动手写程序,尝试吧。

然后我也不知道最后会不会成功,一遍做一别写这篇博客吧。

-----------------------------------------2016/2/16-----凌晨1点06分-------------------------------------------------------

1.找到管理员后台登入地址

正式开始:

登入XX大学教务处 http://jwc.jmu.edu.cn/,手动找管理员登入地址,找不到。

回想儿时的经历,好像很多可以扫描管理员地址的软件。记得初中玩黑客的时候有几款软件 x-scan 明小子等,都可以扫描

于是百度下载明小子,我百度随便下了个 明小子旁注WEB综合检测程序 3.6加强版,扫描 http://jwc.jmu.edu.cn/,

获得管理员登入地址:http://jwc.jmu.edu.cn/admin_index.asp

【边尝试边写博客】入侵学校服务器_第1张图片

2.工欲善其事,必先利其器。我们先继续准备我们要用到的东西再写代码。

这里肯定需要一份弱密码字典的。继续百度,我这里下载了好几份,都好大啊,TXT格式的,太大电脑缓存不行打不开。

好蛋疼,于是又百度下载了个TXT文档分割器。(我下载的是这个:万能TXT文本分割器 ,刚才还下载错了宁外一个,结果分割出来的不是TXT,现在这个万能文本分割器

分割出来的才是我要的TXT文档。)

把大的密码文档分割成几个小的文档方便阅读和导入数据库,这里不多说怎么操作了太弱智了,毕竟如果这你都不懂,下文也不用继续看了,先把中学读了吧宝贝。

我这里分割成10MB一个文档(其实最好再分割小点,1MB1个文档最好,方便多线程。但是我懒得再回去分割了。)

3.把分割的TXT文件导入数据库。

首先,下载mysql、navicat

在navicat中新建数据库ruo,utf8字符编码,新建数据库表mima1,字段:id  int 自增,主键   , 字段:mima varchar30

右键数据库表导入向导,把txt的密码文档导入到数据库表中,一个txt导入一张表,后面的表就mima2,mima3,mima4以此类推就好了,字段都一样

(这里又要废话一下了,可能命名不规范,还用mima这种拼音,土土土,也没前缀等等等,我这里因为图方便一切怎么方便怎么来了哈哈)

导入完看一下:【边尝试边写博客】入侵学校服务器_第2张图片

到这里密码也准备好了~~ 好困,其他的改天继续,困困困

-----------------------------------------2016/2/17--------22:12-----------------------------------------------

(大晚上的总算回家可以写点代码了。)

因为这个教务处的后台登入是需要验证码的,所以肯定得做验证码识别。

首先尝试ocr识别。

tesseract-ocr 号称全球识排名第三,百度随便下载一个并安装

http://jwc.jmu.edu.cn/inc/getcode.asp 验证码地址,下载5、6个验证码保存到本地目录

DOS下命令:

1、cd /d 目录地址

2、tesseract 1.jpg 1  

识别1.jpg 结果保存在1.txt

直接识别后发现,准确率几乎没有。

【边尝试边写博客】入侵学校服务器_第3张图片

于是用JAVA对图片进行处理,一般对简单验证码就是 去背景,降噪,灰度,二值化

我这边处理完的结果是

这里简要说一下我的处理图片的思路:先用画图打开验证码,放大了观察


3948 数字附近还有淡淡的颜色的阴影,阴影很明显就是颜色比数字淡色的。这种处理方法太简单了(以前无聊的时候研究过验证码识别正好懂)

去这些淡色的噪点我的方法是直接color.getGreen() 获取绿色的值int,绿色值(0~255 从深到浅),小于150的就是我们的验证码,其余的全部不是验证码主体

(这里要提一下,方法很多种,我独爱绿色才经常用这种方法,我也没看网上有人用这种方法,大家可以尝试其他方式)

(为什么是大于150这个临近值呢?可能有人会疑问我这个150的数值哪里得出来的结论呢?很简单,我肯定是先把所有位点的绿色值打印出来,观察一下验证码主体的数值大小比较一下非主体的绿色值大小,主体绿色值一般都在120+,130+,非主体的一般都在200+,我就设置为150为分界了)

【边尝试边写博客】入侵学校服务器_第4张图片

完美!

package jmuOcr;

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class Test {

	public static void main(String[] args) throws IOException {
		 String file ="C:/Users/Mr.wu/Desktop/临时/入侵集合/验证码/4.jpg";
		 BufferedImage img = getPic(file);
		 int width = img.getWidth();  
	     int height = img.getHeight();
		 for (int x = 0; x < width; ++x) {  
	            for (int y = 0; y < height; ++y) {  
	                if (isWhite(img.getRGB(x, y)) == 1) {  
	                    img.setRGB(x, y, Color.WHITE.getRGB());  
	                } else {  
	                    img.setRGB(x, y, Color.BLACK.getRGB());  
	                }  
	            }  
	        }  
	     saveImg(img,"C:/Users/Mr.wu/Desktop/临时/入侵集合/验证码/new4.jpg");
	}
	
	public static void saveImg(BufferedImage img,String file) throws IOException{
		  ImageIO.write(img, "JPG", new File(file));  
	}
	
	public static void testGetXY(BufferedImage img){
		 int width = img.getWidth();  
	     int height = img.getHeight();
	      
	     System.out.println("width:"+width);
	     System.out.println("height"+height);
	     for (int x = 0; x < width; ++x) {  
	            for (int y = 0; y < height; ++y) {  
	                System.out.println("wid:"+x+" hei:"+y);
	                Color color = new Color(img.getRGB(x, y));  
	                System.out.println(color.getGreen());
	            }  
	        }  
	}
	
	//获取图片
	//file:图片目录
	public static BufferedImage getPic(String file){
		try {
			BufferedImage image = ImageIO.read(new File(file));
			return image;
		} catch (IOException e) {
			e.printStackTrace();
			return null;  
		}
	}
	
	
    public static int isWhite(int colorInt) {  
        Color color = new Color(colorInt);  
        if (color.getGreen()>=200) {  
            return 1;  
        }  
        return 0;  
    }  
  
    public static int isBlack(int colorInt) {  
        Color color = new Color(colorInt);  
        if ( color.getGreen()<= 150) {  
            return 1;  
        }  
        return 0;  
    }  
  
	
	

}

做到这里后把二值化变成黑白后的验证码图片再DOS下调用tesserct ocr识别一下,吐了一口老血后发现,正确率还是不高!!!!

晚上的时间等于白瞎了。不过不怕,毕竟以前识别过更难的验证码,我还有其他方法。不过今晚是没时间了,留待改天吧。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


因为还没做完就开始上班没时间做,而且不想用CSDN博客,打算换到博客园了。这个会继续抽空写完。



你可能感兴趣的:(【边尝试边写博客】入侵学校服务器)