2017-09-27 10:03:26    290    0    0
Manifest-Version: 1.0
Main-Class: conn_orm/readalltxt
Class-path: /usr/gaara/lib/mysql-connector-java-1.jar /usr/gaara/lib/mysql-connector-java-2.jar /usr/gaara/lib/mysql-connector-java-3.jar
   /usr/gaara/lib/mysql-connector-java-4.jar /usr/gaara/lib/mysql-connector-java-5.jar /usr/gaara/lib/mysql-connector-java-6.jar
   /usr/gaara/lib/mysql-connector-java-7.jar /usr/gaara/lib/mysql-connector-java-8.jar /usr/gaara/lib/mysql-connector-java-9.jar

今天才发现这个文件的格式要求比较严格,因为使用的包比较多,所以那个Class-path的内容就比较多,我全部放在了一行,结果服务器启动读取那个文件的时候报错,错误信息是行太长,把它们切成多行,结果又是无效的头字段(java.io.IOException: invalid header field),和工程里面的其它文件比较了下,发现换行后要在前面加一个空格,后来又发现明明包含了一个包,但是找不到类,又在每行的后面加了一个空格,这下才完全搞定。
例如我们打包的jar为 Test.jar

Manifest-Version: 1.0
Main-Class: windows.VideoWindow
Class-Path: lib\org.eclipse.swt_3.3.0.v3346.jar lib\org.eclipse.swt.win32.win32.x86_3.3.0.v3346.jar



上面为打包为jar中的包说明文件. 下面这个报错一直出现.
could not find main class. Program will exit
这个错误提示其实不是没有发现main class. 而是jar如果有错误执行不了,就会出现这个错误. 打包完成后, 要先运行 cmd -> Java -ja

2017-09-27 10:03:18    260    0    0
   //方法1
        Iterator it1 = list.iterator();
        while(it1.hasNext()){
            System.out.println(it1.next());
        }
        //方法2
        for(Iterator it2 = list.iterator();it2.hasNext();){
             System.out.println(it2.next());
        }
        //方法3
        for(String tmp:list){
            System.out.println(tmp);
        }
        //方法4
        for(int i = 0;i < list.size(); i ++){
            System.out.println(list.get(i));
        }​


2017-09-12 13:51:21    234    0    0

1. 选Victim。怎么知道它是用struts做的呢?通常是500错误告诉我们的,一般随便去下载一个不存在的文件,那些粗制滥造的网站就报500了,错误信息栈暴露了它的OS信息(它会直接告诉我们D:/.../xxx.pdf不存在,那就肯定是Windows了),还有Apache的版本、Tomcat的版本,从错误信息还可以看出它使用的是SSH... (做web apps的同学们,一定要自己定制500页面啊,否则一不小心就暴露了。。。
2. 开始第一波攻击:
   http://www.**.com/struts2-showcase/employee/save.action?redirectAction:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'shutdown','-s','-t','2'})).start()}
   它返回的是http://www.**.com/struts2-showcase/employee/java.lang.ProcessImpl@e18f46.action, 说明这个process成功启动了,2秒之后它的服务器就会被关掉。
   再去用Chrome访问http://www.**.com/,Chrome告诉我的是Oops! Google Chrome could not connect to www.**.com,证明服务器确实被我关掉了?
   不要高兴得太早,过了一两分钟发现它又回来了 -- 莫非它的服务器会自动重启的?
3. 开始第二波攻击:  
   既然关你服务器没用,那我直接干掉你的猫(管它猫有没有9条命)
   猜想它tomcat是配了windows服务的,如果真是这样,只要net stop xx就可以杀掉这只猫。那么这个xx是什么呢?这就需要知道tomcat的版本了。
   那么怎么知道tomcat的版本呢?我们可以一个一个去猜,到目前为止,tomcat最高版本也就7嘛,这个好猜。
   不想猜的话,那就让它自己来告诉我们:http://www.**.com/struts2-showcase/employee/save.action?redirectAction:%25{(new+java.io.File('.')).getAbsolutePath().replaceAl

2017-09-04 10:23:35    210    0    0

echo简单来说,就是输出语句。

echo  123  输出123      也可以加上双引号

echo -n表示输出完之后不换行

还可以输出系统命令,需要加 ``   就是键盘最左上角exc下的那个键

但是这样格式不完整,所以加上双引号就可以了

还有一部分转义字符,写法和Java的转义字符一样,详细列表在下面

echo可以输出彩色字符。原理是和Java的那个控制台输出彩色字符原理一致,都是 开始一个ANSI控制码 字符 结束、

如下:

echo -e "\033[33mhahaha\033[0m"​

所以输入对应颜色号码即可输出对应颜色。

echo -e "\033[44;33mhahaha\033[0m"

 

这个是加背景

颜色标记为:

 


效果如下:

另外还可以写入文件

echo> catalina.out​​

这样是清空文件。一个  > 是替换原来的内容。  >>  是 向文本中写入内容。

echo "hello" >> temp.out   
echo "hello" > temp.out ​

 

 

 

详细列表

刚刚后台输出语句的进程查找方式:直接输入命令的部分内容grep kill即可。

 

 友情连接:

http://www.zsythink.net/archives/96 

http://www.zsythink.net/archives/111 

2017-09-01 08:54:45    193    0    0
package net.moonstart.web.utils;

import java.io.IOException;
import java.io.OutputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.CellFormat;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import net.moonstart.web.model.Ms_alert;
import net.moonstart.web.model.device.Ms_device;
import net.moonstart.web.model.workshop.Ms_workshop;

public class ExcelUtils {
	static DecimalFormat decimalFormat = new DecimalFormat("###0.00");//格式化设置
 
	public static WritableWorkbook createTemplate(OutputStream output,
			int type, List<Ms_workshop> listw, List<Ms_device> listd,
			List<Ms_alert> lista) throws IOException, WriteException {
		WritableWorkbook writableWorkbook = Workbook.createWorkbook(output);
		WritableSheet wsheet = null;
		SimpleDateFo
2017-08-31 16:32:44    245    1    0
import java.io.BufferedReader;  
import java.io.File;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
import java.util.Map;  
  
public class ProcessBuilderTest {  
    public static void restart() throws IOException {  
        // Runtime 例子  
        Process p;  
        // test.bat中的命令是ipconfig/all  
        String cmd = "c:\\test\\test.bat";  
  
        try {  
            // 执行命令  
            p = Runtime.getRuntime().exec(cmd);  
            // 取得命令结果的输出流  
            InputStream fis = p.getInputStream();  
            // 用一个读输出流类去读  
            InputStreamReader isr = new InputStreamReader(fis);  
            // 用缓冲器读行  
            BufferedReader br = new BufferedReader(isr);  
            String line = null;  
            // 直到读完为止  
            while ((line = br.readLine()) != null) {  
                System.out.println(line);  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        
2017-08-31 16:32:44    249    0    0
class PBDemo {   
        public static void main(String args[]) {   
                try {   
                        ProcessBuilder proc = new ProcessBuilder("notepad.exe", "testfile");   
                        proc.start();   
                } catch (Exception e) {   
                        System.out.println("Error executing notepad.");   
                }   
        }   
}  

 

2017-08-31 16:32:21    232    1    0
 try {
            String cmdString = "docker ps";
            System.out.println(cmdString);
            Runtime rt = Runtime.getRuntime();
            Process p = rt.exec(cmdString);
            BufferedReader read = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line = null;
            out.println("<script>");
            while((line = read.readLine())!=null){
                System.out.println(line);
                out.println("document.write('<div>" + line + "</div>');");
            }
            out.println("</script>");
            out.flush();
        } catch (Exception e) {
            // TODO: handle exception
        }

每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。

可以通过 getRuntime 方法获取当前运行时。应用程序不能创建自己的 Runtime 类实例。

例如可以调用Windows的notepad的话

Process p = rt.exec("notepad");

通过exec方法创建一个子进程,结果返回一个Process类的实例

p.destroy();销毁之。

ProcessBuilder.start() 和Process 

ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类的一个实例,该实例可用来控

3/3