关于神奇的@功能简要分析
来源: 贺宇轩 Move on的日志
人人网又一个搞笑小漏洞火了,利用的是@功能。
比如输入
@啦啦啦啦啦(265323688) (265323688)
(注意[两个右括号]后都有个空格)
这样就得到@我的效果(因为数字是我的id~),同时名字去是啦啦啦啦啦……
ok以上是现象,接下来做一点简要的小分析,欢迎各位指正!
人人网@原理
当留言的正则表达式出现如下内容时,将会触发@功能:
(Python写法) r'@(.*)\(\d+\) '
(Preg/PHP写法) '|@(.*)\\(\\d+\\)| '
(汉字部分为贪婪的)
总之就是@一些汉字(一些数字) 这样的写法(正则写得简单了点,‘一些汉字’支持大部分中英文标点……网友证实。显然括号就别再写了)
通过正则取得数字后,会验证数字id对应的人名是否与‘一些汉字’相同,若不相同,启动过滤功能——即在右括号前加一空格,如@啦啦啦(1231231 ),这样就使得非法@失效。
当使用正则将非法@都处理完毕后,再使用上述的正则表达式进行处理,但这次就不过滤了!于是直接生成链接(以数字对应id的用户为href,以‘一些汉字’为innerText的anchor),但此时不会通知被@好友了。。。
结论:你想利用漏洞的话,两段数字中,后一段必须是真实的,而前一段可以随便填写(生成的链接也指向了不存在的人~)
最后请注意格式什么的。
ok,以上内容不适合科普。
但是这样,是不是可以搞一些XSS什么的呢?
毕。
来源: 贺宇轩 Move on的日志
人人网又一个搞笑小漏洞火了,利用的是@功能。
比如输入
@啦啦啦啦啦(265323688) (265323688)
(注意[两个右括号]后都有个空格)
这样就得到@我的效果(因为数字是我的id~),同时名字去是啦啦啦啦啦……
ok以上是现象,接下来做一点简要的小分析,欢迎各位指正!
人人网@原理
当留言的正则表达式出现如下内容时,将会触发@功能:
(Python写法) r'@(.*)\(\d+\) '
(Preg/PHP写法) '|@(.*)\\(\\d+\\)| '
(汉字部分为贪婪的)
总之就是@一些汉字(一些数字) 这样的写法(正则写得简单了点,‘一些汉字’支持大部分中英文标点……网友证实。显然括号就别再写了)
通过正则取得数字后,会验证数字id对应的人名是否与‘一些汉字’相同,若不相同,启动过滤功能——即在右括号前加一空格,如@啦啦啦(1231231 ),这样就使得非法@失效。
当使用正则将非法@都处理完毕后,再使用上述的正则表达式进行处理,但这次就不过滤了!于是直接生成链接(以数字对应id的用户为href,以‘一些汉字’为innerText的anchor),但此时不会通知被@好友了。。。
结论:你想利用漏洞的话,两段数字中,后一段必须是真实的,而前一段可以随便填写(生成的链接也指向了不存在的人~)
最后请注意格式什么的。
ok,以上内容不适合科普。
但是这样,是不是可以搞一些XSS什么的呢?
毕。