プログラミング 暗算でもできるけど
#include <stdio.h>
int main(){
int i,j,k,l;
k=(((10/2*4/10*4/2)+97)*10)-10;
for(i=2;i<=k;++i){
l=0;
for(j=2;j<i;++j){
if(i%j==0){
l=1;
break;
}
}
if(l==0)printf("%d\r\n",i);
}
return 0;
}
$ gcc -o aaa PG-2.c
$ ./aaa | head -10
2
3
5
7
11
13
17
19
23
29
当日は、OSINT問題として解いてしまったので、プログラミングと向き合う
#include <stdio.h>
int main(){
int i,j,k,l,m,ans;
m=0;
k=100000000;
for(i=2;i<=k;++i){
l=0;
for(j=2;j<i;++j){
if(i%j==0){
l=1;
break;
}
}
if(l==0){
m++;
if(m==68){
ans = i;
}
if(m==314){
ans = ans + i;
printf("%d\r\n",ans);
break;
}
}
}
return 0;
}
$ gcc -o aaa PG-2_kai.c
$ ./aaa
2420
プログラミング formjacking
目grepすると、 +'&exp-date='
や +'&cvc=
などが見えるので、クレジットカード情報を送信してる場所は何となくわかるが。。。
難読化されている Javascript を
で可読化する。
https://pg3.2025winter-cybercontest.net/pg3?cardnumber=1&exp-date=1&cvc=1&Skimming=true
にアクセスするとフラグがとれたらしい。
こっち ↓はよくわからん
ネットワーク 3 Way Handshake
攻撃されている 192.168.123.115 でフィルタし、 SYN+ACKっを返しているパケットを検索し、空いているポートを特定。
特定したポートは、CyberCheffでソートした
ネットワーク さあ得点は?
Range: bytes=5-0,1-1,2-2,3-3,4-4,5-5,6-6,7-7,8-8,9-9,10-10
をぐぐると、apache_byte_range_server_dos.phpなどから CVE-2011-3192 とわかる。
あとは CVE-2011-3192 mitre と本家をググり、
Learn more at National Vulnerability Database (NVD)のリンクをクリックすれば CVSS2.0の数値がわかる。
ネットワーク decode
WireSharkにまとめてドロップできることを知らなかった。
ただし、まとめてドロップしても、httpでエクスポートできるのは、猫だけだった。
TCPストリームを
ストリーム番号をずらしながら緻密に追跡すると、ストリーム番号=12でネコの写真とは思えないbase64に出会うので、答えと確信できる。
Web 簡単には見せません
robots.txt のクロールを禁止設定
Disallow:/red/
Disallow:/gold/
Disallow:/blue/
から、フォルダ構成を認知し、アクセスしてたどり着くという流れ。
Web 整列!
ID
Data
flagSeq
の列があり、flagSeq
順に並べると、Data
にフラグが見えそうだが、}
が無く、途中で切れている
ID
カラムに存在している Up
ボタンを押すと、?sort=id+ASC
にリダイレクトされ、ID
の昇順になる
?sort=id+ASC
を
?sort=flagSeq+ASC#
または
?sort=flagSeq+ASC--
にして、flagSeq
順に並べ LIMITをコメント化する
Web 直してる最中なんです
/etc/WE-3にフラグがあるらしいので、パストラバーサル問題を疑う。
<!-- <button onClick="dlFIle('WE-3-01')">ダウンロード</button> -->
function dlFIle(file){
var dataS = 'fName=' + file;
var xhr = new XMLHttpRequest();
xhr.open('POST','/secret/download.php');
xhr.send(dataS);
xhr.onload = function() {
var strS = xhr.responseText;
};
}
↑こんなのが見つかるので、
┌──(kali㉿kali)-[~]
└─$ curl -X POST --data-urlencode 'fName=../../../../../../etc/WE-3' https://we3-prod.2025winter-cybercontest.net/secret/download.php
flag{fGrantUB56skBTlmF14mostFP}
Web 直接聞いてみたら?
data=W3sibmFtZSI6Im5hbWUiLCJ2YWx1ZSI6Im9uIn1d
を送信したら
[["name","BLACK SMITH"]]
が返ってくる
W3sibmFtZSI6Im5hbWUiLCJ2YWx1ZSI6Im9uIn1d
をデコードすると
[{"name":"name","value":"on"}]
[{"name":"flag
","value":"on"}]をBase64して送信すれば、フラグがとれそう
フォレンジック 露出禁止
192.168.100.103 - - [10/Jul/2024:15:36:05 +0900] "GET /mypage.php?sesid=MTcyMjMxMjQxNywzLHVzZXIzCg== HTTP/1.1" 200 281
base64でデコードすると1722312417,3,user3
と当時のセッション有効期限ぽいのがあるので、
1738494799,6,user1
をbase64して送った
フォレンジック 成功の証
FTPでブルートフォースしてる
フォレンジック 犯人はこの中にいる!
グローバルアドレスっぽい 59.214.32.56 からポートスキャンが行われている
MACアドレスは、00:0c:29:4d:c2:33
フィルタすると、同じMACアドレスのローカルIPアドレスがある。
フォレンジック InSecureApk
MainActivityを追う
入力値は16文字が正解
"VUSTIq@H~]wGSBVH" = SecretGenerater.decode(入力値)
SecretGenerater.decode関数はどこ?
native関数「checkNative」へたらいまわし
を Ghidoraで解析
checkNativeたしかに存在
入力値を0923200802022025とxorしてる
"VUSTIq@H~]wGSBVH" = "0923200802022025" ^ 入力値
トリビア 排他的論理和
compare ^ pattern3 でフラグが見える
フラグの中身は IPアドレス なので それっぽくなるか確認
なった。