web安全原理(sql注入学习心得)

sql注入原理:web应用程序对用户的输入没有进行合法性的判断,前端传入后端的参数是攻击者可控的,并且带入了数据库查询,导致攻击者可以构造不同的sql语句实现对数据库的任意操作。

两个必要条件:1.参数用户可控

2.参数带入数据库查询


mysql与sql注入漏洞相关知识点:

mysql5.0版本后,mysql默认在数据库有一个information_schema库,其中有三张表需要记住,

1.schemata   存放了所有数据库的库名 schema_name

2.tables  存放了所有数据库的库名及相对应的表名 table_schema,table_name

3.columns 存放了所有数据库的库名及相对应的表名和字段名 table_schema,table_name,column_name


mysql查询语句

select 要查询的字段名 from 库名.表名    (不知道任何条件情况下)

select 要查询的字段名 from 库名.表名 where 已知条件的字段名=‘已知条件的值’ (知道一条已知条件)

select 要查询的字段名 from 库名.表名 where 已知条件1的字段名=‘已知条件1的值’ and 已知条件2的字段名=‘已知条件2的值’


limit的使用格式为 limit m,n

m为起始位置,n为取n条记录,如limit 0,1,即从第一条记录开始,取一条记录。


三个重要函数 database(),version(),user()

注释符,#     --空格     /**/

内联注释/*!code*/


攻击方式:

1.给可控参数添加单引号,and 1=1,and 1=2.试过后基本就存在sql注入,之后可采取order by 1-99语句查询该数据表的字段数量。

如该数据表字段数量为3,输入id=1 order by 3 反馈结果和id=1 order by 4反馈一样的结果而id=1 order by 4反馈结果不同,则字段数为3

2.union注入攻击:进行1步骤后,union select 1,2,3 判断在1,2,3中可以输入sql语句的位置,然后即可插入sql语句进行查询

3.boolean注入攻击:针对只反馈yes或no结果的页面,即返回的结果不会存在数据库的数据,只是特定的正确或错误

那么可以试图判断数据库名的长度

‘ and length(database())>=1 --+

类推,可以根据页面反馈的正确和错误来判断是否猜对数据库名长度

当猜对长度后,可以试图猜数据库名的名字

如用

' and substr(database(),1,1)='t' --+ 意思是截取database()的值,从第一个字符开始,每次只返回一个。这个和limt不一样,这里从1开始排序

可以采取burp爆破的方式

也可以采用ascii的字符查询,假如database()数据库名第一个为s,s对应ascii码值为115那么

' and ord(substr(database(),1,1))=115 --+即可判断是否正确,ord是将字符转换为ascii码值

4.报错注入攻击,没看懂,暂时略,页面报错之后用的查询语句看不懂

5.时间注入攻击:即利用sleep()或benchmark()等函数让MySQL的执行时间变长,从而通过判断反馈时间来判断是否存在注入。

通常与if语句结合使用,IF(expr1,expr2,expr3) 含义为如果expr1为真,则返回expr2;否则返回expr3.

如判断数据库库名长度的语句为:

if (length(database())>1,sleep(5),1)   意思是如果数据库长度大于1,则mysql查询休眠5秒,否则查询1.

6.堆叠查询注入攻击:多语句之间以分号隔开,如

';select if(substr(user(),1,1)='r',sleep(3),1)%23

7.二次注入攻击:两个不同页面结合起来,通过注册页面注册用户如将test'注册到数据库里,虽然开始转义了,但是后来通过参数id页面读取时,读取到数据库里的

用户test',带入sql语句查询导致多了一个单引号出错。

8.宽字节注入攻击:当传入1'时,单引号被转移符(反斜线)转义,一般情况下是不存在sql注入漏洞的,但是有一个特例,当数据库编码为GBK时,可以使用宽字节注入

即用%df和反斜线的编码%5c结合起来为繁体字连。则单引号成功逃逸,报出数据库错误

而后可以进一步判断注入,

1%df' and 1=1%23

1%df and 1=2%23

接着用order by查数据库表字段数量,再结合union注入

9.cookie注入攻击:修改cookie中的参数尝试攻击

10.base64注入攻击:base64编码尝试绕过waf

11.XFF注入攻击:通过burp抓包后可以看到http请求头中有一个头部参数X-Forwarded-for,简称XFF头,它代表客户端真实的ip地址,通过修改它的值来进行攻击

如将它设置为127.0.0.1' and 1=1#


sql注入绕过技术

1.大小写绕过

2.双写绕过

3.编码绕过,如base64,url全编码(和url普通编码不一样)而且是编码两次

4.内联注释绕过注入:

如id=1 /*!and*/ 1=1

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容