Releases

0.4 : latest release

all releases

Requirements

You will need the following perl modules :

  • LWP::UserAgent
  • DBD::SQLite
  • WWW::Mechanize

And a proper Term::ReadLine package is definitely recommended (yet not mandatory)

Or, if you are on a debian system :

apt-get install libwww-perl libdbd-sqlite3-perl libwww-mechanize-perl libterm-readline-gnu-perl

You will probably also want to install sqlite3, the command line interface for SQLite 3.

It also requires previous SQL injection knowledge, and.. well.. a brain helps.

Changelog

Version 0.4

New Features / Improvements

New "brute" command, to bruteforce the names of the tables and columns (dictionnary / brute force).

Multithreading support for inband queries.

Added option to convert spaces to /**/

Added version information display when starting sqlsus.

Bug Fixes

Fixed a bug where "get columns" would use one file descriptor per column when storing the structure in the local sqlite db, which could result in a croak because of too many files opened.

Small fixes/enhancements here and there.

Version 0.3

New Features / Improvements

Full SQLite backend, storing queries / results, databases structure, variables into a local SQLite database.

Added "clone" command to clone some columns, a table, or the full database into a local SQLite database.

"clone" has a resume ability, allowing to continue accross sessions.

Rewrite of the blind injection engine (A LOT faster now):

  • keep all the threads busy with micro tasks (huge speed improvement)
  • regular expression matching for each item, prior to bruteforcing (huge drop in the number of hits required)
  • progress meter

Added cookie support.

Possibility to change the current database ("use xxx"), and still be able to use all the commands transparently

Better query shortening, allowing even more data to be fetched per server hit.

Use of BINARY for inband injections, to avoid collation issues.

User controlled "UNION SELECT" string

Got rid of IPC::Shareable, using socketpair() instead.

Added "test" command for boolean query testing from the command line (blind mode).

Inband injection is now only contained in subqueries, to allow more complex sql injection scenarios.

Improved "get columns" to minimize the hits in the inband query scenario.

Improved the web crawler to minimize the hits.

exec mode STDERR redirected to STDOUT in shell/backdoor.php

Minor improvement of some commands behaviours (show all / show db / set).

Added, modified, and removed some options in conf.pm, as well as via "set"

sqlsus does not die anymore if addhistory is not available from the Terminal module.

Lots of small changes...

Bug Fixes

Blind injection columns result are now always properly ordered

Multiple rows inband injection doesn't stop on an empty item if it is last on one fetch anymore

Only loop on relevant HTTP errors, not all errors > 400

The web crawler now properly loads HTTP proxy / credentials / cookies.

"eval" now works properly.

"get count" now caps to max_sendable.

URI encoding of the characters + and # when using get

Changed the way sqlsus finds the suitable columns for injection, to avoid false positives. Lots of small bug fixes...

Version 0.2

Improvements

No longer look for error messages in the HTML when trying to guess the number of columns in a inband mode injection, directly look for expected hex values instead.

added sleep_between_hits option : basic sleep() after each hit.

added max_subqueries option : maximum number of subqueries to use per query.

added max_array_elements option : above which data will be dumped to disk (to $dump_array_file), to avoid huge RAM consumption when fecthing a huge amount of data

added some core options.

allowed more variables to be changed via "set"

speeded up the stacking function.

added a progress indicator for inband mass queries, telling which rows are being fetched at the moment

Bug Fixes

fixed an inconsistency that prevented the results from being logged with the same charset as they were displayed

now correctly displays what has been fetched if the user breaks using ctrl+c

lots of fixes here and there

Version 0.1

First release