[WarGame] php? c?

http://wargame.kr:8080/prob/7/

:p

Xem source, được gợi ý về file index.phps, mở nó ra coi:

Mở tiếp file p7.c (http://wargame.kr:8080/prob/7/p7.c):

Chương trình này nhận 1 tham số, chính là cái đầu tiên mà ta nhập vào ở trang php. Nó thực hiện điều gì?

  1. Nếu x < 0: Sai.
  2. x = x + 5.
  3. Nếu x > 4: Sai.
  4. Nếu x < 5: Đúng.

Một số không âm, sau khi cộng thêm 5 mà lại không được lớn hơn 4, thật là kinh dị emo_popo_waaaht

Cơ mà không sao, đề ngắn gọn như vậy, chẳng có gì nhiều để mà nghĩ. Chúng ta đã biết rằng, đối với máy tính mà nói, một số có dấu (signed int chẳng hạn), thì khi đạt đến cực đại của số dương, nó sẽ quay về cực tiểu của số âm. Ví như 2147483647 + 1 thì sẽ không bằng 2147483648, mà bằng -2147483648, đây là điều mà đám IT khô cằn chúng ta biết nhiều hơn so với những con người lãng mạn khác emo_popo_look_down

Như thế, nếu như ở trang php, ta nhập num1 = 2147483647 và num2 =2147483647 + 5 = -2147483644, vấn đề sẽ được giải quyết. Với lưu ý rằng 2 textbox để nhập đã bị giới hạn về 9 ký tự, hẳn là ta sẽ phải mất thêm một chút thời gian mới mong có được flag, zin zin: emo_popo_smile

[WarGame] wtf_blackout

http://wargame.kr:8080/prob/35/
BlueH4G did working test.php in current directory! but, the blackout began yesterday..
We can view BlueH4G’s test.php source!!

Không có bất cứ thứ gì cả, ngoài việc chúng ta thấy lời tựa tiếng Anh và tiếng Hàn có đôi chút khác biệt (chắc để ưu tiên người nhà).

Thường thì các file source, nếu được cung cấp kèm theo task, sẽ có dạng test.phps hoặc test.php~, tuy nhiên trong trường hợp này đều 404 not found, cả file robots.txt cũng vậy.

Google và biết rằng có một loại tập tin khác, với phần mở rộng .swp (swap), tạo bởi VIM. Cấu trúc tên chính xác là .<tên_file>.swp, cụ thể:

b0VIM 7.2+rootubuntu/var/www/prob/35/test.php U3210#"! Utp�ada���������!@#$%^&*()_abcdefghijklmnopqrstuvwxyz1234567890auth key is... ./thx_swap_file.phpcongratulations!!!

Rất khả quan, mở tiếp:

wow!! auth key is ed1a8f1ae31451afa402ee01acbe325cd6197219

→ flag = ed1a8f1ae31451afa402ee01acbe325cd6197219.

[WarGame] flee button

http://wargame.kr:8080/prob/8/

click button, if you want to get the authentication key

Chúng ta cần phải nhấn vào một cái nút, nhưng đáng tiếc rằng cái nút đó, như một định mệnh vậy, mãi ở bên ta nhưng ta lại không bao giờ với tới được too_sad

Xem source:

Chạy câu lệnh unescape_blue14:

>>> unescape_blue14("%72%7d%71%85%7b%73%7c%84%34%87%...c%72%82%6d%75%83%84%6d%82%84%45%7c%7d%79%80%43")

"document.write(unescape_blue14("%44%72%77%86%24%77%72%45%26%73%83%71%26%24%83%84%89%7a%73%45%26%80%7d%83%77%84%77%7d%7c%42%6d%70%83%7d%7a%85%84%73%43%26%46%44%77%7c%80%85%84%24%84%89%80%73%45%26%70%85%84%84%7d%7c%26%24%7d%7c%74%7d%71%85%83%45%26%7c%7d%79%80%2c%2d%43%26%24%7d%7c%71%7a%77%71%79%45%26%87%77%7c%72%7d%87%34%7a%7d%71%6d%84%77%7d%7c%45%2b%47%79%73%89%45%73%36%6D%71%71%71%74%40%73%39%73%3D%41%41%3C%3B%37%3B%37%37%3B%74%36%71%41%37%37%36%40%3D%3D%39%2b%43%26%24%86%6d%7a%85%73%45%26%71%7a%77%71%79%24%7b%73%25%26%46%44%35%72%77%86%46%44%77%7c%80%85%84%24%84%89%80%73%45%26%84%73%88%84%26%24%82%73%6d%72%7d%7c%7a%89%24%83%84%89%7a%73%45%26%87%77%72%84%76%42%39%3b%36%43%26%24%77%72%45%26%76%77%7c%84%26%24%86%6d%7a%85%73%45%26%72%7d%24%89%7d%85%24%87%6d%7c%84%24%84%7d%24%78%7d%77%7c%47%24%71%6d%84%71%76%24%70%85%84%84%7d%7c%32%24%77%74%24%89%7d%85%24%71%6d%7c%25%26%46"));obj=document.getElementById("esc");document.onmousemove=escdiv;document.onkeypress=nokp;obj.style.left=-200;obj.style.top=-200;var i=0,ax=0,ay=200,sw=1,r=200;document.getElementById('esc').style.top=-500;document.oncontextmenu=nokp;document.onselectstart=nokp;document.ondragstart=nokp;"

Chạy tiếp lần 2:

>>> unescape_blue14("%44%72%77%86%24%77%72%45%26%73%...c%32%24%77%74%24%89%7d%85%24%71%6d%7c%25%26%46")

"<div id="esc" style="position:absolute;"><input type="button" onfocus="nokp();" onclick="window.location='?key=e0acccf8e3e7996515115f0c91108773';" value="click me!"></div><input type="text" readonly style="width:350;" id="hint" value="do you want to join? catch button, if you can!">"

Ok, truy cập địa chỉ:

good! Flag is : a84965cf2af6a6caa10350b832d43b0546dc4bca

→ flag = a84965cf2af6a6caa10350b832d43b0546dc4bca.

[WarGame] bread shuttle

http://wargame.kr:8080/prob/1/

Bài này thực sự rất gớm, các nhân vật thì xấu xí vô kể, còn trình duyệt thì Firefox không hỗ trợ emo_popo_choler

Còn nhiệm vụ của chúng ta thì, chán ngắt – đẩy con quái vật từ trái qua phải, cho nó chạm vào thằng người đang đứng mời gọi phía bên kia đường, flag sẽ xuất hiện (đoán thế). Vấn đề ở chỗ là chúng ta không thể làm được điều đó, vì con quái vật của chúng ta nó quá ục ịch, nên không thể nhảy qua con vực thứ 2. Hình minh họa:

Chúng ta có vài hướng làm cho bài này, ít nhất thì mình cũng liệt kê được 2 cách kinh điển cho bạn chọn lựa:

  1. Xem code, tìm phần in ra flag.
  2. Sửa code, cho con quái nhảy xa hơn.

Mình chọn cách 2. Ctrl + S để lưu trang web về máy, sửa đoạn này:

Chúng ta có thể đổi giá trị 2 thành 20, và nó sẽ nhảy xa kinh hoàng luôn emo_popo_sure

→ flag = 885878205a9282f732f19e17ab7a8f9f6e8ea96d.

 

[WarGame] maze game

http://wargame.kr:8080/prob/3/maze.php

Task này đưa chúng ta vào một trò chơi dò đường. Chúng ta có một điểm xuất phát, có một điểm đích, và nhiệm vụ là phải di chuột từ điểm xuất phát đến điểm đích mà không chạm vào tường.

Tất nhiên đó chỉ là… lời tựa, còn thì thực sự chúng ta không phải siêu nhân mà làm được điều đó (tất nhiên vẫn có vài người dị dị sẽ làm được, nhưng ít thôi). Chúng ta sẽ xem xét source một chút, và chú ý 2 dòng sau, vì nó liên quan đến điểm đầu và điểm cuối của quãng đường (cuộc sống cũng vậy, chẳng ai quan tâm bạn khó khăn thế nào, bạn gặp trở ngại ra sao, nếu bạn thất bại thì bạn là thằng thất bại, và ngược lại):

Chúng ta không tin rằng một bài ít điểm như bài này mà lại có thể có những bước kiểm tra gắt gao và táo bạo nào cả, bởi đơn giản một điều, mình đoán thế emo_popo_shame Chúng ta không thể di chuột đến đích được, nhưng lại hoàn toàn có thể làm cho trang web tưởng rằng ta đã làm điều đó một cách hoàn hảo (đây cũng chính là cuộc sống, thật thà tử tế thường thua thiệt). Chạy 2 cái hàm nhỏ xinh trong Web Developer Tools của trình duyệt:

Và bây giờ, vị trí đích được thay bằng thứ mà ta kiếm tìm:

→ flag = 40a15c683558beb6e846f01a948758a9aa6aeb3a.

[WarGame] QR CODE PUZZLE

http://www.wargame.kr:8080/prob/37/

Did you get the key?

Khi truy cập task này, ta thấy một hình QR Code, tuy nhiên chỉ trong chớp mắt nó đã bị hoán đổi vị trí (dễ thấy quá trình này được thực hiện bằng Javascript):

FliAE4F

Bài này có khá nhiều cách làm, chúng ta có thể tắt Javascript trong trình duyệt, chúng ta có thể debug và đặt breakpoint trước khi hình bị xáo trộn, và ngoài ra còn có cách lãng mạn hơn đó là chúng ta sẽ lao thẳng vào hình gốc để chiếm đoạt nó sexy_girl Xem source:

Chú ý ở phần set thuộc tính src của thẻ <img>, và dùng Web Developer Tools của trình duyệt để thực thi:

Ok, mục tiêu đã xác định:

FliE5E4

Decode cái hình này, ta được:

GOOD!! key is "SHhjHJej"

→ flag = SHhjHJej.

[WarGame] already got

http://wargame.kr:8080/prob/31/

you’ve already got key! :p

Xem source, không có gì. Xem response header:

HTTP/1.1 200 OK
Date: Tue, 10 Sep 2013 14:22:55 GMT
Server: Apache/2.2.14 (Ubuntu)
X-Powered-By: PHP/5.3.2-1ubuntu4.21
AUTHKEY: fe48d93dbcb9069a6dbd068e02c8208aa87017a6
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 47
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

Thử với giá trị của AUTHKEY, goodboy emo_popo_misdoubt

→ flag = fe48d93dbcb9069a6dbd068e02c8208aa87017a6.