'Wargame/webhacking.kr'에 해당되는 글 55건


현재 서버 문제로 막혀있는 19,28,30번 제외하고 올클했다. 62번부터 문제준비중이신거 같은데 새로 생기면 다시 더 풀어보고 싶다. 


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

webhacking.kr 53번  (0) 2018.01.18
webhacking.kr 52번  (0) 2018.01.18
webhacking.kr 51번  (0) 2018.01.17
webhacking.kr 50번  (0) 2018.01.17
webhacking.kr 49번  (0) 2018.01.17
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 53번 문제다.

점수는 350point.

들어가 보면 별거 없고 저거하나 나온다.

친절하게도 소스를 보여준다.

val값으로 $hidden_Table을 알아내야 되는데 기존에 알고 있는 지식으론 풀수가 없어서 살짝 힌트참고 ㅠ 

보니까 procedure analyse()라는 함수를 써보면 될 것 같다.

뭔가하고 찾아보니현재 실행중인 컬럼에 대한 정보를 사용가능하게  해준단다.

한번 실제로 사용을 해봤다.

첫번 째 리턴값으로 출력되는 값을 보내 DB명.테이블명.컬러명 으로 출력되고 있다.

그렇다면 ?val=3 procedure analyse()로 주면 될 것 같다.

중간에 테이블명 넣어주면 된다.

성공!


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

webhacking.kr All clear  (0) 2018.01.18
webhacking.kr 52번  (0) 2018.01.18
webhacking.kr 51번  (0) 2018.01.17
webhacking.kr 50번  (0) 2018.01.17
webhacking.kr 49번  (0) 2018.01.17
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 52 문제다.

점수는 200point. 

헤더 인젝션 문제다.

php가 \r\n을 필터링안하면 이를 이용해 헤더에 내가 원하는 헤더값을 저장할 수 있는 CRLF 공격을 
시도해봤다. 첨에 %0A%0DSet-cookie:%20id:dudtls36 으로 넣어봤는데 set-cookie가 막혀있는지 실행이 안되서 막힌문제가 싶었는데 자세히 읽어보니 클리어조건에 set-cookie대신 clear: dudtls36으로 적어내라 적혀있었다.

 

성공! 이전에 헤더 인젝션을 몇 번 봐서 기초적인 수준문제라 금방 풀 수 있었다.


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

webhacking.kr All clear  (0) 2018.01.18
webhacking.kr 53번  (0) 2018.01.18
webhacking.kr 51번  (0) 2018.01.17
webhacking.kr 50번  (0) 2018.01.17
webhacking.kr 49번  (0) 2018.01.17
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 51번 문제다.

점수는 250point.

흠 관리자로 들어가면 될 것 같다. 인젝션 문젠가?

소스있길래 확인해보니 md5($_POST[pw],true)가 눈에 띈다. 이거 예전에 wargame.kr에서 봤던 건데 출력값을 16진수가아니고 바이너리로 해줘서 '='가 포함된 출력값을 뱉는 애를 찾아주면 된다.


MySQL에서 WHERE 조건절에 pw='ABCD'='EFGH' 이와 같이 비교를 두 번하면 마지막에 있는 값은 앞에 있는 값이 참이냐 거짓이냐를 비교한다. 예를들면
select id from challenge_51_admin where id='$input_id' and pw='$input_pw'
id는 admin을 입력하고 pw에는 ABCD'='EFGH 를 입력하면 결과는 다음과 같다.
select id from challenge_51_admin where id='admin' and pw='ABCD'='EFGH'
select id from challenge_51_admin where id='admin' and pw='ABCD'='EFGH'
pw가 ABCD는 거짓이다.
select id from challenge_51_admin where id='admin' and 거짓='EFGH'
EFGH는 문자이기 때문에 거짓과 같은 의미를 가진다.
select id from challenge_51_admin where id='admin' and 거짓=거짓
따라서, 거짓=거짓은 참이기 때문에 참인 조건이 된다.

그럼이제 '='뱉는 애만 찾아내면 될 것 같다.코드짜서 돌려봤다.

11616635 비번주고 실행해봤다.

Clear!


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

webhacking.kr 53번  (0) 2018.01.18
webhacking.kr 52번  (0) 2018.01.18
webhacking.kr 50번  (0) 2018.01.17
webhacking.kr 49번  (0) 2018.01.17
webhacking.kr 48번  (0) 2018.01.17
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 50번 문제다.

점수는 450 point.

sql injection문제다. 

소스 있길래 확인해 봤다.

45번에서 봤던 mb_convert_encoding 함수가 보인다. '쿼터 우회해서 3값만 나오게하면 간단할 것 같다. 근데 union이 id에서 필터를 당한다. 그러면 union을 pw쪽에서 주면 될 것 같다.
id=%aa'/*&pw=*/union%09select%093# 이런식으로 주면

select lv from members where id='%aa'/*' and pw=md5('*/union select 3#')

/**/주석처리로 인해 빨간 부분들이 날라간다.

이제 위에 특수기호만 url인코딩해서 넘겨줘봤다.

성공!


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

webhacking.kr 52번  (0) 2018.01.18
webhacking.kr 51번  (0) 2018.01.17
webhacking.kr 49번  (0) 2018.01.17
webhacking.kr 48번  (0) 2018.01.17
webhacking.kr 47번  (0) 2018.01.17
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 49번 문제다.

점수는 300 point.

들어가보니 sql 인젝션문제라고 알려준다. 1이있길래 눌러보니 다음과 같이 나온다. 다른값을 줬을 땐 암것도 안나온다.

소스있길래 확인해보니 lv가 필터링 되고있다. 우회해서 admin만 뽑아내면 될 것 같다. 

0 or id='admin' 일케 주면 무난할 것 같다.
위의 필터링에 안걸리게 다른방법으로 대체해서 다시 짜주면
0%0a||%0aid=0x61646d696e로 입력해봤다.

성공!


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

webhacking.kr 51번  (0) 2018.01.17
webhacking.kr 50번  (0) 2018.01.17
webhacking.kr 48번  (0) 2018.01.17
webhacking.kr 47번  (0) 2018.01.17
webhacking.kr 46번  (0) 2018.01.17
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 48번 문제다.

점수는 350point.

들어가보니 다음과 입력가능한 것들이 보인다.

뭔지 모르겠어서 일단 youngsin이라고 주고 burp suite로 잡아봤다.

흠 별다른건 아직 모르겠다. 일단 시간이랑 아이디 내가준 값이 출력되고 있다. Delete버튼을 누르면 삭제도 가능한 것 같다.

아직 감이 확실히 안온다. 파일도 한번 올려봤다. 크기 제한이 있어서 3글자만 줬다.

파일이 업로드 됬다.

들어가 봤더니 null값이 있다. 이거가지고 뭐 하는건가?

저부분이 파일내용부분인것 같아 다시 입력 해봤다.

그대로다. 흠... 여기서 삽질좀하다보니 이건 아닌것 같다는 생각이 들기 시작했다.

멘탈잡고 다시 뭐가 있을까 하면서 살펴봤다. 유일하게 안해 본 Delete버튼을 눌러보니 목록이랑 파일이 사라지는 걸 한번 활용할 수 있을까 고민해봤다. 파일이 upload/파일 경로로 저장되었으니 지울때는 rm upload/파일 식으로 지워지는 것 같다고 생각해봤다. 그렇다면 delete를 누를때 rm upload/;ls 식으로 나오 도록 파일명을 입력해주면 rm과 ls가 모두 수행되어 파일명들이 나오지 않을까 생각해봤다.

일단 파일부터 올려봤다.


올린걸 다시 지우니 다음과 같이 파일명들이 나온다.


수상해보이는 파일쪽으로 들어가봤다.

성공! 코드인젠셕쪽으로 생각을 너무 늦게해봐서 엄청 삽질했다 ㅠ 역시 경험이너무 부족하다


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

webhacking.kr 50번  (0) 2018.01.17
webhacking.kr 49번  (0) 2018.01.17
webhacking.kr 47번  (0) 2018.01.17
webhacking.kr 46번  (0) 2018.01.17
webhacking.kr 45번  (0) 2018.01.15
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 47번 문제다.

점수는 150 point.

들어가보니 Mail Header injection 문제란다. 첨보는 형식이다.

일단 Mail Header Injection에 대해 몰라 찾아보니 php에서 이메일을 보낼 때 mail() 함수를 사용하는데 이 mail()함수가 mail ( 수신자, Subject, Massage, Header(이메일 헤더 마지막에 추가될 문자열) )
과 같이 구성되어 있다고 한다. 그렇다면 Header부분에 CC나 Bcc를 추가해 숨은 참조를 하게 하면 원래 메일이 가야할 곳 외에 나한테도 메일이 오도록 할 수 있을 것 같다.

Header는 CRLF((\r\n)로 구분되니 다음과 같이 입력해서 보내줘봤다.

 

성공!


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

webhacking.kr 49번  (0) 2018.01.17
webhacking.kr 48번  (0) 2018.01.17
webhacking.kr 46번  (0) 2018.01.17
webhacking.kr 45번  (0) 2018.01.15
webhacking.kr 44번  (0) 2018.01.15
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 46번 문제다.

점수는 300 point.

인젝션 문제인것 같다. 1값이 있길래 넣어보니 다음과 같이 출력된다. 나머지 숫자들을 넣어봤는데 별다른 값이 출력이 안된다. 

소스볼수 있길래 봤더니 다음과 같이 몇가지 필터링이 있고 결국 admin사용자의 쿼리를 구하면 되는 것 같다.


0%09or%09lv=1#으로 줘봤더니 다음과 같이 정상적으로 먹힌다.


or뒷 부분을 활용할 수 있으니 0%09or%09id='admin'#으로 값을 줘봤다. 정상적으로 안나오는 걸 보니 php magic quote가 적용되있는 것 같다. char(97,100,109,105,100)을 써서 single quote를 우회했다.

 0%09or%09id= char(97,100,109,105,100)#로 줘보니 정상적으로 동작한다.

성공!


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

webhacking.kr 48번  (0) 2018.01.17
webhacking.kr 47번  (0) 2018.01.17
webhacking.kr 45번  (0) 2018.01.15
webhacking.kr 44번  (0) 2018.01.15
webhacking.kr 43번  (0) 2018.01.15
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 45번 문제다.

점수는 550point. 꽤 높은 점수다. 살짝 긴장 

들어가보니 인젝션 문제인 것 같다.

소스확인해보니 다행히 제공해준다.

id랑 pw가 몇가지 필터링당하고 있다. id에 admin만 불러오면 될 것 같다.
' id='admin'#으로 주면 될 것 같은데 해봤더니 안된다. 필터링부분에 따로 뭐가 없던걸 보면
php magic quote로 single quote를 필터링 하고 있는 것 같다. 그렇다면 우회를 해야하는데
처음보는 함수가 있다.

mb_convert_encoding()라는 함수가 입력값을 무슨처리를 하길래 찾아봤더니 3번째 인자로 들어온 인코딩 방식을 2번째 인자의 인코딩방식으로 전환시켜주는 것 같다.  이걸로 뭐하라는거지하고 있는데 연관검색어에 mb_convert_encoding 취약점이란게 보였다. 들어가보니 인코딩과정에서 멀티바이트 처리가되면서 백슬래시 앞에 %a1 ~ %fe 의 값이 들어오면 %a1\가 한개의 문자처럼 취급되는 취약점 이란다.

그렇다면 magic quote로 인해 \'방식으로 필터링되니까 %aa'  or id='admin'#방식으로 값을 주면 %aa\' or id='admin'#가 되어서 백슬레쉬가 문자가되어 우회가 될 것 같다.
id에서 admin이 필터링됬으니 char(97,100,109,105,110)로 바꾸고 특수문자 인코딩해서 넣어주면 될 것 같다.

시도해보니 다음과 같이 생각처럼 잘 동작한다.

성공!


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

webhacking.kr 47번  (0) 2018.01.17
webhacking.kr 46번  (0) 2018.01.17
webhacking.kr 44번  (0) 2018.01.15
webhacking.kr 43번  (0) 2018.01.15
webhacking.kr 42번  (0) 2018.01.15
블로그 이미지

JeonYoungSin

메모 기록용 공간

,