SQL注入不同位置的分析

1.select注入

1.注入点在select_expr

$sql = "select ${_GET=['id']},content from wp_news"

此时可以采取时间盲注对数据进行获取,不过根据Mysql的语法,我们有更优的方法 ,利用别名即

可以把1换成(select password from user)

时间注入的方法:,因为注入点在前面位置,自由度很高,甚至可以查询其他表格,不过还是要更据后面显示文本的逻辑(输出字段值并不相同,所有还是采用时间盲注)

2.注入点在table_reference

上面的sql查询更改如下:

$sql = "select title from ${_GET['table']}"

我们任然可以用别名的方式直接取出数据,如

select title from (select pwd as title from wp_user)x

  1. (SELECT pwd AS title FROM wp_user) 是一个子查询,它从 wp_user 表中选择 pwd 列,并将 pwd 列的名称重命名为 title。子查询创建了一个临时的结果集,其列名为 title
  2. 外部的查询 SELECT title FROM ... 然后从这个临时结果集中选择 title 列。
  3. x 是对子查询结果集的别名。在 SQL 中,子查询在它们被用作另一个查询的来源时必须被命名(即使这个名字在后续的查询中没有被直接引用)。

 

在不知道表明的情况下,可以先从infomation_schema.tables中查询表明,如果有引号要先将引号闭合

3.注入点在where或having后

sql查询语句如下:

$sql="select title from wp_news where id = ${_GET[id]}"

这种情况是最常见的查询语句,按照不同类型闭合即可

4.注入点在group by或order by 后

pass

5.注入点在limit后

limt后的注入比较简单,通过改变数字的大小,页面会显示更多或者更少的数据,由于语法的限制前面的字符注入的方法不可行了

2.INSERT注入

1.注入点位于tbl_name

如果通过注释符注释后面的句子,则可直接插入特定数据到想要的表内,如管理员表

$sql = "(INSERT INTO {$_GET[''table]} values(2,2,2,2)");

开发者预想的是,控制table的值,从而插入新闻数据。由于可以控制表名可以直接构造SQL

table = wp_user values(2,'newname','newpass')#

2.注入点位于values

假设语句如下:
INSERT INTO wp_user VALUES(1,1,'可控位置');
此时可先闭合单引号,然后另行插入一条记录,通常管理员和普通用户在同一个表,此时便可以通过表字段来控制管理员权限。注入语句如下: INSERT INTO wP_user VALUES(1,θ,'1'),(2,1,'aaaa’);
如果用户表的第2个字段代表的是管理员权限标识,便能插入一个管理员用户。在某些情况下,我们也可以将数据插入能回显的字段,来快速获取数据。假设最后一个字段的数据会被显示到页面上,那么采用如下语句注入,即可将第一个用户的密码显示出来: INSERT INTO w._user VALUES(1, 1,'1'),(2,2,(SELECT pwd FROM wp_user LIMIT 1));

一开始没有数据:

执行后

插入了两条数据

3.UPDATE注入

UPDATE注入语句适用于数据库记录的更新,如用户修改自己的文章、介绍信息、更新信息

update wp_user set id=3 where user = '23'

当id数据可控时

可以修改多个字段的数据如

update wp_user set id=3,user='xxxx' where 'user=23'

其余位置的注入点与select注入类似

4.DELETE注入

DELETE注入大多在WHERE

$sql = DELETE FROM wp_news WHERE id = {$_GET['id']}

 对id参数进行注入时,稍有不慎就会导致where后的值为Ture,导致整个表被删除

通常使用‘and sleep(1)让where后的结果返回为false,后续和时间注入一样

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值