본문 바로가기
반응형

pwnable.kr4

[pwnable.kr] random random이라는 문제입니다. random함수의 취약점에 관련된 문제일 것 같네요! 문제에 접속해 봅시다. 코드와 바이너리를 모두 제공해주고 있습니다. random 값과 입력받은 key의 값을 XOR 해서 0xdeadbeef 가 나오게하면 되는 코드입니다. 여기서 random 함수를 잘못사용하고 있는 것을 알 수 있습니다. 진짜 random 값을 출력하게 하려면 srand(time(NULL)) 를 사용해야 합니다. 그냥 이렇게 함수를 사용하면 계속 고정된 값이 나오게 됩니다. gdb를 이용해 main을 봅시다. rand함수를 거친뒤의 random변수를 가리키기 때문에 main+18에 bp를 걸어 rax를 확인합니다. rax 값이 0x6b8b4567 이고, 이 값과 입력 값을 XOR 해서 0xdeadbee.. 2020. 2. 7.
[pwnable.kr] flag pwnable.kr의 flag라는 문제이다! 이번 문제는 pwanble이 아니라 reversing이라고 한다! 바이너리를 받아서 gdb를 실행시켜보니 자꾸 심볼이 없다고 한다. 이럴 경우 packing이 되어있나?! 하고 의심해 봐야한다고 한다 ㅠㅠ 실행시켜 보면 malloc하고 strcpy해서 flag를 획득하라고 한다. IDA로 보아도 디컴파일 해주지 못한다! 그리고 IDA로 보다보면 의심되는 부분을 발견할 수 있다. 그렇다! 이 바이너리는 upx packing이 되어있는 것이었다! 그리고 다른 롸업들을 보다보니 안건데.. 이래서 문제를 잘 읽어야한다고... 스크립트에 이렇게 친절하게 "Papa brought me a packed present! let's open it." 이라고 packing이 되.. 2019. 11. 11.
[pwnable.kr] bof pwable.kr 도장깨기 다시 시작 ㅎㅎ 이번에 볼 문제는 bof이다. 기초적이지만 중요한 bof (buffer overflow)!! http://pwnable.kr/bin/bof.c http://pwnable.kr/bin/bof nc pwnable.kr 9000 바이너리의 소스코드를 보면 다음과 같다. #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); } } int main(int argc, char* argv.. 2019. 11. 11.
[pwnable.kr] unlink pwnable.krToddler's Bottle의 마지막 문제인unlink문제를 보겠습니다! 문제를 먼저 풀어보고 싶은 사람은 아래 링크로 고고! pwnable.kr 문제 분석하기 우선 문제의 제목대로 unlink문제는 unlink corruption에 관한 문제입니당 후후 문제 바이너리를 쭉 살펴봤을 때 보이는 특징은 다음과 같습니다. 1. system함수를 주고있어요!!! shell을 따는 문제라는 것을 알 수 있으며, 나중에 요 함수를 호출할 날이 올 것을 고대하고 있으면 되겠네용 2. 그 취약하기로 유명한 gets함수로 입력을 받고 있어요!!! overflow 냄새가 납니당 ㅎㅎ 3. stack /heap 주소를 친절하게 leak해서 알려주고 있어요!!! 주소를 다 알려주었으니 main함수의 re.. 2019. 10. 7.
반응형