zoukankan      html  css  js  c++  java
  • 合天实验室第四周(check your source code)

    链接:http://www.hetianlab.com/expc.do?ce=da6240f9-e4bd-4020-94d8-55ee7afc988c

    因为是web类型的题目,所以我们先在浏览器中打开这个链接。

     打开后,发现这是一个后台登陆界面。由于提示是检查源码,所以直接查看登陆界面的源代码。

     代码注释这里发现了一个叫做source.txt的文件。我们打开这个文件看看。

     1 <?php
     2 $flag = "XXXXXXXXXXXX";
     3 $secret = "xx";
     4 
     5 if(!isset($_ POST["username"]) || !isset($_ POST[" password"]){
     6 exit();
     7 }
     8 $username = $_ POST["username"];
     9 $password = $_ POST["password"]; 
    10 if (!empty($_ COOKIE["check"])) {
    11     if (urldecode($username) === "admin" && urldecode($password) != "admin") { 
    12         if ($_ COOKIE["check"] === base64_ encode($secret) . urldecode($username . $password))){
    13             echo "Login successful.
    " ;
    14             die ("The flag is ". $flag); .
    15         else {
    16             die ( "重新检查下你的cookie吧!");
    17         }
    18     else {
    19         die ("你是不是管理员心里没点数吗?");
    20     }
    21 }
    22 setcookie("ahash", base64_ encode($secret . urldecode(" admin" . " admin")), time() + (60 * 60 * 24 * 7));
    23 ?>

    解读一下这个代码(百度上面代码中出现的php函数,去理解这个代码意思)。

    从上面代码中,我们知道,想要得到flag。必须满足3个条件。

    1. check这个cookie的值不能为空。
    2. username解码后的值必须是admin,并且password解码后的值不能为admin。
    3. check这个cookie的值必须等于secret经过base64编码后,拼接字符串adminadmin解码的值。

    这个时候,我们打开bp,抓包。(账号尽量输入admin,密码输入admin以外的字符串就行,后期改包快)

    从抓包的结果中,我们可以看见发送的cookie ahash的值为0DhhZG1pbmFkbWlu

    并且没有cookie check的值。因此我们还需要去修改数据包。并且从源码中,我们知道admin和1经过url编码后的值就是username和password的值。

    使用bp自带的解码功能后。我们知道,secret的值为88(在终端下,运行ehco 0DhhZG1pbmFkbWlu | base64 -d  也可解码)。

    将admin进行url编码。

    补充:url编码的格式是16进制,十六进制格式用于在浏览器和插件中显示非标准的字母和字符。

    所以admin要用hex编码,用url直接编码,可能会没有结果。

    编码结果是%61%64%6d%69%6e

    1经过编码后

     编码结果是%31

     再将88经base64编码

     

     然后我们开始构造check,username,password。然后go

    终于拿到flag。url编码和hex编码那里的,我卡住了,最后看了大佬解答,以及百度百科对url编码的解释,才走到了flag这一步。

    上课的时候摸鱼,做题的时候,一脸懵逼。

    网安小菜鸡
  • 相关阅读:
    单链表
    找最长最短字符串
    注解
    Json字符串
    java的反射机制
    java类的加载与加载器
    String StringBuilder StringBuffer
    查看运行某类时当前的进程状态
    迷宫小游戏
    类的初始化过程、super关键字与函数绑定
  • 原文地址:https://www.cnblogs.com/jdr-gbl/p/12840802.html
Copyright © 2011-2022 走看看