'Wargame'에 해당되는 글 454건


Secuinside CTF 문제였던 것 같다. 소스를 볼수 있는 주소가 있어서 다운받아봤다.

Functions.php 파일을 보면 다음과 같이 DB에서 뽑아온 path값이 hacked가 되어야 한다.  

get_layout을 호출하는 index.php를 보면 extract를 통해 get방식으로 넘긴 값을 변수화 하고 이를 통해 세팅된 $_skin 변수값이 get_layout함수의 인자로 넘어간다.

다음과 같이 _skin값을 조작해서 hacked를 리턴시키려 했는데 magic_quotes_gpc가 걸려있는지 제대로 안먹혔다.

그래서 아예 디비설정자체를 내 DB로 연결시켜서 hacked를 리턴시키도록 만들면 될 것 같았다.
먼저 테이블이랑 컬럼 데이터 세팅해주고 외부에서 붙을 수 있도록 권한 설정을 해줬다.

마지막으로 요렇게 날려주면 인증값이 날라온당.


'Wargame > wargame.kr' 카테고리의 다른 글

wargame.kr Crypto Crackme Basic  (0) 2018.05.09
wargame.kr dun worry about the vase  (0) 2018.01.08
wargame.kr adm1nkyj  (0) 2018.01.08
wargame.kr jff3_magic  (0) 2018.01.08
Wargame.kr keypad CrackMe  (0) 2018.01.04
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

들어가보면 소스만 떡하니 나와있다.

분석해보면 pw랑 flags를 알아야 된다. 카운트 제한때문에 블라인드는 안된다.
요런식으로 쿼리를 날리면 패스워드 컬럼명을 알아낼 수 있다.

이제 id랑 pw를 구한다.

마지막으로 flag 구하면 끝난다.

id , pw , flag 값 넘기면 인증flag가 나온다.


'Wargame > wargame.kr' 카테고리의 다른 글

wargame.kr dun worry about the vase  (0) 2018.01.08
wargame.kr mini TBR  (0) 2018.01.08
wargame.kr jff3_magic  (0) 2018.01.08
Wargame.kr keypad CrackMe  (0) 2018.01.04
wargame.kr QNA  (0) 2018.01.04
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

wargame.kr 24번 jff3_magic 이라는 문제다.

점수는 800 point.

즐기고 가라는 부분인 것 같다. 시작해보자.

들어가보면 로그인화면이 나오고 여러 메뉴들이 존재한다. 근데 뭘해도 다시 원래 페이지로 돌아간다. 

이것저것 해보니 메뉴 버튼을 눌렀을대 no라는 인자를 넘기는데 여기에 쿼리 입력이 가능했다.


소스에선 딱히 볼게 없었꼬 이를 바탕으로 이것저것 값을 넣어 보내다보니 no=-1 || 1 이런식으로 넘겨줬을 때 admin 이라는 아이디를 보여줬다.  or,substr 등 필터링이 되있는 부분들이 좀 있어서 우회한다고 시간이 좀 걸렸다.

다음은 필자가 짠 파이썬 스크립트이다. 먼저 length는 막혀있지 않기때문에 pw의 길이를 구한다. 


다음으로 substr이 막혀있기 때문에 REGEXP라는 정규식 함수를 이용해 값을 구했다. 이부분에서 우회

방법을 찾느라 시간이 많이 들어갔다.

근데 키 값을 구하고 입력해보니 틀렸다고 하면서 이상한 값을 뱉어준다. 그 값을 구글에 쳐보니 Haval128,3 이라는 암호화 방식이란다.


이 때 예전에 한번 풀어봤던 것 처럼 암호화 했을 때 0e방식으로 나오면 지수형으로 비교가 되 type 비

교 취약점으로 인해 조건이 참이 되었던 magic hash가 떠올랐다. 혹시해서 Haval128,3에도 그런값이

있나 찾아봤다. 역시나 있었다. 그래서 입력해 보니 안된다. ..? 뭔가 싶어서 Haval,128,4 128,5도 입력

해봤는데 Haval 128,5의 Magic hash 값을 넣으니 플래그를 뱉었다. 이부분은 왜 3이라고 찾았는데 5

에서 됬는지 모르겠지만 일단 중요한 문제는 아닌 것 같다. 

어쨌든 성공!


'Wargame > wargame.kr' 카테고리의 다른 글

wargame.kr mini TBR  (0) 2018.01.08
wargame.kr adm1nkyj  (0) 2018.01.08
Wargame.kr keypad CrackMe  (0) 2018.01.04
wargame.kr QNA  (0) 2018.01.04
wargame.kr phc? c?  (0) 2018.01.04
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

코드를 보면 이전단계와 같이 버퍼에 쉘코드를 넣을 수 없다. 버퍼에 입력되는 값이 실행파일의 인자값에서 사용자 입력값으로 바뀌었다는 것 빼고는 달라진게 없다.


입력하는 형식만 바꿔줘서 이전과 같이 환경변수에 쉘코드 올린상태로 익스하면 된다.



'Wargame > Lord Of the Bof(redhat)' 카테고리의 다른 글

LOB wolfman -> darkelf  (0) 2018.01.08
LOB orc -> wolfman  (0) 2018.01.08
LOB goblin -> orc  (0) 2018.01.08
LOB gremlin -> cobolt  (0) 2018.01.08
LOB gate -> gremlin  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

코드를 보면 버퍼 크기가 작아 버퍼에 쉘코드만 못올릴뿐 일반적인 bof다. 환경변수에 쉘코드 올려놓고 ret덮어주면 된다.



잘나온당.

'Wargame > Lord Of the Bof(redhat)' 카테고리의 다른 글

LOB wolfman -> darkelf  (0) 2018.01.08
LOB orc -> wolfman  (0) 2018.01.08
LOB goblin -> orc  (0) 2018.01.08
LOB cobolt -> goblin  (0) 2018.01.08
LOB gate -> gremlin  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

코드를 보면 기본적인 bof 문제다.



환경변수에 쉘코드 세팅해놓고 RET에 환경변수 주소 덮어줬다.



잘나온당.

'Wargame > Lord Of the Bof(redhat)' 카테고리의 다른 글

LOB wolfman -> darkelf  (0) 2018.01.08
LOB orc -> wolfman  (0) 2018.01.08
LOB goblin -> orc  (0) 2018.01.08
LOB cobolt -> goblin  (0) 2018.01.08
LOB gremlin -> cobolt  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

FTZ level20

2018. 1. 7. 23:08

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

FTZ level19

Wargame/FTZ 2018. 1. 7. 23:07

코드를 보면 다음과 같다. 특별할게 없는 코든데 setreuid가 없어서 권한상승이 안된다.

 

두가지 방법으로 풀 수 있는데 setreuid가 포함된 쉘코드를 올리는 방법과 RTL Chaining으로 푸는 방법이 있다.

 

개념정리 및 연습도 할겸 RTL Chaining 기법으로 풀었다.

 

 

익스할 구조는 SFP + "setreuid 주소" + " gadget(pop pop ret)" + "setreuid 인자1" + "setreuid 인자2" + "system 함수주소" + "dummy 4byte" + "/bin/sh"

요렇게 해주면 된다.

 

그럼 이제 필요한 재료만 구해주면 된다.

 

먼저 호출할 함수들의 주소를 얻기 위해 간단히 소스짠 후 gdb로 주소를 구했다.

setreuid = 0x420d7920

system = 0x4203f2c0

 

 

 

다음으로 objdump로 gadget을 구했다. setreuid의 인자값이 2개이기 때문에 pop pop ret 구조인 gadget을 찾았다.

덤프된 내용을 보면 80489d 주소에 pop pop ret가 연속으로 이루어지고 있어 해당 주소를 사용했다.

 

 

마지막으로 /bin/sh 문자열이 담긴 주소를 구하면 되는데 system 함수내에 있는 /bin/sh를 구하는 방법과 환경변수에 /bin/sh를 등록하고 환경변수 구하는 두가지 방법 중 환경변수를 통해 구하는 방식을 썼다.

 

 

이제 필요한건 다 구했으니 그대로 익스해주면 된다.

 

 

 

잘나온당.

 

 

 

 

 

 

 

 

'Wargame > FTZ' 카테고리의 다른 글

FTZ level20  (0) 2018.01.07
FTZ level18  (0) 2018.01.07
FTZ level17  (0) 2018.01.07
FTZ level16  (0) 2018.01.06
FTZ level15  (0) 2018.01.06
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

FTZ level18

Wargame/FTZ 2018. 1. 7. 17:36

소스를 보면 다음과 같다. check 변수의 메모리 영역을 0xdeadbeef값으로 덮어야되는데 입력값이 들어가는 string 변수 영역이 check 변수보다 아래의 존재해 bof로는 덮을 수가 없다. 아래의 소스를 좀더 보면 switch문에서 0x08값이 들어오면 스트링 배열의 인덱스값이 1씩 감소한다. 즉 입력값으로 \x08을 한번 넣어주면 string[-1]요런식으로 들어가서 string 변수 위에 존재하는 check 변수 영역을 덮을 수 있게 된다.  

 

 

필요한 개념은 다 끝냈으니 바로 익스하면 되는데 string 배열 과 check 사이에 더미가 얼마 존재하는지 모른다. gdb로 까서 구하면 되겠지만 귀찮아서 그냥 4바이트씩 늘려가면서 대입했다.

 

 

 

 

'Wargame > FTZ' 카테고리의 다른 글

FTZ level20  (0) 2018.01.07
FTZ level19  (0) 2018.01.07
FTZ level17  (0) 2018.01.07
FTZ level16  (0) 2018.01.06
FTZ level15  (0) 2018.01.06
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

FTZ level17

Wargame/FTZ 2018. 1. 7. 17:01

소스를 보면 이전단계와는 다르게 함수포인터를 덮어서 대체할만한 쉘을 실행할수 있는 함수가 정의되어 있지 않다.

그럼 특정 메모리 영역에 쉘코드를 올려놓고 해당 메모리영역으로 함수포인터를 덮어주면 된다.

 

먼저 환경변수에 쉘코드를 올려놓았다.

 

 

gdb로 확인해보면 함수포인터는 buf 20byte + mmy 20byte + 함수포인터 요런식으로 이루어져있었고 바로 환경변수 주소 구한 뒤 익스했다.

 

 

 

'Wargame > FTZ' 카테고리의 다른 글

FTZ level19  (0) 2018.01.07
FTZ level18  (0) 2018.01.07
FTZ level16  (0) 2018.01.06
FTZ level15  (0) 2018.01.06
FTZ level14  (0) 2018.01.06
블로그 이미지

JeonYoungSin

메모 기록용 공간

,