2010-09-16 18 views
8

Mon collègue n'est pas sûr avec son code et permet à un utilisateur de télécharger un fichier SQL à exécuter sur le serveur. Il bandes sur des mots clés dans le fichier tels que "EXEC", "DROP", "UPDATE", "INSERT", "TRUNC"Comment exploiter "EXEC @sql"?

Je veux lui montrer l'erreur de ses moyens en exploitant son EXEC (@sql)

Ma première tentative sera avec 'EXEXECEC (N''SELECT ''You DRDROPOPped the ball Bob!'')'

Mais il pourrait filtrer tout en boucle.

Y a-t-il un moyen d'exploiter le code de mon collègue? Ou filtre-t-il suffisamment les mots clés? Edit: Je lui ai demandé de vérifier son code. Si le code contient un mot-clé, il ne l'exécute pas. J'essaie toujours de comprendre comment exploiter cela en utilisant la conversion binaire.

+1

+ 1 Pour une question aussi géniale. Nous devrions exploiter nos collègues plus souvent. –

+0

Donnez-nous simplement l'URL et consignez les téléchargements! – Quassnoi

+0

En ce qui concerne votre première tentative: êtes-vous en train de nous dire que votre collègue essaie toujours d'exécuter un morceau de code téléchargé * après * qu'il a trouvé un 'EXEC' là-bas? – Quassnoi

Répondre

5
  1. Dites à votre collègue qu'il est un crétin.

  2. Faire une obfuscated SQL query, quelque chose comme:

    select @sql = 0x44524f5020426f627350616e7473

Cela nécessitera quelques ajustements en fonction de ce que le reste du code ressemble, mais l'idée est d'encoder votre code en hexadécimal et exécutez-le (ou plutôt, laissez-le être exécuté). Il y a d'autres façons d'obscurcir le code à injecter.

Vous avez un énorme trou de sécurité là-bas. Et le plus drôle est que ce n'est même pas quelque chose qui doit être réinventé. La meilleure façon d'empêcher de telles choses de se produire est de créer et d'utiliser un compte avec les permissions correctes (par exemple: ne peut effectuer que des requêtes select sur les tables x, y et z).

+1

hee - juste au cas où vous ne saviez pas ce sort et quand il est traduit en ascii il se traduit par déposer des bobspants –

+0

Hehe, ce code ne fonctionne pas tout à fait –

+0

Bon appel sur le compte de l'utilisateur.Cela va résoudre son problème à coup sûr. –