일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- css
- pwn.college
- 시그널
- Bandit
- 리버싱
- 어셈블리어
- px4
- radare2
- C++
- wargame
- 드론
- 취약점
- 커널
- kernel
- 리눅스 커널
- 알고리즘
- 시스템 프로그래밍
- 프로그래밍
- write up
- 시스템
- 리눅스커널
- Pwnable.kr
- 워게임
- 컴퓨터구조
- C언어
- pwncollege
- 리눅스
- Leviathan
- 시스템프로그래밍
- 시스템해킹
- Today
- Total
Computer Security
Hacking Land 대회 소감 및 간단한 문제풀이 본문
일단 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}가 정답이였던 걸로 기억한다.
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
4.packman 문제
이 문제 같은경우는 팩
맨게임에서 20만점을 달성하면 segfalt가 나온다 했다.
소스코드를 보니, /getToken이 보여서 확인해보니, 토큰키인듯 하다.
20만점을 달성시에 토큰키를 얻어서 저 /validate_Token?token= 토큰키 를 치게되면
segfault가 나오는 듯 했다.
성공!
5.read문제
프로그래밍 소스코드 해석해서 푸는 문제였는데,처음엔 90050[::-1] 이런식으로 되어있었는데, 그거 싹다 파이썬으로 한번 돌려서 보기 쉽게 만들었다.
그 후 x 값 먼저 알아낸뒤, 정상적인 x 값일때가 7일때니까, x값 7로 고정후 y값을 찾아 나갔다.
6. 터치터치1
10000000 번을 싹다 터치해서 segfalut가 나오는 구조였는데,
소스 코드 뜯어보는 순간 segfault가 보였다.
7. 터치터치2
이번엔 1부터 해서 10000000 까지 터치를 하면 segfault가 나오는 형식이였는데,
게임 가디언으로 메모리 값을 조작해서 9999999를 설정한뒤, segfault 값이 나오게끔 했다.
이거 말고도 한두문제 더 풀었던거 같은데, 자료가 없어서 패스한다..
정말 많은걸 배워가는 기회가 된 것 같았다. 다시한번 Hacking Land 주최자 분들에게 감사하다.