- Today
- Total
목록분류 전체보기 (300)
Phantom
음... ELF바이너리 문제인데 Wrong과 Correct이런문제같다. 아직 PE와 ELF에 대해 자세히 공부하지는 않았다. 나중에 공부를 해야겠다 아무튼 gdb로 디버깅하려했는데 file명령어로 보니 stripped 되어있었다. IDA로 바이너리를 열어봐야겠다. Main 함수는 이렇다. xor_func를 보면 다음과 같다. 배열이 선언되는데 char[5]이다. 이 조건들을 간단히 하면.. char data[5]; data[0] = data[0] ^ 0x34 data[1] == '1' data[2] = data[2] ^ 0x32 data[3] = data[3] ^ 0x88 data[4] == 'X' data[5] ==NULL data[2] == '|'(0x7C) data[0] == 'x' -> data[..
This MP3 Player is limited to 1 minutes. You have to play more than one minute. There are exist several 1-minute-check-routine. After bypassing every check routine, you will see the perfect flag. 이것이 ReadMe에 적혀있는 문장이다. 이 MP3 Player는 1분으로 제한되어있다. 1분 이상 재생해야 한다. 몇몇의 1분체크루틴이 존재한다. 모든 체크루틴을 우회한 후에, 너는 완전한 flag를 볼 수 있을것이다. 라고 발번역을 하면 이렇게 된다 하핫.. 실행 모습은 이렇다. 그리고 1분이 지나면 이렇게 메시지가 출력되며 다시 위의 상태로 돌아간다. 우..
ReversingKr UnpackMe Find the OEP ex) 00401000 이번 txt파일에는 이렇게 적혀있었다 OEP를 찾으라는 것이다. OEP(Original Entry Point) : 프로그램의 진짜 실행 위치를 뜻한다. 패킹된 바이너리에서 언패킹을 하고 OEP로 가게 되면 원래 프로그램의 흐름이 보이게 되는 것이다. 문제는 패킹되어있으나 무엇으로 되어있는지 모른다. 직접 패킹을 풀어봐야 알것 같다. 음...UPX처럼 처음에 PUSHAD라도 있으면 POPAD를 찾을텐데 그런게 없다.. 직접 트레이싱을 해봐야겠다. 이 문제는 풀이는 쉽다 근데 하다보니 분석을 하게 되었다. 우선 kernel32.dll아스키값을 PUSH하고 LoadLibrary 함수를 실행시켜 라이브러리를 로드하고 라이브러리 ..
ReversingKr KeygenMe Find the Name when the Serial is 5B134977135E7D13 압축을 풀고 ReadMe.txt를 열면 저 문장이 나온다. 시리얼값은 찾은 듯 하고 이제 파일에 대한 분석을 해야겠다. 이번도 역시 C++로 짜여져 있다. 실행을 하면 다음과 같이 나온다. 맞지 않은 Name을 입력해서 그런지 Wrong이라는 메시지를 출력하고 프로그램은 종료 됐다. 이번도 역시 Wrong이라는 문자열을 추적해서 문제를 푸는 쪽으로 가봐야겠다. 역시나 분기문이 존재 했다. 입력 함수를 찾고 거기에 BP를 걸고 트레이싱을 한다. 이것이 XOR 루프인데 여기서 스트링을 XOR시켜버린다. 맨 아래부분은 문자열의 길이를 비교하고 JMP시키는 명령이다. 문자열의 길이는 루..
음.... 나는 리버싱을 다시만지는 것은 참 오랜만이다. 많은 정보를 듣고 머리로 저장만해두고 사용해본적이 오랜만이라는것 또한 같다. 그리고 나는 포너블과 취약점 분석을 더 잘하기 위해 리버싱을 시작했다. 시원포럼에 다녀와서 느낀것을 가지고 리버싱을 시작했다. 첫 문제는 Easy_CrackMe이다. 프로그램을 실행하면 막연히 이렇게 나온다. 저곳에 값을 넣고 확인을 누르면 이렇게 나온다. 이제 분석을 시작해보자. 우선 PEID로 본 결과 C++로 짜여진 것을 알 수 있다. 이뮤니티로 위에서 출력된 Incorrect Password를 찾아보자 위에 스트링 값을 추적해보면 분기가 존재하게 된다. 위로 올라가서 분기문을 추적해보자. 입력함수 아래서부터 비교값과 루프가 존재한다. 그리고 루프가 끝나는 지점에서 ..
개요 이번 문제는 ROP문제 3대장중 2번째인 nuclear다. 저번 ropasaurusrex가 아주 심플한 ROP였다면 이번 문제는 함수Libc를 leak해야 한다. 문제 내용 및 분석 1129 port로 연결하고 accept후 fork가 되면 subroutine으로 이동하게 된다. 로컬의 THIS_IS_NOT_KEY_JUST_PASSCODE를 stream에 저장하고 fread로 s에 읽어온다. 각 명령어를 입력하고 target을 입력하면 Latitude/Longitude를 입력한다. 여기서 이 else문을 이용하여 v5, v4를 지나서 char s에 있는 pascode를 leak한다. 그리고 launch와 leak한 passcode를 입력하여 thread를 생성하고 newthreadroutine()으..
개요 이 문제는 ROP 기법을 공부하는 사람들이라면 한 번 쯤 풀어본다는 2013년도 pCTF의 Ropasaurusrex 이다. 이전 흑객이라는 스터디에서 Hackerschool의 문제로 아주 쉬운 ROP를 한적이 있는데 개인적으로 많은 자료들을 인용하고 보고 배우며 삽질은 한 문제이다. 문제 내용 파일을 실행하고 아무거나 입력하면 “WIN”이라는 문자열을 출력하고 종료한다. 너무 짧게 넣었나??무지 많이 넣으니 세그멘테이션 폴트가 뜨고 종료한다. 단순한 BOF문제일까?일단 파일에 대해 알아보자.32bit ELF 바이너리이며이번에 안 사실인데 stripped라고 되어 있다면 main함수는 어셈이 보이지 않을 것이다. 보호기법으로는 NX가 걸려 있다. 그리고 OS환경상 ASLR이 걸려 있다. NX(No E..
FC3에 입성 했다.전의 LOB와는 달리 페도라 코어 3에는 다음 메모리 보호기법이 추가되었다.[환경 요약]Stack Dummy : ODown privileage of bash : ORandom Stack : ORandom Library : XRandom Program Binary Mapped : XASCII Armor : ONon-Executable Stack : ONon-Executable Heap : OStack Carany : XStack Smashing Protector : X 요약하자면 ASLR은 스택에만 걸려 있고, ASCII Armor, NX가 스택과 힙에 걸려 있다.ASLR이란 Address Space Layout Randomization – 프로그램의 메모리영역을 랜덤화 시키는 것이다...
내가 가장 헷갈려하고 아직도 헷갈리는 리모트 문제이다.이번 문제는 리모트 익스플로잇 문제인데. 소스를 분석해보자면 6666번포트를 열고 기다리는 일종의 서버?랄까 데몬이랄까 자세히는 아직 잘 모르겠다. 그저 리슨중인 소켓이라 하자.여기서 취약점은 buffer는 [40]인데 원격으로 받는 입력은 Recv(client_fd, buffer, 256, 0)으로 256만큼 입력받는다. 여기서 BOF가 발생한다.문제는 간단한데 이제…바인드 쉘을 쓸지 리버스 쉘을 쓸지 그리고 설정을 어떻게 해야하는지 너무나 고민이 되었다. 나는 리버스쉘을 사용했다. LHOST는 원격지 호스트(공격자)LPORT는 음..아직 모르겠어서 같은 포트로 설정했다. 그리고 포맷을 파이썬으로 설정하고 generate. 이렇게 페이로드를 짜고....
자.. 이제부터는 나만의 글을 적어보려 한다. 우연치 않은 기회로 얻게 된 코드게이트, 처음엔 떨리고 설레였다. 그리고 락피킹이냐 사회자냐의 기로에 섰을 때 솔직히 나는 사회자라는 욕심도 있었고 락피킹도 하고싶었다. 하지만 사회자가 더 하고 싶었다. "더 큰" 자리라기보다는 "사회"라는 것에 더 큰 매력을 느꼈다. 그 매력은 장소 정보를 희미하게 알고 그것만으로 부족해서 직접 DDP의 사진을 찾게 되면서 조금 무겁게 느껴졌다.생각한것보다 컸다.- 이사진은 행사 당시 사진 그렇게 차분히 준비를 하는데 자료가 조금 늦게 도착한 감이 없지 않아 있었다. 아니면 내 스스로도 조금 시간이 촉박해서 그런것일까? 조금 준비에 부족했던것 같다. 알고보니 최종 기한이 따로 있더라.. 내가 너무 급했다. 발표자들에게 먼저..