[suninatas] Game 05
2022. 5. 16. 21:23
Study/Web Hacking
문제: http://suninatas.com/challenge/web05/web05.asp 어떤 form 하나가 있고 그 아래에 "Check Key Value"가 적혀있다. 어떤 key value를 확인하라는 걸까, 개발자 도구를 열어봤다. 가장 먼저 보이는 건 주석 처리된 힌트였다. 힌트는 12342046413275659 숫자열이었고, 이 값을 input에 입력해보았지만 아무일도 일어나지 않았다. 좀 더 도움이 될만한 걸 찾기 위해 소스를 살펴보다가 table에 숨겨진 script를 발견했다. 난독화가 되어 있는지 지금 상태론 무슨 코드인지 알아보기 힘들어보인다. 코드 난독화를 해제해보자. 아래 링크에서 코드 난독화를 해제할 수 있다. 더보기 https://beautifier.io/ 그 결과 위와 같은..
[suninatas] Game 04
2022. 5. 10. 19:54
Study/Web Hacking
문제: http://suninatas.com/challenge/web04/web04.asp Point를 입력하는 form이 하나 있고 그 아래에 User-Agent를 표시해주고 있다. form의 Plus버튼을 클릭하면 Point의 값이 1씩 증가한다. 계속 누르다보면 "I like the SuNiNaTas" 팝업창이 뜨면서 값이 25에서 더이상 커지지 않는 다는 것을 알 수 있다. 개발자 도구를 열어보니 주석으로 힌트가 숨겨져 있는 것을 발견했다. 일단 point를 50으로 만들어야 Authkey를 획득할 수 있을 것 같다. 하지만 point는 25에서 더 커지지 않았다. SuNiNaTaS가 이에 대한 힌트가 될 것 같다. 아까 위에서 point를 25에서 더 증가시키려고 할 때 팝업창에 SuNiNaTa..
[suninatas] Game 03
2022. 5. 10. 19:42
Study/Web Hacking
문제: http://suninatas.com/challenge/web03/web03.asp 문제 페이지에 "Write articles in Notice Board!"라는 문자열이 크게 적혀있다. Notice Board에 글작성을 하라는 의미같다. suninatas의 Notice board로 들어가봤는데 글작성 버튼이 존재하지 않았다. 비슷한 Notice랑 게시판도 확인해봤는데 자유게시판에는 글작성을 할 수 있었다. 자유게시판에서 글작성 버튼을 누르고 URL을 확인해보면 게시판 아래에 write로 더 내려간 것을 알 수 있다. 똑같이 Notice에서도 write에 접근했더니 Notice의 글작성 페이지로 들어올 수 있다. 여기서 아무글이나 작성하면 Authkey를 획득할 수 있다.
[suninatas] Game 02
2022. 5. 10. 19:27
Study/Web Hacking
문제: http://suninatas.com/challenge/web02/web02.asp ID와 PW를 입력하는 폼이 있다. 개발자 도구를 열어보니 form태그 아래에 힌트가 주석처리 된 것을 볼 수 있었다. id랑 pw가 같아야 한다는 힌트가 있었다. script도 포함되어 있었는데, id랑 pw가 같으면 폼이 submit되지 않는 것을 알 수 있었다. id랑 pw가 같아야 Authkey를 얻을 수 있을 텐데 script 때문에 폼이 submit 되지 않으니 이를 우회하거나 script를 변경해야 할 것 같다. 여기서는 console을 사용해서 form을 submit 시켜보겠다.먼저 ID와 PW에 같은 값을 입력해놓고, console을 열자.그리고 console창에서 직접 form을 submit시키는..
[suninatas] Game 01
2022. 5. 10. 19:02
Study/Web Hacking
문제: http://suninatas.com/challenge/web01/web01.asp 써니나타스 1번 문제이다. 문제에 접속하면 화면으ㅔ 코드를 보여주고 있다. 처음엔 PHP인줄 알았으나 알고보니 ASP라는 코드였다. ASP는 한 번도 접해본적이 없어 함수를 검색해가면서 풀었다. Replace(str, first, second)는 str에 주어지는 스트링에서 frist를 second로 대치시키는 함수이다. 따라서 Replace(str, "a", "aad")는 str에서 "a" → "aad"로 바꾸게 된다. 마찬가지로 Replace(result, "i", "in")은 "i" → "in"로 바꾼다. Mid(str, pos, length)는 str에서 pos 인덱스에서부터 length의 길이만큼 가져오는..
[dreamhack] basic_exploitation_001
2022. 5. 9. 18:53
Study/System Hacking
문제 풀이 제공된 파일: basic_exploitation_001 / basic_exploitation_001.c #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } void read_flag() { system("cat /flag"); } int main(int argc, char *argv[]) { char buf[0x80]; initialize(); gets(b..
[dreamhack] basic_exploitation_000
2022. 5. 8. 23:44
Study/System Hacking
문제 풀이 제공된 파일: basic_exploitation_000 / basic_exploitation_000.c #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } int main(int argc, char *argv[]) { char buf[0x80]; initialize(); printf("buf = (%p)\n", buf); scanf("%141s", buf)..
[dreamhack] Return Address Overwrite
2022. 5. 8. 19:03
Study/System Hacking
문제 풀이 제공된 파일: rao.c // Name: rao.c // Compile: gcc -o rao rao.c -fno-stack-protector -no-pie #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } void get_shell() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL); } int main() { char buf[0x28]; init(); printf("Input: "); scanf("%s", buf); return 0; } rao를 컴파일 한 후 디버깅해보자. 스택에 0x30크기의 공간이 ..
[dreamhack] Exploit Tech: Return Address Overwrite
2022. 5. 6. 19:14
Study/System Hacking
분석 취약점 분석 // Name: rao.c // Compile: gcc -o rao rao.c -fno-stack-protector -no-pie #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } void get_shell() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL); } int main() { char buf[0x28]; init(); printf("Input: "); scanf("%s", buf); return 0; } scanf("%s", buf);에 취약점이 존재한다. 입력의 길이에 제한을 두지 않기..