【翻旧账】XSS姿势日常学习之PHP $_Request

## 0×01 怎么开头

这个测试的对象说来很巧,原本站点是没有添加任何过滤的,直接通过在url末尾简单的绕过即可弹框。

http://www.test.com/test.php?name='"><img src=1 onerror=alert(1)>

该漏洞已经修复,需要进行复测。

## 0×02 难度升级

fuce-01.png

上来访问一下就看到了这个,直接404,那么可能是已经修复了?还是链接已经失效(这个是自己YY的,可能点儿用没有2333)

修改为正常的url打开看看是什么情况。

fuce-02.png

可以正常访问,那已经修复了?所以用xsstrike来跑跑,前几天从twitter上看到大家都在转,正好抓到机会来测试

fuce-03.png

看到这个的时候个人还觉得这也算修复了?果然还是被扫出来,换个姿势就可以,这么简单,结果就是浏览器打开的全是404,顿时就是各种卧槽。

## 0×03 去找大神

自己通过源码看到这里在通过url进行请求的时候,有一小段js是过滤掉了url中的字符,重定义到了404的。
还是去找大神,哈哈,因为总觉得还是可以弹窗的,尽管自己可能是YY。

fuce-04.png

大神告诉以下几点:

  • xsstrike 等xss扫描器只要不是基于webkit都是很容易误报的
  • 这个点一开始自己用浏览器的js的解析逻辑,让后面的js先执行(目前看来没有方法)
  • 不从js出发,猜php源码,结合js和源码,就可以得到答案
  • 经过测试,后端是使用_requests来处理请求的,不是_get
  • 所以问题的答案就很明显了

当吃在路上出完饭的我只能一路手机搜索,一路往回奔试试自己绞尽脑汁get到的点是不是对的,23333.还好,思路正确,没毛病。

fuce-06.png

## 0×04 欠一个payload

## 0×05 聊天记录就是最好的笔记了

审计经验(php代码审计)
php有集中获得请求的方式,_get,或者_post,还可能是_request
尝试之后发现答案出来了

#### “这个点需要一个脑洞,一点也不难.”