【web安全】sql显错注入之get注入的基本流程

幸运草 2020年3月31日21:46:37安全防范评论阅读模式

 注入:注入攻击的本质就是把用户输入的数据当做代码执行。

这里有两个关键条件:
1、 用户能够控制输入
2、 原本程序要执行的代码,拼接了用户输入的数据然后进行执行

显错注入的基本流程:

判断是否存在注入点 –> 猜测字段数 -> 寻找输出点 -> 利用系统自带库查询表名,字段名 –> 拿到想要的数据

古老的判断方法

判断是否存在注入

1=1 页面正常
1=2 页面不正常

and 和 or 或

真 and 真 =真
真 and 假 =假
1=1 (成立)
1=2(不成立)

select  * from news where  id = 1 and 1=1

id=1 真 1=1 真 页面正常
id=1 真 1=2 假 页面不正常

简单的判断方法:

加’号,会报错就存在注入,不报错就不存在注入
程序是一个严谨的东西,引号要成双成对,只有一个引号会报错

方法三:

可以在id的数值后面减一
id=2是页面a,id=1是页面b
2-1如果显示页面b,那2-1 中-号是运算符号,它起了作用,如果是字符串就不会起作用

方法四:

在后面加 or sleep(5) 让页面休眠5秒,如果休眠了,那么就存在注入

猜测字段数:

order by
order by 5,如果页面显示正常就存在5个字段,反之即不存在

找到输入点:

如果字段数有5个字段就是
union select 1,2,3,4,5

利用自带库查询表名,字段名:

union select 1,2,3,4,database()
在回显点5处得到数据库的名字,

union select 1,2,3,4,table_name from information_schema.tables where table_schema=’数据库的名字’ limit 0,1

在回显点5处得到表名

union select 1,2,3,4,column_name from information_schema.columns where table_schema=’数据库的名字’ limit 0,1

在回显点5处得到字段名

拿到数据:

union select 1,2,3,4,字段名 from 表名 limit 0,1

题外话:

`反引号
在js中可以代替(‘
在php中可以直接执行系统命令
联合查询是可以用
union all select 代替 union select
因为有的数据库是不支持union select

本文来源于:【web安全】sql显错注入之get注入的基本流程-变化吧
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 加入Q群
  • QQ扫一扫
  • weinxin
幸运草

发表评论