본문 바로가기

WARGAME

(90)
pwnable.kr simple login 소스를 아~~주 간략히 소개하자면 입력한 값을 base64로 디코딩하고그 값이 md5 해쉬값과 같다면 correct를 실행하는건데일단 12바이트를 넣어봤다. 이렇게 12바이트를 base64로 인코딩하고 그 값을 넣어준다. EBP를 보면 마지막에 넣은 4바이트로 EBP가 설정된 것을 볼 수 있다. 그럼 이걸 이용해서 우리의 목표인 correct 함수를 실행해보자. 끝부분을 corret함수로 설정해보았다. correct의 주소는 0x0804925f인데 ebp에 설정되니 -4값인 5b를 넣어주고 실행해 봤다. ASLR이 걸린 상태여서 저부분을 바로 correct로 설정할 수 없다. 고정값을 사용하고 있는 bss의 input을 사용하도록하자.즉 ebp를 문자열 입력 시작부분으로 덮는 것이다. 이렇게 값을 넣고 ..
ropasaurusrex 우선 함수하나를 호출하고 다음 WIN을 출력하게 된다. buf가 0x88인데 0x100까지 입력받을 수 있어서 취약점이 생긴다. 135개까지는 괜찮은데 136개부터 세크먼테이션 폴트가 뜬다. NX가 적용되어 있기 때문에 쉘코드를 이용해서 푸는건 내가 못한다. ROP 기법을 사용해 문제를 풀어본건데 환경 설정 부터해보자1234567891011service rop{ flags = REUSE socket_type = stream wait = no user = root server = /home/tory/Desktop/rop disable = no} echo "rop 1234/tcp" >> /etc/servicescsxinetd 데몬을 사용해서 돌리는데 이렇게 설정하고 nc로 접속해보자. 잘 구동되는 것을 볼 ..
PDF - Javascript pdf파일을 주는데 이런게 적혀있다무시하고 안에 자바스크립트를 찾아보자 전에 써니나타스에서 이와 비슷한 문제를 푼적이 있어서그대로 해봤다 우선 이사이트에 업로드해서 자바스크립을 봤는데소스가 음 일단 실행해봤다 소스는 이렇게 생겼는데 실행하니 zjocYQp 이게 정의되지 않았단다 pdf 파일을 보면 자바 스크립트가 두개있는데다른 한개에서 zjocYQp 이 변수를 찾았다근데 소스를 보면 info에서 author, title, subject를 또 찾아야할 거같다kail를 열어 peepdf를 사용해보았다peepdf -i ch7.pdfmetadata를 실행하니 var info={ subject: "I5xlmqMpKN14VZNWuCulWR2fy4X6jS3j", producer: "MiKTeX pdfTeX-1.40...
ELF - KeygenMe 하 이문제는 역대급을 뻘짓을 많이했다 우선 name은 Root-Me라고 알려주었다 하지만 난 개뻘짓을 하였고 다른걸 입력하고있었다 시리얼도 마찬가지다 문자를 입력하면 안되고 숫자를 찾는거다 ㅂㄷㅂㄷ 다 써있는걸 못읽었다 우선 열면 프로그램상의 환영메시지를 볼 수 있다하지만 문자를 비교하는 값이 안나와있는데 위로 올리다보면 이런 값이 있는데 단축키 c를 눌러준다그럼 밑에 처럼 안보이던 80491D1함수가 나타나는데 딱봐도 그렇다 이 프로그램은 안티디버깅이 걸려있는데 이름은 3글자 이상이고시리얼은 숫자다 여기가 바로 중요한 부분인데 딱봐도 음...처음에 많이 헷갈렸지만 몇번 해보니깐 다 알 수 있다 그리고 중간중간 총 3번 rdtsc 명령어가 보인다이건 시간을 비교하는거니깐 바로 분기에 브포를 걸고 실행하면..
ELF - Random Crackme 우선 이번 문제는 상당히 쉽지만 내가 눈이 안좋아서 못푼거같다이 문제를 보면 저기 Good문자열까지 수정해가면서 가면될거같다근데? 디버깅이 안된다? 음... 파일을 보니 ar 아키텍처라고... 뭔지 모르겠다 이런건 처음봤다 ㅂㄷㅂㄷ거리면서 디버깅안하고 풀어볼려고 난리쳐보고 코딩했었는데실패!! 바보같이 멍때리고있었는데눈이 엄청 안좋다는걸 알 수 있었다. 하.. ㅂㄷㅂㄷ아무튼 저거 뒤로 다 지우면 정상적으로 디버깅이된다... 그래서 실행해보면 플래그가 나온다처음엔 저값을 password에 입력했을 때 안되서 플래그가 아닌줄 _VQLG1160_VTEPI_AVTG_3093_
ELF - Anti-debug 파일 실행 ㄱㄱ음 이번에도 패스워드를 찾아야한다 IDA로 열어보자~ 충격이였다 함수가 이게 끝이다 ㄷㄷㄷ우선 Start를 헥스레이로 보면 그냥 디버깅 못하게 하고 싶은가보다.. 다음 함수인 sub_80480E2를 보자result에서 값을 받아와서 XOR하고 result에 다시 저장한다 그럼이제 디버깅 ㄱ처음부분에 브포를 걸어준다(안티디버깅을 우회해야하기 때문) 이렇게 어셈을 바꿀 수 있는데 그냥 바로 sub_80480E2로 넘어가자 이렇게 수정하고 F8을 누른 후 헥스레이로 보면 잘 도착한 것을 볼 수 있다 result의 값은 이렇다 근데 처음부터 든 생각이였지만 저기 위에있는Enter the password: 이문자열과 성공 실패 문자열이 보이지 않는다그 문자열은루프를 다 돌아서 저장된 result의 ..
ELF - ExploitMe 지난번 문제랑 소스가 비슷한거 같다 그래서 저부분에 브포를 걸고 실행 이거랑 같아야하는데 저거는 입력이 안됨 아무튼 잘 맞게 분기해서 asm_을 실행한다 자 여기를 잘 보면 저기 &s부분이 플래그일 것이다 이렇게 내리다 보면 분기가 있는데 그냥 뭐 풀리는듯 이게 플래그였다 소름 저게 답일줄은 생각도 못했는데25260060504_VE_T25_*t*_
ELF - CrackPass IDA로 열어보면이렇게 문자열을 체크하는 부분이 나온다 s1이 뭔지 알면 될거같은데이 함수를 호출하는 부분을 찾아보자xrefs를 통해 보면 맨 밑에 함수를 호출한다 지난번 문제처럼 위에 ptrace로 디버깅을 탐지하는데그 위에 브레이크 포인트를 걸고 실행해보자 인자로 AAAA를 주고 실행했다Don't use a debuger !쪽으로 분기를하게되는데 ZF 플래그를 수정해 넘기면된다 그리고 실행해보면 아까 문자열을 비교하던 부분이 나온다s2에 내가 입력한 AAAA가 보이는 것을 알 수 있다 그럼 s1과 비교하는데 ebx를 덤프창에서 보면 저렇게 나온다 근데 분기를 보면 ebx 값을 고대로 넣고 출력하기 때문에ff07031d6fb052490149f44b1d5e94f1592b6bac93c06ca9이 와같은 값..