
가짜 동전을 총 100번 찾는 것이다. pwntools를 이용하여 이분법을 이용하여 작성하였다. 기타 위 코드에 보면 주석 처리한 두 부분이 있다. 사실 이 부분 때문에 시간이 오래 걸렸다. 그 이유는, 위 코드를 실행하면 80번 정도 시도한 후 time out이 되었고, 이것이 코드의 최적화를 하지 못하여 생긴 문제라고 파악하였다. 그렇게 한참 고민한 끝에 regex도 써보고 list comprehension도 써 보았지만 결국 해결은 되지 않았다. 이에, 검색을 해보니 직접 서버에 들어가서 해야 한단다.... 그렇게 다 풀고 문제를 보니 그렇다.... 문제에 그렇게 하라고 쓰여있네???? 앞으로 문제 풀 때 문제를 잘 보고 풀어봐야겠다 ㅠㅠㅠㅠ

파일은 총 4개이고, 조금 특이한 것은 bash파일이 이 디렉토리에 있다는 것이다. setresuid를 통해서 그룹 권한인 shellshock_pwn을 얻고 system으로 명령을 실행한다. 현재 이 디렉토리에 있는 bash는 shellshock 취약점이 있는 bash이고, 다음과 같이 환경변수를 설정해주면 된다. 기타 답은 간단하지만, shellshock라는 bash 자체의 취약점을 다루는 것이 생소했다. 사실 이해가 된 상태에서 문제가 풀린 것은 아니다. 그래서 문제를 푼 후에도 계속 알아보느라 시간이 지난 후에 이렇게 글을 쓰게 되었고, 아직도 이해를 했다고 말하기는 조금 어렵다....ㅎ - 환경 변수는 shell을 실행시키면 값을 세팅해준다. - ()

다음과 같이 총 2개가 주워지며 leg.asm을 통해서 key값에 들어가야 할 값을 설정해주면된다. key1에서는 pc 값이, key2에서는 pc + 4 값이, key3에서는 lr 값이 리턴된다. 해당 프로그램은 3단계 pipeline을 적용 한다면 다음과 같이 리턴값이 떨어진다. key1 : 0x8ce4 key2 : 0x8d0c key3 : 0x8d80 key : 108400 이 된다. 기타 사실 문제가 그렇게 어려운 것은 아니였고, arm cpu의 특성을 전혀 모르는 상태에서 풀다보니 어려움이 조금 있었다. 파이프 라인은 3단계가 아닌 더 많은 단계로 쪼갤 수 도 있다고 하나 나한테는 아직 어려.ㅂ.....ㅎㅎ 더보기 Q) - PC는 fetch를 할 주소를 가리킨다고 한다. - 파이프라인 단계는 3단..

해당 코드에서 이상한 점은 scanf시 &를 붙이지 않았다는 것이다. 이는 passcode1과 passcode2의 변수 값에 들어있는 주소로 내가 입력하는 값이 들어간다. passcode1의 값을 확인해보면 다음과 같다. 이는 name의 값 중 96번째에 해당하는 값이 passcode1의 값으로 넘어가는 것을 볼 수 있다. 해당 process 권한을 확인해보면 0x804a004의 값에 우리가 원하는 값을 Write 할 수 있는 권한이 있다. fflush의 분기문을 제어하여 *loing+127로 옮기게 되면 문제가 풀릴 것이다. 기타 처음으로 6.21~6.27까지 풀어보았고, 해결이 잘 안 돼서 정답을 살~~ 짝 봤다. 그래서 한 달 뒤인 7.26일 날 답을 보지 않고 풀었는데 생각보다 너무 수월하게 풀렸..

파일을 다운로드받으면 flag파일 하나하고 그 파일을 실행시키면 다음과같은 문자가 뜬다. 이렇게 찾는건지는 모르겠지만 xxd를 통해서 파일 상단에 upx라는 문자가 있는걸 확인할 수 있다. upx 를 해제해 주고 gdb를 통해 malloc에 저장되는 값을 확인해보자. 참고 사이트 : s0ngsari.tistory.com/entry/Heap-with-GDB Heap with GDB! 요즘 대회때 heap에 대한 문제가 넘나 많아서 힙에대한 지식좀 제대로 쌓아야겠다 공부한 내용이라 잘못된거 있으면 지적좀 해주세요 달게받겠습니다! 1 2 3 4 5 6 7 8 9 10 11 12 #include int main(int argc, s0ngsari.tistory.com

파일은 총 2개가 있고, bof.c와 bof가 있다. 해당 문제는 overflowme의 값을 overflow해서 key값을 0xcafebabe로 변경 시키면 된다. 0x61은 현재 내가 입력한 값이고, 0xdeadbeef가 0xffffd350에 있는것을 확인할 수 있다. 해당 프로그램에서 0xffffd31c~0xfffd350 까지 총 13바이트를 입력한후에 0xcafebabe를 입력하면 된다. 기타 문제 풀면서 32비트 프로그램을 64비트에서 실행시키거나, python3에서 인자값을 넘겨주는 과정중에 여러가지 에러가 있어서 하나하나 찾아 보았고 원인은 파악했다. 그러나 한가지 해결하지 못한 것이 있는데 해당 소스를 gcc를 통해 컴파일을 한 후 생긴 이슈이다. 소스파일을 조금 수정하여 gdb로 보았을 때..