Computer Security

Hacking Land 대회 소감 및 간단한 문제풀이 본문

카테고리 없음

Hacking Land 대회 소감 및 간단한 문제풀이

쿠리 Kuri 2022. 8. 3. 18:30
반응형

일단 7월30일 12시간동안의 해킹랜드가 끝이 났다!

 

1. 바이너리

첫번째로 풀었던 문제였는데, 이 문제는 그냥 간단하게 strings 명령어를 이용해 segfault 를 찾아내면 되는 문제였다.

그리고 거의 1분? 만에 정답에 도달 했다.

하지만 정답인 segfault 는 나왔는데 그게 정답인지 모르고 이 다음 스텝에 이용하는 힌트로 알아 들었다.

결국 5시간동안 그 다음 스텝을 생각하느라 시간을 날리다가 에이 설마,, 라는 생각으로 계속 봤는데,,, 그게 정답이 맞았다...

 

 


2. 패스워드 찾기

이 문제 같은경우는 그냥 간단하게 수 많은 문자열들중 segfault 를 찾는 거였는데, grep명령어를 이용해 seg 로 잡고 처음엔 했었는데, segfault가 끊겨져 있었다.

그래서 cat challthree-chall.txt | grep -Fn '\' 명령어를 이용해 끊긴 부분이 어디인지 확인했고

segfault{gj_now_grep_for_this_is_it_poggers}가 정답이였던 걸로 기억한다.

find passwd
find passwd

 

 

 


3. 수학 게임

사이트 내에서 수학 문제를 3초안에 풀어야 하며, 일정이상 점수를 따게 되면 segfault를 알려주는 구조였다.

직접 머리로 해봤는데,,ㅋㅋ 3단계? 부턴 41425*323254-42425 이런 말도 안되는 계산식을 3초안에 풀라고 하길래 바로 

웹 스크래핑으로 계산식 속성 받아와서 파이썬으로 굴리고 다시 넣어줘야겠다는 생각을 했다.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()
driver.maximize_window()



url1 = 'http://hackingland.segfaulthub.com:10003/solveit.php'
driver.get(url1)


def wait_until(xpath_str):
    WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.XPATH, xpath_str)))

for i in range(10):
   wait_until('/html/body/div/div[2]/h1') 
   MATH =driver.find_element(By.XPATH, '/html/body/div/div[2]/h1')
   Result = eval(MATH.text)
   print(MATH.text)
   print(Result)
   ANSWER= driver.find_element(By.ID,'search_addr')
   ANSWER.send_keys(Result)
   ANSWER.send_keys(Keys.ENTER)
   time.sleep(2.85)
   i+=1

math game

 

 

 


4.packman 문제

이 문제 같은경우는 팩

맨게임에서 20만점을 달성하면 segfalt가 나온다 했다. 

/getToken

소스코드를 보니, /getToken이 보여서 확인해보니, 토큰키인듯 하다.

/validate_Token?token=

20만점을 달성시에 토큰키를 얻어서 저 /validate_Token?token= 토큰키 를 치게되면

segfault가 나오는 듯 했다.

segfault

성공!

 

 

 

 


5.read문제 

프로그래밍 소스코드 해석해서 푸는 문제였는데,처음엔 90050[::-1] 이런식으로 되어있었는데, 그거 싹다 파이썬으로 한번  돌려서 보기 쉽게 만들었다.

그 후 x 값 먼저 알아낸뒤, 정상적인 x 값일때가 7일때니까, x값 7로 고정후 y값을 찾아 나갔다.

read1
read2
read3

 

 

 


6. 터치터치1

10000000 번을 싹다 터치해서 segfalut가 나오는 구조였는데,

소스 코드 뜯어보는 순간 segfault가 보였다.

touch touch 1


 

 

 

7. 터치터치2

이번엔 1부터 해서 10000000 까지 터치를 하면 segfault가 나오는 형식이였는데,

게임 가디언으로 메모리 값을 조작해서 9999999를 설정한뒤, segfault 값이 나오게끔 했다.

touch touch 2
segfault

 

 

 

 


이거 말고도 한두문제 더 풀었던거 같은데, 자료가 없어서 패스한다..

 

ranking

정말 많은걸 배워가는 기회가 된 것 같았다. 다시한번 Hacking Land 주최자 분들에게 감사하다.

반응형
Comments