sql 注入相关知识 ctfhub文件上传 ctfshow web入门文件包含

目录

ctfhub文件上传

无验证

前端验证

​编辑

.htaccess

 MIME绕过

00截断

双写后缀

 ​编辑

文件头检测

ctfshow web入门文件包含

web 78

 web 79

sql 注入相关知识

相关数据库语句

创建表格和插入数据

基本查询操作

 更新操作

删除操作

常用查库查表操作

sqli-labs靶场 less-1


ctfhub文件上传

无验证

上传一句话木马,打开蚁剑连接

 

 上文件管理,打开html目录即可得到flag。

前端验证

发现该网站不允许上传php文件,将文件后缀改为jpg,然后抓个包,再改一下文件名。

连接蚁剑,找到文件。

.htaccess

通过上传一个.htaccess文件到服务器,那么服务器之后就会将特定格式的文件以php格式解析。

先写一个.htaccess文件,上传,然后再上传一个jpg文件。

下面这条语句是将所有的文件解析为php文件

也可以使用 AddType application/x-httpd-php .png   //将png文件解析为php文件

 

 MIME绕过

是指服务器会对我们上传的文件类型进行检查,只有上传文件类型在白名单中,才能上传成功,我们上传一个php文件,然后抓包,将content-type改成image/jpeg

然后上传,连接蚁剑,找到flag文件

这题也可以使用前端验证那道题的方法。

00截断

上传jpg文件,进行00截断,连接蚁剑。

双写后缀

 

 上传了一个文件2.php,发现php不见了,这题应该是过滤了php。

试试会不会过滤第二次,上传的文件名为2.pphphp。

连接蚁剑

文件头检测

用画图工具画一个简单的png图片(复杂的可能报错)上传,抓包,文件名后缀改为.php,文件内容加上一句话木马。

 用蚁剑连接。

ctfshow web入门文件包含

web 78

 web 79

sql 注入相关知识

相关数据库语句

打开navicat,连接数据库。

创建表格和插入数据

CREATE TABLE 表名(
	元素1 数据类型,
	元素2 数据类型,
	.....
);
INSERT INTO 表名 VALUES
	(....),
	(....);

基本查询操作

-- SQL 语句基本的查询操作 查
SELECT * FROM
表名;																				
SELECT 元素1,元素2,.... FROM 表名 WHERE    条件;						
SELECT username FROM 表名 LIMIT 2;	
SELECT username FROM 表名 LIMIT 2 OFFSET 2;	
-- ORDER BY 表示根据第几列进行排序(常用来判断列数)
SELECT username FROM 表名 ORDER BY ID DESC;
-- 降序
SELECT username FROM 表名 ORDER BY ID ASC;
--升序
SELECT username FROM 表名 WHERE username REGEXP "a";	
SELECT CONCAT(Id,username) FROM 表名;
-- 将查询结果用,连接, 然后给查询结果命名为test
SELECT GROUP_CONCAT(username SEPARATOR ',') AS test FROM 表名;
-- 联合查询
SELECT username, password FROM 表名 union select un,pw FROM 表名;

 更新操作

UPDATE 表名 SET username='121qqqq' WHERE ID=3;

删除操作

DROP TABLES 表名;
ALTER TABLE 表名 DROP COLUMN username;
DELETE FROM 表名 WHERE username='b';

常用查库查表操作

-- 常用的查库,表,列,字段操作
SELECT SCHEMA_NAME FROM information_schema.SCHEMATA;

SELECT TABLE_NAME FROM information_schema.`TABLES` WHERE TABLE_SCHEMA='0707sql';

SELECT COLUMN_NAME FROM information_schema.`COLUMNS` WHERE TABLE_NAME='hello';

SELECT username,password FROM 0707sql.Hello;

sqli-labs靶场 less-1

试试手工注入

出现了语法错误,因为sql中引号是成对出现的,单个引号出现语法错误

上面上传的参数本来应该返回id = ‘1’的用户信息,但是什么也没返回,说明上面2=3为假,整个式子为假,查询条件为假。

我们知道mysql自带的虚拟数据库information_schema,里面保存了许多数据库的信息

SCHEMA_NAME:列出 MySQL 实例中的所有数据库名称。
TABLE_NAME:列出指定数据库中的所有表名称。
COLUMN_NAME:列出指定表中的所有列名称。
TABLE_SCHEMA:列出指定表所属的数据库名称。

里面有许多表:

schemata表:提供有关数据库的信息。其中一个字段为schema_name,记录了数据库名
tables表:存储数据库中表的信息,table_name列,table_schema列
columns表:存储表中的列信息,有和tables表相同的table_schema、table_name,column_name列记录了列名

下一步我们可以通过访问这个虚拟数据库获取信息。

我们首先需要知道用户信息有多少字段

 发现有3个字段

id设为0是为了不让第一个数据库里查询到的东西覆盖到第二个。

然后获取security数据库下的表名

然后获得users表的列名

然后可以获取用户信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值