PicoCTF2023 - webx4,gskillx6,revx3
Generall Skill
money-ware
Description:
Flag format: picoCTF{Malwarename} The first letter of the malware name should be capitalized and the rest lowercase. Your friend just got hacked and has been asked to pay some bitcoins to 1Mz7153HMuxXTuR2R1t78mGSdzaAtNbBWX. He doesn’t seem to understand what is going on and asks you > for advice. Can you identify what malware he’s being a victim of?
Hint
Some crypto-currencies abuse databases exist; check them out! Maybe Google might help.
Solution
Trước hết thì đề bài cung cấp một cái token hay gì đó liên quan tới bitcoin và yêu cầu tìm tên mã độc gì đó liên quan tới token này.
Key search google: 1Mz7153HMuxXTuR2R1t78mGSdzaAtNbBWX bitboin malware
Mình tìm được bài viết này: https://www.cnbc.com/2017/06/28/ransomware-cyberattack-petya-bitcoin-payment.html
Ở đây, bài viết nói rằng mã độc đó tên là: Petya
Flag: picoCTF{Petya}
Rules 2023
Description:
Read the rules of the competition and get a little bonus! https://picoctf.org/competitions/2023-spring-rules.html
Hint:
Ctrl-F will not work
Solution:
Ồ đề bài nói rằng CTF-F không hoạt động nhưng ta lại cần phải tìm ra flag trong nội dung của blog này.
Mình đã vào source và ctf-f trong đó và tìm thấy flag.
Flag: picoCTF{h34rd_und3r5700d_4ck_cba1c711}
epetitions
Description:
Can you make sense of this file? Download the file: enc_flag.
Hint:
Multiple decoding is always good.
Solution:
Đầu tiên, mình làm theo đề bài tài file kia về. Có vẻ như là một file thực thi. Mình tiến hành mở file bằng BInary Ninja thì thu được thông tin sau:
Ồ, có vẻ như là một đoạn mã base64.
VmpGU1EyRXlUWGxTYmxKVVYwZFNWbGxyV21GV1JteDBUbFpPYWxKdFVsaFpWVlUxWVZaS1ZWWnVhRmRXZWtab1dWWmtSMk5yTlZWWApiVVpUVm10d1VWZFdVa2RpYlZaWFZtNVdVZ3BpU0VKeldWUkNkMlZXVlhoWGJYQk9VbFJXU0ZkcVRuTldaM0JZVWpGS2VWWkdaSGRXCk1sWnpWV3hhVm1KRk5XOVVWVkpEVGxaYVdFMVhSbFZhTTBKWVZGVm9RMDFHV1hoWGJFNW9DbUpXUmpOVVZsWlhWakpHZEdWRlZsaGkKYlRrelZERldUMkpzUWxWTlJYTkxDZz09Cg==
Cho vào cyber chef decode base64 6 lần thì mình thu được flag.
Flag: picoCTF{base64_n3st3d_dic0d!n8_d0wnl04d3d_1bfa7005}
chrono
100 Point
Description:
How to automate tasks to run at intervals on linux servers? Additional details will be available after launching your challenge instance.
Use ssh to connect to this server: Server: saturn.picoctf.net Port: 58423 Username: picoplayer Password: ekj2GJuiv4
Hint:
Solution:
Đăng nhập SSH server Theo như yêu cầu: đề bài hỏi rằng làm thế nào để tự động hoá các tác vụ chạy trên Linux Mình nghĩ ngay tới crontab, đùa thôi mình tra mạng đó. Trên linux thư mục này nằm trong /etc Mình dùng lệnh này để tìm kiếm flag: grep -r “pico” /etc
Được rồi chạy lên trên find flag xem sao thì mình thấy được flag luôn:
Flag được lưu trong file crontab
Flag: picoCTF{Sch3DUL7NG_T45K3_L1NUX_9d5cb744}
Permissions
100 Point
Description:
Can you read files in the root file? Additional details will be available after launching your challenge instance.
ssh -p 60467 picoplayer@saturn.picoctf.net Password: Sd9KYTm5kr
Hint:
Solution:
Tương tự bài trên mình tiếp tục đăng nhập ssh server. Để bài yêu cầu đọc file hệ thống? hmmmm
MÌnh liệt kê các thư mục tron thư mục gốc thì có kết quả sau.
Trong đó có thư mục challenge rất khả nghi, đọc hết file thì mình tìm thấy flag.
challenge/metadata.json:{"flag": "picoCTF{uS1ng_v1m_3dit0r_89e9cf1a}", "username": "picoplayer", "password": "Sd9KYTm5kr"}
picoplayer@challenge:/$ Connection to saturn.picoctf.net closed by remote host.
Flag: picoCTF{uS1ng_v1m_3dit0r_89e9cf1a}
useless
100 Point
Description:
có một tập lệnh thú vị trong thư mục chính của người dùng.
The work computer is running SSH. We've been given a script which performs some basic calculations, explore the script and find a flag. Hostname: saturn.picoctf.net Port: 53481 Username: picoplayer Password: password
Hint:
Solution:
Khi mình login vào server ssh thì nhận được một tệp tin trong như sau:
Đây là một script.
Chạy thử file thì thấy thông báo sau:
picoplayer@challenge:~$ ./useless
Read the code first
Mình quay lại thử đọc code nó xem sao thì nhận được script sau:
Web
Findme (WEB)
100 Point
Description:
Help us test the form by submiting the username as test and password as test!. Additional details will be available after launching your challenge instance. link: http://saturn.picoctf.net:50116/
Hint:
any redirections?
Solution:
Đầu tiên thì mình được cấp cho một cái URL, mình truy cập vào. Theo như gợi ý của đề bài thì thông tin đăng nhập là test
và test!
.
Mình thực hiện login vào trong và nhận được một chuyển hướng tới trang home
Tại đây có một ô search flag, mình thư search nhưng lại chả thấy kết quả gì trả về.
Đọc source code thì mình nhận được một đoạn mã JavaScript lạ lạ như này:
Có vẻ như kết quả search được ẩn đi. Tuy nhiên, kể cả thế thì mình cũng vẫn không thấy có gì có thể khai thác được.
Mình sử dụng BurpSuite để bắt request thì thấy quá trình login có những request và phản hồi sau:
Nhớ lại thì đề bài có gợi ý về bất kỳ sự chuyển hướng nào.
Tại request chuyển iD, mình phát hiện sau khi login trang web chuyển hướng sang: /next-page/id=cGljb0NURntwcm94aWVzX2Fs
Vài khi chuyển hướng sang thì web lại tiếp tục chuyển hướng sang: /next-page/id=bF90aGVfd2F5XzI1YmJhZTlhfQ==
Rồi trả về trang home, quá trình này diễn ra nhanh nên mình không để ý, và khi bắt request bằng burp thì mới nhận ra.
Trong các trang chuyển hướng trên mình thu được 2 phần mã base64 chắc chắn chính là flag rồi.
mã base64 đầy đủ: cGljb0NURntwcm94aWVzX2FsbF90aGVfd2F5XzI1YmJhZTlhfQ== bây giờ decode nó ra nhé.
Flag: picoCTF{proxies_all_the_way_25bbae9a}
SOAP (Web)
100 Point
Description:
The web project was rushed and no security assessment was done. Can you read the /etc/passwd file?. Additional details will be available after launching your challenge instance. http://saturn.picoctf.net:52628/
Hint:
XML external entity Injection
Solution:
Ok, theo như gợi ý thì đây là một bài về XXE injection. và yêu cầu là đọc được file /etc/passwd
Truy cập vào web mình nhận được những thông tin sau.
Trong các button Detail mình nhận thấy nó có thể render ra dữ liệu. Sau khi bắt burpsuite thì có thể xem request như sau:
Ứng dụng lấy dữ liệu từ ID và rander ra màn hình. Mình sẽ bắt đầu tấn công XXE theo payload như sau:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<data><ID>&xxe;</ID></data>
Sau khi gửi request tới server thì nhận được nộ dung của tệp /etc/passwd
Flag: picoCTF{XML_3xtern@l_3nt1t1ty_4dbeb2ed}
More SQLi
200 Point
Description:
Can you find the flag on this website. Additional details will be available after launching your challenge instance. http://saturn.picoctf.net:63226/
Hint:
SQLiLite
Solution:
Theo như đề bài gợi thì đây là SQLLite SQL injection
Mình sẽ sử dụng SQLLite bypass login với payload: -1’ OR 321=6 AND 00047=00047 – ở cả username và pass
Trong lúc login mình nhận được một form tìm kiếm như sau:
Thực hiện tìm kiếm hi
và bắt request. Theo suy đoán của mình thì chỗ này sẽ là nơi mình tập trung tấn công sql injection.
Đến đây đưa vào sqlmap và chạy lệnh: sqlmap -r 2.txt –dump –threads=5 –risk=3 –level=5 –batch
ta sẽ thu được flag
Flag: picoCTF{G3tting_5QL_1nJ3c7I0N_l1k3_y0u_sh0ulD_c8ee9477}
MatchTheRegex (WEB)
100 Point
Description:
How about trying to match a regular expression. Additional details will be available after launching your challenge instance. http://saturn.picoctf.net:53720/
Hint:
Access the webpage and try to match the regular expression associated with the text field
Solution:
Trước hết thì mình vẫn cứ là truy cập url. vì đề bài bảo rằng so khớp regex nên chắc chắn bài này cần nhập cái gì đấy vào cho khớp regex rồi sẽ nhận được flag
Mình thử nhập: hello thì kết quả sai. Nhưng chún ta cần tìm ra cái regex nó nằm ở đâu nữa
Đọc source code thì mình tìm thấy một hàm mã JS
<script>
function send_request() {
let val = document.getElementById("name").value;
// ^p.....F!?
fetch(`/flag?input=${val}`)
.then(res => res.text())
.then(res => {
const res_json = JSON.parse(res);
alert(res_json.flag)
return false;
})
return false;
}
</script>
Hàm này lấy dữ liệu từ biến name và fetch tới server . Ồ có một cái comment, hình như đó là regex: không gì khác mình nghĩ ngay tới picoCTF luôn ;> Mình nhập vào input thì nhận được flag.
Flag: picoCTF{succ3ssfully_matchtheregex_8ad436ed}
Reverse
timer (RE)
100 Point
Description:
You will find the flag after analysing this apk Download here timer.apk.
Hint:
Decompile mobsf or jadx
Solution:
Trước hết thì theo đề bài, mình thực hiện tải file timer.apk về máy
Đề bài gợi ý dùng mobsf và jadx nhưng mình sẽ dùng ReverseAPK để decompile
Sau khi Decompile thì mình có được các thư mục và file này: timer.apk-jadx timer.apk.jar timer.apk-strings.txt timer.apk-unpacked timer.apk-unzipped
Mình test thử với lệnh : grep -r "pico" timer.apk-jadx
thì nhận được flag luôn ạ
Flag: picoCTF{t1m3r_r3v3rs3d_succ355fully_17496}
Reverse (RE)
100 Point
Description:
Try reversing this file? Can ya?. I forgot the password to this file. Please find it for me? file name: ret
Hint:
Solution:
Ồ, đề bài cung cấp một file ret . Mình đưa vào Binary Ninja và … Trước tiên đọc dữ liệu hàm main xem có gì nào?
File này khi thực thi sẽ yêu cầu nhập password, nhập xong thì password sẽ được phản hồi trở lại , sau đó hàm thực hiện so khớp giữa hai beiesn &var_68 và &var_38 Nếu khớp thì hàm sẽ trả về flag.
oke , mình truy xem câu Password correct đó đến từ đâu thì thấy flag luôn nè.
Flag: picoCTF{3lf_r3v3r5ing_succe55ful_3f1331e7}
Safe Opener 2 (RE)
100 Point
Description:
What can you do with this file? I forgot the key to my safe but this file is supposed to help me with retrieving the lost key. Can you help me unlock my safe?
Hint:
Download and try to decompile the file. File name: SafeOpner.class
Solution:
Mình Strings cái thấy flag luôn:
Flag: picoCTF{SAf3_0p3n3rr_y0u_solv3d_it_b601de44}
Comments