SQL注入(一)

sql注入篇

 基本的有:

              1、Union注入:先用常规的测试方法 and 1=1 、and 1=2 探测是否存在注入;然后order by x 探测回显位置;最后select语句查找需要的信息

              2、Boolean注入:页面只会回显yes或者no

                                            (1) 确定存在注入之后用and length(database())>=x探测数据库字段长度;

                                            (2)然后用substr(database(),1,1)='x'字符串截取函数逐 个判断数据库字符的值;

                                            (3)substr((select table_name from information_schema.tables where table_schema='sql' limit 0,1),1,1)='x'判断数据库中的表名

                                                以此类推可以查询出相应的字段名和字段值

              3、报错注入:在探测过程中错误信息会直接输出到页面,可利用报错注入获取信息,此处可利用updatexml()函数

                                     判断库名:updatexml(1,concat(0x7e,(select database()),0x7e),1)    注:0x7e是~

                                     判断表名和字段名的步骤和union注入相同

sql注入进阶:

             4、时间盲注:时间注入和Boolean注入类似,但不同的是,时间盲注利用sleep()和benchmark()函数让mysql的执行时间变长,时间盲注多于if(expr1,expr2,expr3)结                                     合使用,此if语句的含义为:如果expr1为TRUE,则返回值为expr2,否则返回值为expr3;

                                   举例:if(substr(database(),1,1)='x',sleep(5),1)   若数据库第一个字符值为x,则程序延迟5秒,否侧查询1

                                    分析:时间注入页面中,程序获取GET参数ID,通过preg_match检查参数ID中是否含有union等危险字符(要根据具体情况判断过滤了什么字符),                                                然后将参数ID拼接到sql语句中,有结果返回yes,无结果返回no

             5、堆叠查询注入攻击:堆叠查询可执行条语句;多语句之间以分号隔开,

                                                 id=1

                                                 id=1'页面返回MYSQL错误

                                                 id=1'%23页面返回正常

                                                 堆叠查询语句可为   '; select if (substr(user(),1,1)='x',sleep(3),1)%23

                                                                                   之后user()所在的查询语句和union查询相同

             6、二次查询注入攻击

             7、宽字节注入攻击:id=1

                                             id=1' 页面不会报错反而多了转义符  \

                                            当数据库编码是GBK时,可以用%df注释掉\

                                            之后进入union查询的步骤,但是由于单引号被转义,就要用到另外一种方法:嵌套查询

                                            select table_name from information_schema.tables where table_schema=(select database()) limit 0,1     之后依次进行嵌套查询表名和字段名

                                             

             8、Cookie注入攻击:cookie注入攻击中发现没有GET参数,用burpsuite抓包发现id=1或者其他参数,此时修改cookie的值,步骤同union注入相同,

             9、base64注入攻击:在URL中,参数ID的值经过base64为编码,此时可以沿用union注入,只需将参数经过base64位编码即可

             10、XFF注入攻击:通过burp抓包,在http头中发现头部参数X-Forwarded-for,简称XFF头,它代表客户端的真实IP,通过伪造xff的值可以伪造客户端IP   此后的步骤同union注入

                                                                   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

废物小袁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值