xss-labs靶场(1-5)
前言
这是一个弹窗即胜利的靶场,并没有太多对xss的利用,主要就是学习应对各种存在xss漏洞的场景。这种靶场就存在一个显而易见的问题,直接前端随便改个标签就能过(onclick来了全杀了),当然了我们为了学习,还是要尊重一下题目的,顺便认识几个没见过的php)。
第一关
页面
啥都没有,看到URL里面get一个name,?name=试试,没问题直接过。
源码
没有任何过滤,直接输出。
第二关
页面
有一个表单,看到URL里面get了一个keyword,就是从输入的这个表单里get。试试直接来:
发现输入的值被放在了标签里,那么我们构造标签闭合,让script独立出来,尝试输入">//,解决。
源码
htmlspecialchars:将预定义的字符"<"和">"转化为html实体,也就是失去了原来的语法特性。
把读到的str放在标签里,没有其他问题,直接构造闭合即可。
第三关
页面
有一个表单,和上一关很像,尝试一下上一关的">//,发现没有弹窗,看一眼标签:
发现尖括号和引号变成了冷冰冰的实体(bushi但queshishi),放弃闭合标签另起炉灶的想法,改成直接修改这个标签,加个onclick属性,构造闭合:' onclick='alert(1)
解决!
源码
把str经过htmlspecialchars标签处理后输入到标签里,丧失了生机(,没有其他过滤。
第四关
页面
一个表单,惯例,尝试">:
发现尖括号被过滤掉了,尝试构造onclick:
搞定!
源码
str_replace的过滤区分大小写,与之相对应的有一个str_ireplace是不区分大小写的。过滤掉了尖括号,无其他过滤。
第五关
页面
惯例,来一个">:
发现script被过滤了,尝试onclick:
发现on也被过滤了,那我们就采取第三种办法,构造href链接!输入">:
点击按钮旁边的链接,通过。
源码
过滤了
TRANSLATE with| Arabic | Hebrew | Polish |
| Bulgarian | Hindi | Portuguese |
| Catalan | Hmong Daw | Romanian |
| Chinese Simplified | Hungarian | Russian |
| Chinese Traditional | Indonesian | Slovak |
| Czech | Italian | Slovenian |
| Danish | Japanese | Spanish |
| Dutch | Klingon | Swedish |
| English | Korean | Thai |
| Estonian | Latvian | Turkish |
| Finnish | Lithuanian | Ukrainian |
| French | Malay | Urdu |
| German | Maltese | Vietnamese |
| Greek | Norwegian | Welsh |
| Haitian Creole | Persian |
- 中文(简体)
- 中文(繁体)
- 丹麦语
- 乌克兰语
- 乌尔都语
- 亚美尼亚语
- 俄语
- 保加利亚语
- 克罗地亚语
- 冰岛语
- 加泰罗尼亚语
- 匈牙利语
- 卡纳达语
- 印地语
- 印尼语
- 古吉拉特语
- 哈萨克语
- 土耳其语
- 威尔士语
- 孟加拉语
- 尼泊尔语
- 布尔语(南非荷兰语)
- 希伯来语
- 希腊语
- 库尔德语
- 德语
- 意大利语
- 拉脱维亚语
- 挪威语
- 捷克语
- 斯洛伐克语
- 斯洛文尼亚语
- 旁遮普语
- 日语
- 普什图语
- 毛利语
- 法语
- 波兰语
- 波斯语
- 泰卢固语
- 泰米尔语
- 泰语
- 海地克里奥尔语
- 爱沙尼亚语
- 瑞典语
- 立陶宛语
- 缅甸语
- 罗马尼亚语
- 老挝语
- 芬兰语
- 英语
- 荷兰语
- 萨摩亚语
- 葡萄牙语
- 西班牙语
- 越南语
- 阿塞拜疆语
- 阿姆哈拉语
- 阿尔巴尼亚语
- 阿拉伯语
- 韩语
- 马尔加什语
- 马拉地语
- 马拉雅拉姆语
- 马来语
- 马耳他语
- 高棉语