您当前位置: 首页 » 精彩好文 » 【翻译】好玩的xssqli-一种xss实现方式

【翻译】好玩的xssqli-一种xss实现方式

2017年2月15日 | 发表评论(0) 查看评论

Sql注入和xss想必大家都非常清楚,如果运气够好利用sql注入可以拿到数据库权限或者直接写shell,xss也能打到管理员cookies,但如果管理员进行了实体编码,并且过滤了所有你能想到的sql关键字,那么你还能怎么去攻击呢?

现在我们换个角度去思考一下,如果有一个不能利用的注入点,我们能不能做更多的事了?当然,老外已经对这个有一定的研究了,想必大牛们也有自己的姿势,这里给大家分享一个老外的方法:SqiXSS,老外很久之前的篇文章,想必很多人应该知道这个方法。

按照老外的方法SiXSS包括了sql和xss的综合利用。这里如果你对sql和xss不是很了解的话可以去看一下以前的文章。

这篇文章主要告诉大家如何利用一个注入点去进行xss。通过注入点进行xss可以打到和普通xss一样的效果,甚至比普通xss还要好玩。

这里我写了两个页面,

sql.php这个页面存在注入漏洞。

Filter.php对输入内容进行实体编码,当然是最简单的过滤,只是为了说明问题。没有深入完善。

在sql.php中调用了filter.php进行过滤,当我们直接在id中传入xss代码的时候,因为经过了编码,所以不会弹窗。

当我们输入单引号的时候会报错

说明存在sql注入漏洞,当然,这不是今天的重点。我们的目的是利用sql来弹窗。

这里只需要简单的构造一下便可以实现xss

http://127.0.0.1//report.php?id=1111%27%20union%20select%201,2,0x3c696d67207372633d78206f6e6572726f723d636f6e6669726d282f5853532f293e–+

到这里我们已经绕过了实体编码实现了xss,我们可以利用这个xss进行打cookies、钓鱼、弹窗等等你能想到的普通xss能做到的。

如果这里是一个insert型注入的话,你可以和利用二次注入那样来实现存储型xss

 

总结:

【原理】:数据库语句在执行前会把hex解码,而htmlspecialchars进行过滤的时候不会解码,因此可以很轻松的绕过htmlspecialchars。

【适用场景】:存在sql注入,但是跑不出数据,并且普通xss被过滤的情况。

 

 

分类:

精彩好文

| 标签:

, ,