sql injection

之前一篇文章简要的写了下网页入侵,今天把sql注入特别拿出来说明下,因为这部分在网页入侵种占的比重还是比较大的。

 

1. 获取数据库信息

比如查询商品类型,有的会用这样的语句

select * from products where category = 1

而在url中相当于products.php?category=1;

 

第一步: 首先在后面添加 order by 5;

如果不出错说明 select 选项取得的数据列为5列(>5mysql会出错,因为order by 是取输出列作为排序对象)。

这个方法可以获取select 列数。

 

第二步:现在把1换成 (select count(*) from table);

相当于sql语句变成了

 

或者

 

可以试探出数据库的表名、列名。

 

第三部:使用联合union获取有用信息

假设有两个表products email,现在要获取email的信息

网页 products.php? category=1 显示出产品类型为1的产品介绍和价格。

他的sql语句可能是 select * from products where category = 1

或者select introduce, price from products where category = 1.  只要取得列数相等就可以用联合

使用数据库联合语句union all

 

注意列数一定要相等

这时候网页上就可以看到结果出来了。

 

2. 对于数据库登录注入

登录的sql语句为select * from admin where username=$username and passowrd=$password and id = 1;

注意后面的id是用来注入的。要想登录成功必须使这条sql语句返回结果又数据。

使用union (select username,password) from admin 这句sql语句

可以把username,password换成在登录时候输入的数据即可。使从数据库中取出来的数据跟你在表单填入的数据一样即可达到登录效果。

登录的时候username表单填写1,password表单填写1

最后的sql语句是:

 

这条语句肯定是有数据的,假设一共有四列(这个自己去order by 获取),那么结果可以看到如下。

 

+----+----------+----------+-----------+

| id | username | password | privilege |

+----+----------+----------+-----------+

|  1 | 1        | 1        |         1 |

+----+----------+----------+-----------+

 

3. 自己创建超级用户

 

在url中加入

 

可以创建超级用户了。

 

4. update修改管理员密码

用户自己修改密码时

 

 

但是恶意的用户会把 ' or uid like'%admin%'; -- 作为变量的值提交给 $uid 来改变 admin 的密码,或者把 $pwd 的值提交为 "hehehe', admin='yes', trusted=100 "(后面有个空格)去获得更多的权限。这样做的话,查询语句实际上就变成了:

 

 

5. 直接添加操作系统命令

xp系统

 

对于linux系统

后面添加

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值