goblin -> orc

今回は環境変数を使えないそしてRETの最後が\\xbfじゃないとプログラムが終了されるじゃあ、bufferにはシェルコードを入れて、bufferが始まるアドレスを探してそれをRETに上書きすればできるソースコードを再コンパイルしてダンプを作ろうesp-80ぐらいの地点を見てみよう0xbffffcb0

2021년 8월 12일
·
0개의 댓글

cobolt -> goblin

coboltとは入力方式だけ違う説明なしに攻撃環境変数を作るアドレスを探す今度もアドレスは0xbfffff6e攻撃コマンドクリア

2021년 8월 11일
·
0개의 댓글

gremlin -> cobolt

ヒントは以下のやつ今度はbufferが16バイトgdbで見てみようstrcpyを呼び出している<main+48>の上に引数がある<main+44>でbufferの位置がebp-16であることをわかった攻撃してみようebpまで16バイト+SFPの4バイト=20バイトを意味なしの文字に上書き

2021년 8월 11일
·
0개의 댓글

gate -> gremlin

次はヒント。strcpyは文字列の長さチェックをしないため、BOFを引き起こせる。gdbで逆アセンブル。<main+54>でstrcpyを呼び出している。引数はbuffer、argv1。スタックは引数を逆順に並べ替える。したがってebp-256がbufferの位置である。しかしスタックにはeb

2021년 8월 11일
·
0개의 댓글

[완결] 후기

Level 8 정도까지는 OS 사용에 대한 문제가 나와서 쉬웠지만 그 이후로 어셈블리어를 통한 버퍼 오버플로우 문제가 나와서 처음에는 이해가 힘들었다.그러나 스택이 어떻게 형성되는지만 이해하면 살짝씩만 바꿔 놓은 문제들은 쉽게 공격법을 파악할 수 있었다.Red Hat

2021년 8월 10일
·
0개의 댓글

FTZ Level 20

대망의 마지막 문제다.hint는 다음과 같다.fgets를 이용한 표준 입력을 받고 있다. 그러나 이번에는 길이 제한이 bleh보다 작기 때문에 버퍼 오버플로우가 일어나지 않는다.하지만 printf를 보니 포맷 스트링 버그가 발생하는 부분이 있다.포맷 스트링 버그에 대해

2021년 8월 10일
·
0개의 댓글

FTZ Level 19

hint는 정말 짧다.Level 18에서 엄청나게 긴 코드를 주더니 이번 문제에서는 달랑 5줄이다.gets 함수를 사용하므로 문자열 길이를 체크하지 않고, 버퍼 오버플로우가 발생할 수 있다.그러나 이전 문제와는 다르게 setreuid 함수조차 없다. 그러므로 setre

2021년 8월 10일
·
0개의 댓글

FTZ Level 18

hint의 코드가 상당히 길고 어려워서 아래에 따로 옮기고 주석을 붙였다.해석이 어렵지만, 초반의 변수 선언 부분을 보면 이전까지와는 다르게 check가 string보다 나중에 선언되고 있기 때문에 check를 일반적인 방법으로 변조할 수 없다. 그러나 switch문의

2021년 8월 10일
·
0개의 댓글

FTZ Level 17

hint는 다음과 같다.Level 16의 소스 코드와 비슷하지만, 이번에는 shell 함수가 없고 setreuid 함수가 main 함수 안에서 호출되고 있다. system 함수를 통한 쉘 실행이 없기 때문에 쉘코드를 사용해야 한다.printit 함수의 시작 주소가 ca

2021년 8월 10일
·
0개의 댓글

FTZ Level 16

hint는 다음과 같다.이번에는 함수가 3개다. main 함수를 보면 call이라는 void형 포인터에 printit 함수의 주소를 넣고, fgets 함수가 실행된 이후에 호출하는 것을 볼 수 있다.20바이트의 buf에 48바이트만큼의 입력을 허용하고 있기 때문에 버퍼

2021년 8월 10일
·
0개의 댓글

FTZ Level 15

hint는 다음과 같다.이번에는 check 변수가 포인터로 선언되었다.포인터가 가지는 값은 특정한 주소가 가리키는 값이기 때문에 0xdeadbeef를 직접 넣으면 0xdeadbeef가 가리키는 값을 찾아가게 된다. 이 문제에서는 포인터에 들어간 주소가 가리키는 값이 0

2021년 8월 10일
·
0개의 댓글

FTZ Level 14

hint는 다음과 같다.이번에는 실행 인자가 아니라 fgets로 입력을 받는다.Level 9와 비슷하게 길이 제한이 buf보다 25바이트나 크기 때문에 버퍼 오버플로우가 발생할 수 있다.그리고 Level 13과 비슷한 check라는 변수가 있는데, 변수의 값이 0xde

2021년 8월 10일
·
0개의 댓글

FTZ Level 13

hint는 다음과 같다.이번에는 버퍼 오버플로우를 방지하기 위한 장치가 있는 것을 볼 수 있다.i가 변조될 경우 버퍼 오버플로우로 인식해 프로그램을 강제로 종료한다.argc가 1보다 클 때 strcpy 함수가 실행되기 때문에 이번 문제는 실행 인자를 통해 입력을 받는다

2021년 8월 10일
·
0개의 댓글

FTZ Level 12

hint는 다음과 같다.문자열을 프로그램 실행 인자에서 가져오던 것이 gets 함수로 바뀐 것을 빼면 Level 11과 별다른 점이 없다.소스 코드를 다시 컴파일하고 gdb로 뜯어 보았다.<main+0>, <main+1>에서 스택의 기본 프레임을 만들고 &l

2021년 8월 10일
·
0개의 댓글

FTZ Level 11

hint는 다음과 같은 소스 코드다.attackme의 소스 코드인 것 같다.attackme는 level12 권한으로 setuid가 걸려 있다.attackme에 대한 권한이 없으므로 힌트에 나온 소스 코드를 gcc로 새로 컴파일 후 gdb로 역어셈블한다.<main+

2021년 8월 8일
·
0개의 댓글

FTZ Level 10

hint는 다음과 같다.공유 메모리란, 다수의 프로세스에서 동시에 접근 가능한 메모리이다.C언어에는 이 공유 메모리에 접근 가능한 함수로 shmget이 있다.key_t는 공유 메모리를 구별하는 식별 번호이기 때문에 shmget을 이용할 수 있다.먼저 ipcs 명령어를

2021년 8월 8일
·
0개의 댓글

FTZ Level 9

hint는 다음과 같다.본격적으로 버퍼 오버플로우 문제가 나온다.먼저 개념에 대해 설명한다.버퍼 오버플로우란, 프로그램의 정해진 버퍼 사용량을 넘치게 만들어 의도되지 않은 동작을 일으키는 기법이다. 컴퓨터 구조와 관련된 문제이기 때문에 어셈블리어 등의 로우레벨 지식이

2021년 8월 8일
·
0개의 댓글

FTZ Level 8

hint를 확인해 보았다.shadow 파일은 리눅스 사용자들의 암호화된 패스워드를 담고 있는 파일이다.shadow 알고리즘은 해시 함수이기 때문에 일반적인 방법으로는 복호화할 수 없고, 브루트포스(무차별 대입)을 사용해서 복호화해야 한다.주어진 힌트는 용량이 2700이

2021년 8월 8일
·
0개의 댓글

FTZ Level 7

hint는 다음과 같다.한 번 /bin/level7을 실행해 보자.패스워드를 입력하라고 하길래 아무렇게나 입력했더니 이상한 문자열이 출력되고 종료된다.딱 봐도 2진수다.\-가 1이고, \_가 0인 것 같다. 중간에 공백도 있으니 구간 하나 당 문자열 하나를 뜻할 것이다

2021년 8월 8일
·
0개의 댓글

FTZ Level 6

level6으로 접속했더니 다음과 같은 힌트가 나왔다.인포샵이 뭔지도 잘 모르겠다.인터넷에 검색해 보니 PC통신 시절에 쓰이던 BBS라는 것 같다.엔터를 치고 아무런 BBS에나 접속을 해 보았다.될 리가 없다. 이미 다 없어진 BBS일테니 말이다.3개 다 어디서 들어본

2021년 8월 8일
·
0개의 댓글