What privileges do you need to be able to query the sys.obj$, sys.col$ etc system tables directly?
For Oracle 9i or later, the SELECT_ANY_DICTIONARY privilege.
For earlier versions, I think you need SELECT_ANY_TABLE, and you would also need to have 07_DICTIONARY_ACCESSIBILITY = TRUE, but this is unsafe.