레이블이 ASIS ctf인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ASIS ctf인 게시물을 표시합니다. 모든 게시물 표시

2014년 5월 11일 일요일

ASIS ctf 2014 Hidden flag Writeup


문제 지문따위 없다.
말그대로 hidden flag 이다. 


음...  x-flag라는것이 수상하다..
그리하여 저 modal box 의 소스를 보니 아래와 같은 jscript 내용이 있었다.

$(document).on('hidden.bs.modal', function (e) {
e.preventDefault();
$(e.target).removeData('bs.modal');

});
var i=0;

var result=['Please try again!', 'Try harder!', 'Your answer is not correct!', 'The submitted flag is not correct!', 'False flag!', 'Wrong answer!', 'Sorry!'];
var final_result="Do you want to hack me?";

$('#flag_submission').submit(function(e){
e.preventDefault();
var shaObj = new jsSHA(document.forms["flag_submission"]["id_flag"].value, "TEXT");
var hash = shaObj.getHash("SHA-256", "HEX");
var shaObj2 = new jsSHA(hash, "TEXT");
var hash2 = shaObj2.getHash("SHA-256", "HEX");
if (document.forms["flag_submission"]["check"].value !== hash2) {
if ($("#id_flag").next().length == 0){
$('

').insertAfter('#id_flag');
}
if (i++>6){
$('#answer').removeClass('alert-danger').addClass('alert');
$('#answer').text(final_result);
}
else $('#answer').text(result[Math.floor(Math.random() * 7)]);
return false;
}

$.ajax({
type: "POST",
url: "/challenges/22/",
data: $('form').serialize(),
success: function(msg){
$("#ModalContainer").html(msg)
$("#modal-dialog").modal('hide');
},
error: function(){
alert("failure");
}
});
});


굳이 해석하자면 내가 인증시도한 flag 값을 sha256 hex로 두번 하고, 소스상의 name="check" 값인 2b127c77074e44b6e74074b1eb8d32dfe27fe78e6a05e302baed68e2cc643ca1
와 비교한다.

  1. x-flag:
    ASIS_b6b?244608c2?c2e869cb56?67b64?b1
위의  x-flag값 중간중간에 물음표가 있으므로 bruteforcing을 거쳐 ?에 들어갈 단어를 알아낸다!!!


#!/usr/bin/python
from hashlib import *
print "+"*40
a = "b6b?244608c2?c2e869cb56?67b64?b1"
dic = "abcdef0123456789"
haha = []
for i in dic:
for j in dic:
for l in dic:
for q in dic:
haha.append(a[:3]+i+a[4:12]+j+a[13:23]+l+a[24:29]+q+a[30:])
haha.append(a[:3]+i+a[4:12]+j+a[13:23]+l+a[24:29]+q+a[30:])
haha.append(a[:3]+i+a[4:12]+j+a[13:23]+l+a[24:29]+q+a[30:])
haha.append(a[:3]+i+a[4:12]+j+a[13:23]+l+a[24:29]+q+a[30:])

for i in haha:
if sha256(sha256("ASIS_"+i).hexdigest()).hexdigest() == "2b127c77074e44b6e74074b1eb8d32dfe27fe78e6a05e302baed68e2cc643ca1":
print "ASIS_"+i
exit()
소스가 참 더럽다 더 짧고 이쁘게 짤수있었지만 인증이 먼저이기에...

root@mango:~/asis# python hiddenflag.py 
++++++++++++++++++++++++++++++++++++++++
ASIS_b6be244608c27c2e869cb56167b649b1

clear!