elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Informática
| |-+  Tutoriales - Documentación
| | |-+  Curso ASP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Curso ASP  (Leído 20,752 veces)
el-brujo
ehn
***
Desconectado Desconectado

Mensajes: 20.002


La libertad no se suplica, se conquista


Ver Perfil WWW
Curso ASP
« en: 28 Agosto 2002, 15:58 pm »

ASP->Active Server Pages

C++ | Visual Basic
|
Interpretado:javascript | VBScript
Servidor: PHP | ASP



PROGRAMACIÓN EN ASP:

Las páginas tienen una extensión .ASP
Los tags son <% %>

ejemplo:

prueba.asp

<% response.write "HOLA" %>


Variables:

No hace falta definirlas

dim var1

option explicit obligamos a definir todas las variables (recomendado)

vartype var1

Nos devuelve el tipo de una variable (un número)

vbEmpty --> 0
vbNull --> 1
vbInteger --> 2
vbLong --> 3
vbSingle --> 4
vbDouble --> 5
vbCurrency --> 6
vbDate --> 7
vbString --> 8
vbObject --> 9
vbError --> 10
vbBoolean --> 11
vbVariant --> 12
vbDataObject --> 13
vbBytc --> 17
vbArray --> 8192

Ejemplo:

dim var1
var1=6.0
response.write vartype (var1)

Resultado --> 5 (o sea double)

option explicit
response.write "Hola"
response.write var1

Resultado --> Variable no definida: 'var1'

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

División Entera --> \
Potencia -- ^
Modulo --> Mod

Operadores de comparación:

=
<>

Concatenar: & (+)


and --> las dos son ciertas

or --> una de las dos es cierta

not -->lo contrario

xor --> cierto si solamente una de las dos es cierta.


function pepe(param1,param2)
pepe=5
end function

exit function para salir de una funcion

Procedimientos
sub PepeProc (par1,par2)
end sub

exit sub para salir del procedimiento


Para llamar a un procedimiento

call PepeProc ("Par1,"par2) o directamente PepeProc "par1","par2"


if condicion then
...
else
...
end if


select case(variable)
case "A": ...
case "B": ...
case "C": ...
case Else: ...
end select

function tipovariable(var)


for next

for a=1 to 5
..
next

do (while | until) ... loop


Do while a>0
...
loop

do until a=0
..
loop

While ... wend (Obsoleto)

For each ... in ...


For each elemento in Mi_Array


Salir bucles

Exit for (for)

Exit loop (while)

----------------------------
i=0
x=1
do while i<=9
i=i+1
resultado=x*i
response.write ""
response.write resultado
loop
----------------------------

Ámbito de las variables

- Página
Dim a
a=5

Esta variable tiene valor dentro de esta página (sólo en la página actual)

- Sesión
Válidas durante toda la visita del usuario (Dura hasta que se cierra el navegador o hasta que pasa un tiempo determinado)

Session("var")=5

- Aplicación
Válidas siempre, no caducan y se puede acceder para todos los usuarios.

Application("var")=7



Global.asa

InetPub/www.root

se carga siempre que un usuario abre una página asp
inicializaciones/terminaciones

session_onstart-->se activa cuando unusuario entra en la página
session_onend-->se desactiva cuando un usuario abandona la sesión pq ha pasado un tiempo o pq ha hecho un session_abandon
application_onstart--> se activa cuando el 1er usuario entra en la página web
application_onend --> se desactiva cuando ya no haya ninguna sesión activa

plantilla para un fichero global:


sub session_onstart
end sub
sub session_onend
end sub
sub application_onstart
application("visitas")=0
end sub
sub application_onend
end sub


PROPIEDADES:

session_id --> identificador de la sesión
timeout --> tiempo que queda de sesión

session.sessionid

MÉTODO:

abandon-->destruye la sesión actual y nos activa el evento session_onend.No destruye la sesión hasta que no se haya ejecutado todo el código.

contents.remove-->elimina una variable de sesión
contents.removeall-->elimina todas las variables de sesión
contents-->colección de elementos añadidos a la sesión

ejemplo:
session("var1")=1
session("var2")=2



Application

Lock --> bloquear

Unlock --> desbloquear

Application.lock
Application.("variable")="Hola"
Application.unlock

El objeto Server:

Propiedad:

ScriptTimeOut --> tiempo en segundos para ejecutar una página, sino lo hace en este tiempo da error. (Es como el max_execution_time = 30 del PHP)


CreateObject -> Crear objeto com

(Objeto COM --> objetos dentro de dlls que se encuentran en el directorio windows, y quedan para todas las aplicaciones windows. Se registran en el sistema, y cualquier programas puede acceder a ellas.

Execute -> ejecutar un ASP
GetLastError -> Último error
MapPath -> Carpeta física
HtmlEncode -> Codificar para HTML
UrlEncode -> Codificar una URL


Ejemplo:

El directorio raiz es:
<%=server.mappath("/") %>

Codigo sin codificar
<% response.write(" si a<b r>c") %>

Codigo codificado
<%=server.htmlencode(" si a<b r>c") %>

Prueba URL

<%=server.urlencode("dir=c/del carmen,25") %>

= sirve para response.write


Transfer -> redirecciona a otra página.


Objeto Request y Response


Request -> obtener variables
Response -> escribir valores

TotalBytes -> los bytes enviados al cliente en la petición.

ClientCertificate -> certificados
Cookies -> cookies
Form -> valoers formulario
QueryString -> valor URL
ServerVariables -> variables servidor


Ejemplo:

(Enviar la cookie antes de nada, o sea arriba de todo)
<% response.cookies("Cantidad")=5 %>

El valor de la cookie es:

<%=request.cookies("Cantidad") %>

Ejemplo Formulario:

<form name="form1" method="post" action="mostrar.asp">
<p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Nombre
<input type="text" name="nombre">
</font></p>
<p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Dirección
<input type="text" name="dire">
</font></p>
<p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Teléfono
<input type="text" name="tel">
</font></p>
<p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">
<input type="submit" name="Submit" value="Submit">
</font></p>
</form>

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

Su nombre es: <%=request.form("nombre")%>
Su dirección es: <%=request.form("dire")%>
Su teléfono es: <%=request.form("tel")%>


Si el form method="get" entonces no podemos hacer request.form, sino querystring.

method="post" -> request.form
method="get" -> querystring

path_info
path_translated -> direccion fisica del disco duro
query_string -> cadena con parametros
remote_addr -> IP
remote_host -> Nombre de la maquina
request_method -> get o post
script_map -> base del URL
script_name -> ruta virtual
server_port -> puerto servidor
server_port_secure -> puerto SSL
server_protocol ->protocolo de comunicaciones
url -> URL
server_software -> servidor

Server Variables

Ejemplo Info.asp

<%=request.servervariables("server_port") %>
<%=request.servervariables("path_info") %>
<%=request.servervariables("server_software") %>
<%=request.servervariables("server_protocol") %>
<%=request.servervariables("script_name") %>
<%=request.servervariables("remote_host") %>
<%=request.servervariables("remote_addr") %>

etc,etc,etc

Objeto Response

Buffer -> cierto o falso (si es cierto hasta que no se acabe de ejecutar la pagina no se envian los datos, si es falso se va enviando) O todo o nada, si tenemos 50 registros, si el buffer esta true, o nos enseña los 50 o ninguno, si esta en false, nos enseña 10 por ejemplo.
CacheControl -> especificar si la pagina se guardará en caché en el proxy.
Expires -> tiempo que tiene que almacenarse esta pagina en caché.

AppendToLog -> se guardara en el fichero log del servidor.
Clear -> nos borra el buffer
End -> terminamos la pagina, y se envia este el buffer esta true o no.
FlusH -> envia lo que hay en el buffer, si esta true
Redirect -> redirecciona la pagina a otro sitio
Write -> para escribir
Coookies -> colección de galletas

Ejemplo:


<%
For x=1 to 1000
response.write (x)
response.write ""
next
%>

Va saliendo....

Y ahora

<%
response.buffer=true
For x=1 to 1000
response.write (x)
response.write ""
next
response.end
%>

Sale de golpe!!!

Más ejemplos:

login.htm
------------------------------------
<html>
<head>
<title>- Login </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="comprobar.asp">
<table width="41%" border="0" cellspacing="0" cellpadding="0" bgcolor="#999999" align="center">
<tr bgcolor="#333333">
<td colspan="3"> </td>
</tr>
<tr>
<td width="19%"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Nombre</font></td>
<td width="55%">
<input type="text" name="nombre" maxlength="10">
</td>
<td width="26%" rowspan="3"> </td>
</tr>
<tr>
<td width="19%"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Password</font></td>
<td width="55%">
<input type="password" name="pass" maxlength="20">
</td>
</tr>
<tr>
<td width="19%"> </td>
<td width="55%">
<input type="submit" name="Submit" value="Enviar">
</td>
</tr>
</table>
</form>
</body>
</html>
------------------------------------

comprobar.asp
------------------------------------
<%
if (request.form("nombre")="pepe") and (request.form("pass")="pepe") then
Session("nombre")=request.form("nombre")
response.redirect("correcto.asp")
else
response.redirect("incorrecto.asp")
end if
%>
------------------------------------

correcto.asp
------------------------------------
<%
response.write("Bievenido"&Session("nombre"))
%>
------------------------------------

incorrecto.asp
------------------------------------
<%
response.write("No tienes acceso")
%>
------------------------------------

Teoría:

En el IIS 5.0
ASP Error

ASPCode
Number
Description
File
Line
Column
Source
Category

variable+Error=server.getLastError

Página que abre el servidor cuando hay un erorr --> 500-100.asp

Conexiones con bases de datos

-> ODBC --> se puede conectar con cualquier base de datos que acepte ODBC


¿ Qué es el OBDC ? -> Conexión base de datos a través de Windows. Object Data Base Conection.

ADO -> colección de objetos para conectarse a la BD. WorkSpace, Recordset, etc

Primer paso:

Vamos a crear una base de datos con access:

clientes

IDCliente (autonúmerico)
Nombre
Direccion
Telefono

Clientes.mdb

Configuración
Panel de Control
Fuentes de datos ODBC

Data Source Name (DSN)

DSN Usuario
DSN Archivo (solo de un archivo)

DSN Usuario --> Agregar, Microsoft Acces-Driver, Nombre del Origen Clientes, Base de Datos (Seleccionar y cogemos cliente.mdb, en avanzadas podemos poner password, etc.

Set con= Server.CreateObject("ADODB.CONNECTION")
con.open "DSN=Clientes;UID=Nombre_usuario;PWD=Password;"

a-> Crear RecordSet
set mirs=con.execute("Select * from clientes") -> es como un mysql_query

mirs.eof
mirs.movenext
mirs("Nombre")
etc

b-> Ejecutar una consulta
con.execute=("Update...")

Variable de aplicación mejor, ponerlo en el global.asa, y luego llamarlo con un include.

response.write(mirs("Nombre"))

Ejemplo:

<%
Set con= Server.CreateObject("ADODB.CONNECTION")
con.open "DSN=Clientes;"

set mirs=con.execute("Select * from clientes")

do until mirs.eof
response.write(mirs("Nombre"))
mirs.movenext
loop

%>

Para actualizar y borrar registros:

conexion.asp

<%
Set con= Server.CreateObject("ADODB.CONNECTION")
con.open "DSN=Clientes;"

set mirs=con.execute("Select * from clientes")

do until mirs.eof

response.write("<form method=post action=edit.asp>")
response.write("<input type=hidden name=id value="&mirs("IDCliente")&">")
response.write(mirs("IDCliente"))
response.write("")
response.write(mirs("Nombre"))
response.write("")
response.write(mirs("Direccion"))
response.write("")
response.write(mirs("Telefono"))
response.write("")
response.write("<input type=submit value=Editar>")
response.write("</form>")
response.write("<hr>")
mirs.movenext
loop

%>

edit.asp

<%
Set con= Server.CreateObject("ADODB.CONNECTION")
con.open "DSN=Clientes;"

if request.form("Borrar")="Borrar" then
set mirs=con.execute("DELETE from clientes where IDCliente="&request.form("id")&"")
response.write ("Eliminado")
else
if request.form("Actualizar")="Actualizar" then
set mirs=con.execute("UPDATE clientes SET Nombre='"&request.form("Nombre")&"', Direccion='"&request.form("Direccion")&"', Telefono='"&request.form("Telefono")&"' where IDCliente="&request.form("id")&"")
response.write ("Actualizado")
else
set mirs=con.execute("Select * from clientes where IDCliente="&request.form("id")&"")

response.write("<form method=post>")
response.write("<input type=hidden name=id value="&mirs("IDCliente")&">")
response.write ("Nombre: <input type=text name=Nombre value="&mirs("Nombre")&">")
response.write("")
response.write ("Dirección: <input type=text name=Direccion value="&mirs("Direccion")&">")
response.write("")
response.write ("Telefono: <input type=text name=Telefono value="&mirs("Telefono")&">")
response.write("")
response.write("<input type=submit name=Actualizar value=Actualizar>")
response.write("<input type=submit name=Borrar value=Borrar>")
response.write("</form>")

end if

end if
%>

Funciones

var=array(1,2,3)

Join(matriz,caracter)
Join --> una matriz en una cadena
Split(cadena,delimitador)
Split --> una cadena la convierte en array


(Bod,Byte,CCur,CDate,CDBl,Chr,Clnt,Clong,Str) -> nos convierte cualquier variable en un tipo que le digamos

chr.Asc --> código ASCII

Funciones de Fecha
Time()
Now() --> fecha y hora actual

Date()

DateAdd(Internal,Cantidad,Fecha) --> suma la fecha que le digamos

Day(Fecha) Month(fecha) Year(fecha)
hour(fecha) minute(fecha) second(fecha)

DatePart(Inervalo,Fecha) --> q (cuarto trimestre) w (semana) y (dia del año) ww (semana del año)

FormatDateTime(fecha,formato) -> formatear una fecha o una hora
FormatDateTime(fecha,1)
FormatDateTime(fecha,2)
etc

InputBox(texto,titulo,valorpred,xpos,ypos)

InStr([conocimiento],cadena1, cadena2) -> buscar una cadena en otra (buscamos la cadena 2 en la cadena 1

Left(cadena,longitud)
Right(cadena,longitud)
Mid(cadena,longitud)

Obtener partes de una cadena


« Última modificación: 27 Septiembre 2011, 16:19 pm por el-brujo » En línea

Since 2001
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Curso Ethical Hacker, opiniones sobre un curso Online « 1 2 »
Foro Libre
jpmo4 17 21,141 Último mensaje 8 Julio 2010, 14:56 pm
por unixgeek
Curso web :: IA
Foro Libre
Hadess_inf 1 871 Último mensaje 4 Junio 2010, 03:22 am
por @synthesize
Curso de STL C++
Programación C/C++
OwNet 0 1,204 Último mensaje 2 Septiembre 2010, 16:29 pm
por OwNet
Curso de DNIe
Seguridad
erawlam 2 1,142 Último mensaje 7 Mayo 2012, 15:47 pm
por erawlam
Problema con SetUnhandledExceptionFilter y Curso
Ingeniería Inversa
x64core 2 1,721 Último mensaje 9 Octubre 2012, 18:12 pm
por PeterPunk77
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines