segunda-feira, 29 de setembro de 2008

Uma ida ao Detran de Teresópolis


Hoje fui no Detran dar entrada na minha primeira CNH e realmente esse país não muda nada mesmo. Segunda-feira 29 de setembro de 2008, em pleno século XXI eu encontro o mesmo orgão incompetente de sempre.

Além da agencia do Detran de Teresópolis ficar fora da cidade, acredite ou não, fica nos fundos de um mercado. Junto com o que encontramos em qualquer repartição pública (computadores dos anos 80, máquinas de escrever e etc...) vi um prédio reformado pela metade ou em obras ainda. O senhor que estava atrás de mim na fila reclamava que tinha tido sua carteira caçada por ultrapassar o limite de infrações permitidas, feito o curso de reciclagem, porém o Detran aparentemente tinha perdido sua habilitação.

No dia 23 estarei retornando ao Detran para uma nova aventura... Renovar meu RG.

sábado, 27 de setembro de 2008

SQL Injection for Dummies


Cheguei a conclusão que o maior problema das pessoas que se metem a aprender SQL Injection é não saber o que é SQL e muito menos o que é o SQL Injection. Nesse post eu não vou e nem quero me aprofundar em nada, irei apenar passar uma visão geral sobre o assunto.

De acordo com a Wikipedia o SQL significa:
"Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional). Muitas das características originais do SQL foram inspiradas na álgebra relacional."
Se você não entendeu ou ficou com preguiça de pesquisar, posso resumir que o SQL é um sistema de banco de dados utilizado em larga escala.

Quando você entrou nesse blog, para esse post ser exibido o seguinte processo teve que ocorrer:


Você requeriu esta pagina ao servidor web que consultou o servidor SQL os dados desse post.

SQL Injection, como o nome já diz, constitui você injetar comandos de SQL na consulta. Considere o seguinte script PHP vulneravel a SQL Injection:


Em lugar nenhum nesse script de autenticação vemos o input do usuario ser tratado, sendo assim se o usuario entrar com o input no campo login "admin'/*" e senha vazia a consulta passa a ser:

SELECT * FROM users WHERE username='admin'/*' and password=''

Como você já deve saber /* é um comentario, tudo que vier depois dele é ignorado pelo servidor, sendo assim o servidor só verificou se o nome de usuario existe e autenticou o usuario.

Parece simples mas não é, nenhum programador é bobo de deixar um login sem verificação (ok.. alguns são.... continuando), obviamente SQL Injection pode ser feito não apenas em scripts de logins mas em qualquer coisa aonde entra o input do usuario na consulta.

Para proteger um script contra esse tipo de ataque basta verificar o input do usuario contra caracteres especiais que o seu SQL server possa interpretar. No PHP a maneira mais facil de fazer isso é passando o input pela função mysql_real_escape_string.

No meu próximo livro "SQL Injection for Lamers" irei passar algumas receitas de bolo, pode não parecer mas para escrever este artigo levei um tempo consideravel. Se você se interessou por este livro ele esta disponivel nas melhores livrarias e no site da editora O'Really.

domingo, 14 de setembro de 2008

DarkEden 2006 - 2008


Em 2006 decepcionado com a péssima qualidade do serviço oferecido pela Softon (http://www.softon.co.kr), resolvi montar meu próprio servidor de DarkEden (http://www.darkeden.com).

Mas como eu faria isso?

Com que arquivos eu montaria o meu DarkEden?

Passei alguns dias pesquisando e não achei em lugar nenhum informações sobre como montar um servidor de DarkEden. Depois de algum tempo por acidente achei um post de um chinês em um forum dizendo que tinha as sources do antigo DarkEden chinês, o T2DK (http://www.t2dk.com) e que precisava de ajuda com elas.

Eu é claro me disponibilizei, infelizmente passamos meses tentando colocar aquelas sources para funcionar mas sem sucesso. Decidimos então liberar as sources, assim se todos tivessem acesso a elas, talvez alguem fosse capaz de consertar elas. Até montamos um projeto Open Source chamado Open DarkEden (http://opendarkeden.com). Porém isso não aconteceu.

Um dia como outro qualquer esse ano, eu consegui as sources do DK2 (http://www.dk2.com.cn), não só as sources do game server, mas como também do client, das tools necessarias para editar os arquivos externos do client (*.inf, *.spk e etc..) e até as imagens do site do DK2 salvas em formato *.psd.

Em um próximo post eu conto sobre o meu trabalho com as sources do DK2.