Sızma Testlerinde Sqlite Veritabanının Kullanılması

Sızma testlerindeki çalışmaları otomatikleştirmek için temel veritabanı işlemlerinin gerçekleştirilmesine ihtiyaç duyulabilir. Bu yazıda sızma testleri sırasında ihtiyaç duyulabilecek sqlite3 komut satırı aracının temel özellikleri incelenecektir.

 

sqlite3 aracının temel kullanımı aşağıdaki gibi incelenebilir.

sqlite3 -help

Veritabanı oluşturmak için veritabanı adının belirtilmesi yeterlidir. Bu veritabanında herhangi bir veri bulunmamaktadır.

sqlite3 YeniVeriTabani.db
.databases
.tables

 

Basit bir tablo oluşturma ve bu tabloya veri ekleme işlemi aşağıdaki gibidir.

create table Tablo1(id smallint primarykey, adi varchar(30), adresi text, resim BLOB);
insert into Tablo1 values(3,’Ahmet’,’Acibadem Istanbul’,readfile(‘/usr/share/backgrounds/gnome/Flowerbed.jpg’));
insert into Tablo1 values(26,’Berna’,’Kizilay Ankara’,readfile(‘/usr/share/sparta/images/screenshot-big.jpg’));
insert into Tablo1 values(8264,’Cihan’,’Bornova Izmir’,readfile(‘/usr/share/xsser/gtk/images/xsser.jpg’));
select * from Tablo1;

 

Tablo başlıklarının gösterilmesi veya gizlenmesi için “.header” komutu kullanılabilir.

.header on
select * from Tablo1;
.header off
select * from Tablo1;

 

Varsayılan ayıraç (|) farklı bir ayıraç da kullanılabilir.

.separator “#$”
select * from Tablo1;

 

Tablodaki değerler satır satır ekrana dökülebilir.

.mode line
select * from Tablo1;

 

Tablodaki değerler kolonlar halinde ekrana dökülebilir. Kolon başlıkları da eklenerek Excel görünümü de elde edilebilir.

.mode column
select * from Tablo1;
.header on
select * from Tablo1;

 

Temel işlemlerden sonra ilk veritabanı disk sistemine kaydedilebilir ve sqlite komut satırından çıkılabilir.

.save /root/Desktop/Sqlite/IlkVeritabani.db
.exit

 

Disk sisteminde kayıtlı olan bir veritabanı, sqlite3 aracına veritabanı dosyasının adı belirtilerek veya “.open” komutu ile veritabanı dosya adı verilerek açılabilir.

sqlite3 IlkVeritabani.db
.databases
.tables
.exit

sqlite3
.open /root/Desktop/Sqlite/IlkVeritabani.db
.databases
.tables

 

Veritabanı içerisindeki bir veri (dosya) dışarıya aktarılabilir.

select writefile(‘/root/Desktop/Sqlite/YeniResim.jpg’,resim) FROM Tablo1 WHERE id=26;

 

Sızma testlerinde en çok kullanılan adımlardan birisi de CSV dosyalarını içeriye veya dışarıya aktarmadır. Hazırlanan bir CSV dosyası CSV moduna gelinerek veritabanındaki bir tabloya atılabilir.

.mode csv
.import /root/Desktop/NessusCiktisi.csv Tablo2
.tables

 

Böylece CSV içeriği veritabanına aktarılmış olur.

Veritabanı yapısı tablo ve kolon bazlı incelenebilir.

.schema
.schema Tablo1

 

Bu tablo içerisinde sorgulama gerçekleştirilebilir.

select “Plugin ID”, Name, Port, Risk From Tablo2 where port=80 and (Risk=”High” or Risk=”Medium”);

 

Veritabanında çalıştırılan bir komutun çıktısını CSV formatında dışarıya aktarım da gerçekleştirilebilir. Bunun için öncelikle CSV formatı ayarlanır, sonrasında ise dışarıya çıkarılması istenen sonuca ait sorgu yazılır.

.header on
.mode csv
.once /root/Desktop/Sqlite/VeriTabaniCiktisi.csv
select * from Tablo1;

ls VeriTabaniCiktisi.csv
cat VeriTabaniCiktisi.csv

 

sqlite3 komut çıktıları işletim sistemindeki kabuk komutları ile de kullanılabilir.

sqlite3 IlkVeritabani.db ‘select “Plugin ID”, CVSS, Risk, Host, Protocol, Port, Name from Tablo2 where Risk=”High” or Risk=”Medium”;’ | grep Apache

 

Kaynak:

https://sqlite.org/cli.html
https://localhost.exposed/2016/02/14/vlog-path-to-oscp-part-1
https://www.sitepoint.com/getting-started-sqlite3-basic-commands/

 

 

Yazarın Bilgileri

Ertuğrul BAŞARANOĞLU
Ertuğrul BAŞARANOĞLU

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Kullanabileceğiniz HTLM etiketleri ve özellikleri: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Bu sayfada incelenen konulardan doğacak sorunlar kişinin kendi sorumluluğundadır.