sqli-labs lesson 24-25a
less 24:
注意一开始登录后出现无法返回或者跳转页面的话是因为一开始解压sqli-labs文件时出现
logged-in.php文件不正确同名文件有问题。
直接重新解压一边全部替换掉所有文件即可。
本关是二次排序注入的范例。二次排序注入也称为存储型注入,就是将可能导致sql注入的字符
先存入到数据库中,当再次调用这个恶意构造的字符时,就可以触发sql注入。
思路:
1.通过构造数据的形式,在浏览器或者其他软件中提交HTTP数据报文请求到服务端进行处理,提交的数据报文请求中可能包含了黑客构造的SQL语句或者命令。
2.服务端应用程序会将黑客提交的数据信息进行存储,通常是保存在数据库中,保存的数据信息的主要作用是为应用程序执行其他功能提供原始输入数据并对客户端请求做出响应。
3.黑客向服务端发送第二个与第一次不相同的请求数据信息。
4. 服务端接收到黑客提交的第二个请求信息后,为了处理该请求,服务端会查询数据库中已经存储的数据信息并处理,从而导致黑客在第一次请求中构造的SQL语句或者命令在服务端环境中执行。
5.服务端返回执行的处理结果数据信息,黑客可以通过返回的结果数据信息判断二次注入漏洞利用是否成功。
例如:先注册一个admin'#的账号,接下来登录该账号修改密码,此时修改的密码是admin用户的密码。
Sql语句变为UPDATE users SET passwd="New_Pass" WHERE username =' admin' # ' AND password=' ,也就是执行了UPDATE users SET passwd="New_Pass" WHERE username =' admin'
下面我们假设已知用户名和密码是 admin admin 。
先创建一个admin'#用户并设置密码为123456
等5秒后页面自动跳转,用注册好的账号登录,并修改密码为135246
logout返回主页面,用135246登录admin用户:
登录成功!和我们上面所说的原理一样的,因为本关对于输入的字符串长度有限制,所以不演示执行别的命令的情况
less 25:关于WAF绕过
WAF(Web Application Firewall)web应用防火墙
在less 23 我们用的是;%00来代替的#或者--+ 因为哪些都被空格替换掉了
在less 25也是一样的 我们看一下源码:
可以看到这里不区分大小写对or和and进行了替换,全部替换成空格。
所以当我们键入带有or和and字段的时候要注意这里的替换函数,主要有2种办法解决:
1.双写:
例如:orderby改为oorrder by , password 改为 passwoorrd ,information改为infoorrmation
2.用符号替换or和and
例如:or用|| and用&& (基本用于报错注入)
下面演示:双写方法WAF绕过注入(这里#好像不可以注释所以采用--+或者;%00)
确定回显字段:
剩下payload基本差不多,注意带有or的字符串双写即可,下面直接附上结果:
?id=0'union select 1,2,group_concat(concat('-',username,passwoorrd) from users) --+
报错注入方法演示:
这里or换为||即可,还是用updatexml函数:
?id=1' || updatexml(1,concat(0x7e,(select username from users limit 0,1),0x7e),1) --+
执行:?id=0' || updatexml(1,concat(0x7e,(select passwoorrd from users limit 0,1),0x7e),1) --+
less 25a
观察源码:
id参数没有包裹;同样是用空格替换了or和and且不区分大小写。
那么和less 25没区别了 不要闭合前面的 ' 直接构造payload即可