일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 디미고입학
- 학생
- pwnable.kr
- 중3
- 워게임
- 우분투
- coursera
- 해킹방어과
- 디지털컨텐츠과
- 웹개발
- 등교개학
- 인공지능
- 플러터
- 시스템해킹
- 이비즈니스과
- 풀스택
- 대나무숲
- 디미고특별전형
- 웹프로그래밍과
- 딥러닝
- graphql
- 머신러닝
- 코로나19
- 일상
- 디미고
- TensorFlow
- WebHacking
- apollo
- 특별전형
- Flutter
- Today
- Total
목록정보보안 공부 (10)
꿈이 너무 많은 한 대학생의 공간

딱히 pwnable의 flag 문제가 리버싱이라 풀기 힘들어서는 아니고, 오늘은 Wargame.kr 문제를 풀어보겠습니다. strcmp 라는 함수를 우회하는 문제? 뭔가 예측이 안가는 문제네요. Start 를 눌러 문제사이트에 들어가봅시다. 단순히 post 기능이 구현된 form 입니다. 소스도 확인해보겠습니다. 서버 내에 /var/lib/dummy_file 을 가져오고 md5 해쉬화, sha1 해쉬화까지 하여 password를 정한 뒤 post 로 넘어온 password 와 비교해 문자열이 같다면(strcmp 함수는 두 인자의 값이 같을 시 0 을 리턴합니다) flag를 띄우는 방식입니다. 일단 strcmp에 주목해야겠네요. php 의 strcmp 함수를 확인해봤더니 배열과 문자열을 인자로 넣는다면 s..

드디어 시스템 해킹의 첫 관문인 버퍼오버플로우 문제를 풀어보겠습니다. 푸는 방법은 이해했지만 포너블에 아직 익숙치 않아 어떻게 쉘코드를 입력해야 하는지 고민 끝내 풀이를 보고 찾아냈습니다.. 먼저 실행파일과 소스코드를 wget 명령어를 통해 다운받겠습니다. func에 0xdeadbeef 를 넘기고 func 내에서 overflowme 라는 지역 변수를 선언합니다. 그 후 overflowme 에 gets 함수를 통해 key(0xdeadbeef) 와 0xcafebabe 가 일치하는지 확인하고 일치한다면 쉘을 실행, 아니라면 Nah.. 를 출력하고 끝냅니다. 일단 취약점이 보이는 gets 함수를 통해 key 변수를 오버플로우시켜야할 것 같습니다. gdb(pwndbg)를 통해 스택을 확인해보겠습니다. gdb로 m..

오늘은 다시 pwnable 문제풀이 포스팅입니다. 어제 치과를 갔다왔는데 5개나 썩았다네요... 평소에 단것을 안좋아하긴 한데 점심은 공부때문에 깜빡하고 저녁은 학원때문에 깜빡하다 보니 하루에 1~2번밖에 양치를 못하다 보니 5개나 썩었나 보네요... 심지어 하나는 신경치료까지 필요해서 거의 80만원 가까이 내게 생겼습니다... 치과검진 1년에 한번씩은 하시고 양치 꼭 하세요 큰일납니다 ㅠㅠ 이제 본론으로 들어가도록 하죠. ssh col@pwnable.kr -p2222 명령어를 사용해 워게임 환경으로 접속해 봅시다. 환경에는 col / col.c / flag 가 존재하네요. flag은 언제나 열리지 않을테니 col.c를 분석해볼게요. 대충 실행 인자값을 4바이트 단위(argv[1]을 int* 단위로 받으..

오늘은 다시 워게임 풀이로 돌아왔습니다. 이번 포스팅에서는 pwnable.kr 사이트의 문제를 풀어보도록 하겠습니다.pwnable.kr은 시스템 해킹을 공부할때 가장 기초적인 사이트로 리눅스에 대한 개념과 시스템 해킹을 공부하고자 제가 선택했습니다. 그 중 제일 먼저 보이는 fd 문제를 풀어보록 하겠습니다. 어머니! 리눅스에서 File Descriptor 가 뭔가요? - 워게임은 혼자 스스로 풀어야 하지만, 정말로 오리지널 초보자라면 다음 링크를 클릭하세요 (링크) ssh fd@pwnable.kr -p2222 일단 ssh를 통해 문제풀이 서버에 접속해봅시다. (접속 패스워드는 guest 입니다. 중간에 fingerprint 뭐시기가 나오면 yes 누르시면 되요.)접속에 성공했으니 일단 환경부터 분석해보죠..

오늘은 다시 Webhacking 문제로 돌아왔습니다. 딱히 Reversing.kr 2번 문제의 Serial 개념이 이해가 안가서 그런건 아니구요... 아무튼 소스를 다시 봅시다. php로 쓰여져 있네요. 저는 php를 공부를 안해서 이런거 풀때마다 문서를 찾아보면서 합니다. 핵심 코드를 살펴보면, $pat 변수 안에 php 정규식을 담습니다. 그 후 preg_match 함수에서 val 파라미터가 $pat 정규식 일치하는지 아닌지를 판단합니다. php 정규식을 해석해보겠습니다. php에서 정규식은 / 문자로 감싸져야 합니다. [1-3] 은 1부터 3 범위 안에 있는 숫자가 들어가야 한다는 뜻입니다. 그러면 [1-3] 은 1, 2, 3 셋 중에 하나가 들어가면 되겠네요. 뒷 부분도 마찬가지입니다. [a-f]..

본 작성자는 처음으로 리버싱 문제를 풀어보는 것이라 풀이 방법이 매우 야매적이거나 복잡할 수 있습니다. 학습에 참고만 하시길 부탁드리겠습니다. 본 문제풀이는 기본적인 리버싱 기초를 바탕으로 합니다. 리버싱에 대한 기초가 없다면 콘치의 리얼리티 3000% 리버싱 튜토리얼(https://bpsecblog.wordpress.com/2016/05/27/re_tutorial_1/) 의 강의를 먼저 보고 오세요. 앞서 ollydbg의 핵심 키를 설명하겠습니다. CTRL + F2 : 프로그램 재시작 F9 : 프로그램 시작 / 프로그램이 BreakPoint에 걸렸을 시에는 다음 명령을 계속 수행 F7 : 명령 단위(1줄) 로 수행 F2 : Breakpoint 지정 웹해킹 문제를 뒤로한채 오늘은 리버싱 문제를 풀어봤습니..

전체적인 분위기는 육상경기 트랙같은 느낌입니다. 회색 칸 왼쪽의 O 표시가 저 인것 같고, 노란색 골라인으로 들어가면 될 것 같네요. O 표시의 코드를 분석해보니 클릭하면 발생하는 이벤트가 있네요. a태그(O표시)의 왼쪽 좌표를 클릭할때마다 1씩 증가시키는 내용입니다. 클릭해보면 매우 조금씩 움직여서 하나하나 클릭하기도 쉽지 않습니다. 그럼 크롬 개발자 도구를 사용해 이를 수정해 봅시다. onclick="(코드)" 코드 부분을 더블클릭하면 수정이 가능합니다. this.style.left=parseInt(this.style.left, 10) + 1 + 'px'; ~~~ 부분에서 1 부분이 아마도 증가시키는 부분 같습니다. 그러면 이를 약 100 정도로 바꿔봅시다. 그리고 a태그 위치값을 아예 바꿔서 더 빠..

이번 문제는 쉬운 편입니다. 소스를 확인해보겠습니다. 첫 번째 코드는 user 쿠키값이 없을 시의 조건문입니다. user 쿠키값이 없을 시 "guest", "123qwe" 를 각각 base64 인코딩을 20번 반복하고 1, 2, 3, 4, 5, 6, 7, 8 숫자를 각각 !, @, $, ^, &, *, (, ) 로 치환하고, 각각 user, password 쿠키값으로 저장하는 코드입니다. 두 번째 코드는 user 와 password 쿠키값을 가져오고, 위와 같이 특수문자를 숫자로 치환한 뒤 base64를 20번 디코딩 한 후 나온 결과값이 각각 admin, nimda 일 시 해결되는 문제입니다. 알고리즘은 간단하니 코드를 작성해보도록 할게요. import base64 text = "admin" for i..