Erdem YILDIZ

Siber Güvenlik Araştırmacısı
Python Geliştiricisi
Linux Hayranı

Python ile Url Üzerinden SQL Injections Olup Olmadığını Bulma!!!

Merhaba arkadaşlar bugün python ile yazmış olduğum script'te verdiğiniz url üzerinden , url'ın sonuna meta karakter ekleyerek basitçe SQL Injections olup olmadığını bulup sizlere gösteren script'in amacını , kodlarını ve video ile kullanımı göstereceğim. Haydi bir giriş yapalım...

Arkadaşlar bu scripteki amacım şuydu.Pek çoğumuz url'in sonunda "?id=" böyle bir ifade gördüğünde meta karakter ekleyerek basit düzeyde SQL Injection olup olmadığını görmeye çalışıyor.Bende bu yazımı hafta sonuna denk getirdiğim için bu amaca uygun basit mantık ile python üzerinde çalışan bir script yazmak istedim.Bu script'e sizden url istiyip sonuna meta karaterler ekleyerek hedefe request atarak bir SQL Injection olup olmadığını gösteriyor.Eğer bir açık var ise size açığın gerçekleştiği url'i meta karakterle gösterip işlemi bitiriyor.

Kötü kod yazdığım için üzgünüm.Daha iyi bir yazılımcı olmak için yazılım geliştirme ve problem çözme yeteneğim üzerinde hala uğraşmaktayım.
                                        # SIF.py
                                        # -*- coding: utf-8 -*-
                                        import requests

                                        class SQL():
                                            def __init__(self):
                                                self.meta = ['&', ';', '`', "'", '\\', '"', '|', '*', '?', '~', '<', '>', '^', '(', ')', '[', ']', '{', '}', '$']
                                            def Scan(self):
                                                self.target = raw_input("Please enter the target url :")
                                                for i in self.meta:
                                                    new=self.target+i
                                                    res = requests.get(new)
                                                    if "mysql" in res.text.lower():           # MYSQL veri tabanlarında verilen hata
                                                print res," --> MYSQL Error "
                                                    break
                                                    elif "native client" in res.text.lower(): # MSSQL veri tabanlarıda verilan hata
                                                print res," --> MSSQL Error"
                                                        break
                                                    elif "syntax error" in res.text.lower():  # POSTGRES veri tabanlarında verilen hata
                                                        print res," --> POSTGRESQL Error"
                                                        break
                                                    elif "ORA" in res.text.lower():           # ORACLE  veri tabanlarında verilen hata
                                                        print res," --> ORACLE Error"
                                                        break
                                        if __name__=="__main__":
                                            print "Welcome Sql Injection Founder"
                                            s = SQL()
                                            s.Scan()

                                        

Yukarıda paylaşmış olduğum kodda bir sıkıntı yada yapılabilecek iyileştirmeler için bana ulaşabilirseniz çok sevinirim.Okuduğunuz için çok teşekkür ederim.Esen kalın :)