본문 바로가기

전체 글263

[HackCTF] (Pwnable) Basic_BOF #1 풀이 hackctf에서 풀어보는 첫번째 포너블이다. 재밌겠다ㅎㅎ 문제파일을 ida로 열어봤다. 사진은 짤렸지만 fgets에서 stdin으로 입력을 받고, buf의 내용과 check의 주소를 출력해준다. check와 0x4030201을 비교하고 같으면 0xDEADBEEF와 비교한다. 그것도 같으면 you are on the right way ! 을 출력한다. 하지만 check가 두개의값을 동시에 만족할수는 없으니 눈속임에 불가하다. 두 값을 비교해 맞았든 틀렷든 loc_8048543 으로 이동하고 check와 0xDEADBEEF를 비교한다. 맞으면 Shell을 열어준다. GDB로 열어보면 버퍼의 주소는 EBP-0x34이고, check의 주소는 EBP-0xC이다. fgets로 입력받기때문에 버퍼오버플로우가 발생하.. 2020. 3. 3.
[HackCTF] (Reversing) Strncmp 풀이 문제를 다운받아 실행해보자 아무거나 입력하면 Always dig depper 이라 출력하고 종료한다. 항상 삽질하라는 충고같다. rsi, rdi (입력값) 을 인자로 주고있다. 그렇다면 rsi 를 확인해보자 main+188 에 BP 를 걸어 rsi 값을 확인해보자 이상한 문자열이 나온다. 이걸 입력해보면 Good game이라고 나온다. 하지만 이게 flag가 아니라는걸 알수있다. 힌트로 준것처럼 계속 삽질을 해보면 위에 나온 strcmp 함수 뒤에 _ 이 붙어 사용자가 작성한 함수인걸 알수있다. 한번 확인해보자 [loc_400712] 문자열에서 하나씩 값을 가져와 key와 xor 후 다시 s (사용자 입력 문자열) 에 덮어쓴다. (덮어쓰는것처럼 보이지만, gdb로 삽질하여 확인한 결과 값을 덮을려했지만 .. 2020. 3. 3.
[HackCTF] (Reversing) Welcome_REV 풀이 문제파일을 다운받아서 아이다로 열어보면 ELF 파일인걸 알수있다. 값을 입력받고, check_password함수로 값을 판단한다. 입력값을 가지고 여러 반복문을 실행하는데, 딴건 다 필요없고 핵심은 가장 아래에있는 큰박스만 보면된다. strncmp 로 edx(입력값)과 문자열을 비교하고있다. 문자열을 자세히보면 끝에 = 이 붙는걸 봐선 base64인코딩된 문자열인걸 알수있고, 디코딩해보면 FLAG가 나온다. 2020. 3. 3.
[HackCTF] (Web) Read File 풀이 문제 메인페이지다. 구글에 검색을 해봤더니 검색은 안되고, 위에 써져있는 flag.php로 이동해봤다. 역시 안뜬다. 다른사이트도 접속가능한지 확인해봤다. 블로그도 들어가진다. 그렇다면 flag.php에서 flag를 필터링하고있다고 추측해볼수 있는데, google.com뒤에 flag를 붙여서 이동해봤더니 페이지가 정상적으로 나오게된다. 따라서 flag를 필터링하고있다는걸 알게되었고, 이는 fflaglag, flflagag, flaflagg 등으로 우회할수있다. 2020. 3. 3.