-
|Lord of SQL_injection| #30 OuroborosWargame Site/SQL injection 2019. 4. 8. 13:58
이제 세 문제 정도 남았다. 입력한 pw 와 질의결과 pw 가 같아야한다는 문제이다. pw 의 결과가 감지되면 다음과 같은 결과가 출력된다. 출력된 결과와 파라미터의 값이 같아야한다. 하지만, 다음과 같은 명백한 문장의 경우 아무런 출력결과가 나오지않았고, 어쩌면 pw 의 값이 처음부터 존재하지 않았을 것 같다는 예감이 들었다, 결국에는 Google 의 힘을 빌렸다. 그 결과 replace 를 활용하여 입력값과 출력값을 같게해주는 'QUINE' 이라는 구문을 발견했다. SELECT REPLACE(REPLACE('SELECT REPLACE(REPLACE("$",CHAR(34),CHAR(39)),CHAR(36),"$") AS Quine',CHAR(34),CHAR(39)),CHAR(36),'SELECT REP..
-
HackCTF [ 행운의 숫자 ]Wargame Site/HackCTF 2019. 3. 28. 21:13
얼마전에 친한 동생에게 좋은 CTF 사이트 하나를 추천받았다. 바로 http://ctf.j0n9hyun.xyz 인데, 다양한 분야의 문제들이 모여있었다. 이번에 코드게이트 행사를 통해 CTF 를 많이 풀어보겠다는 목표가 생겼고, 실천에 옮겨야겠다. 원피스의 한대사 같은 구절이 써있다 page 를 GET 방식으로 전달받아 그에 따른 페이지를 보여주는 문제이다. page 에 4 이상의 숫자를 넣어도 값이 출력되는 것을 알 수 있다. 그렇다면 알 수 없는 page 에 플래그가 숨겨져 있다는 뜻인 걸로 추정된다. HackCTF 형태의 Flag Format 을 사용하기 때문에 이를 검출하는 코드를 작성해보았다. 실행 결과!! 1225 라는 page 가 나왔고, Flag 를 획득할 수 있었다.
-
FTZ ( Level 9 )Wargame Site/FTZ 2019. 3. 24. 17:40
LEVEL NinE ~~ BOF 문제이다. 그러기 위해서 gdb 를 사용하려고 했으나, 권한이 안되서 코드를 그대로 복사한 뒤에 분석해봐야겠다는 생각이 들었다. 'gdb a' 를 한뒤에 친숙한 intel 기반으로 세팅한 뒤, main 함수에 접근했다. 'ebb - 40' 에서 입력받기 시작해서 'ebp -24' 에 있는 값으로 부터 2개의 값을 읽는 다는 것을 알 수 있다. 따라서, 16 글자 뒤 2문자가 "go" 이면 된다는 뜻이다. 쉘을 얻었으니 My-pass 를 통해 패스워드를 알아냈다.
-
FTZ ( Level 8 )Wargame Site/FTZ 2019. 3. 23. 23:16
Level 8 ~ 용량이 2700 이라는 것을 단서로 find 명령어를 수행한다.2700 이라는 단서로 2700c, 2700M 등의 후보들을 준비해뒀다. 그 결과, 다음과 같은 결과가 나왔고, 그 중에 found.txt 가 수상해 보이기에 cat 을 해보았다. /etc/shadow 의 한 줄을 긁어 온 듯한 형식이었다. 그렇다면 password 관련 필드는 두 번째 field 이었고, '$1$' 을 통해 md5 형식으로 되어있음을 알 수 있었다. 이를 해결하기 위해 구글링을 해본 결과 'John the Ripper' 라는 도구를 사용하면 된다고해서, macOS 용을 설치한 뒤, 문제를 해결했다.
-
FTZ ( Level 7 )Wargame Site/FTZ 2019. 3. 23. 22:01
문제의 7번 문제이다.... 실행 결과 wrong.txt 을 찾을 수 없다는 문구가 나온다. 그래서 wrong.txt 를 만들어 주어야하나 해서 'ls -ld /bin', 'find / -user root -perm +4000 2> /dev/null' 과 같은 시도들을 반복해봤지만 부질없었다. 답답한 마음에 구글링을 해본 결과, wrong.txt 의 내용이 없는건 오류라고 하더라..... 결국 이러한 사실을 알게되었고, 2진수가 언급되었다 는 것을 토대로 다음과 코드(?)를 작성했다. Clear!! 이 문제에 쏟은시간이 아까웠다....
-
FTZ ( Level 5 )Wargame Site/FTZ 2019. 3. 23. 14:49
이제는 'cat hint' 까지의 설명은 필요 없을 것이라고 생각한다. level5 실행 시 권한은 level6 으로 작동한다. 그리고 /tmp 의 other 에 t 가 있는 것을 알 수 있다. t 권한은 글을 게시한 user 만이 해당글을 삭제할 수 있는 권한이다. 즉, 수정이 가능하다는 것이다. level6 가 level5 를 실행시킬 때 생기는 level5.tmp 는 level6 가 생성한 파일이므로 파일은 임시적으로 사용되고, 버려진다. 하지만, level6 가 아닌 다른 누군가가 level5.tmp 라는 파일을 미리 만들어 놓았다면, 해당 파일은 수정이 가능하지만, 삭제할 수 없다는 특징을 지닌다. 이를 이용하여 해결~
-
FTZ ( Level 4 )Wargame Site/FTZ 2019. 3. 23. 14:36
Level 4 ~ 늘 그랬듯이 먼저 파일을 확인한다. hint 의 내용을 확인한다. /etc/xinetd.d 는 데몬과 관련된 디렉터리이다. 서비스의 이름은 finger 이고, user 는 level5 이며, /home/level4/tmp/backdoor 를 실행하는 것을 알 수 있다. 하지만, level4 의 tmp 에는 'backdoor'파일이 없었다. 하지만, level4 의 tmp 에는 'backdoor'파일이 없었다. 그래서 만들어주었다. my-pass 의 결과를 /tmp/pw.txt 에 저장하는 코드이다. gcc 를 사용해 컴파일 해준다! 그 뒤 service 요청을 해주면!! /tmp/pw.txt 가 생기고 확인하면 level5 의 password 가 출력된다.