write-up/webhacking.kr 19

55번

2년만에 웹 라업이다. 들어가면 머 대충 이런 페이지가 있다. 힌트란다. 컬럼을 준다. 근데 password 컬럼은 안 준다. 저 점수 링크를 누르면 해당 점수의 사람을 보여준다. ?score=2147483647 그리고 limit으로 조절하면 바로 인젝션이 터진다. procedure analyse()로 컬럼을 뽑아보았더니 바로 뽑힌다. ?score=-1%20limit 2,1 procedure analyse() 출력도 해주겠다, 그래서 error base로 바로 조지려고 했다. ?score=-1 limit procedure analyse(extractvalue(1,concat(0x3a,version())),1) 머 대충 이런식으로 했는데 version()이 안 뽑힌다. 그래서 version() 대신 (se..

9번

http method GET, POST가 막혀있다.htaccess 등으로 limit 걸어놓은듯 하다. OPTIONS 등으로 우회해주자.크롬 extension 툴인 YARC (Yet Another REST Client)를 이용하였다. 필터링 목록이 꽤 빡쎄다.orand+unionselectasciichar 여기에다 공백까지 못 쓴다. %0a, %0b 모두 막혀있다.... ?no=1 ?no=3 예상할 수 있는 쿼리는 select id from table where no={$_GET[no]} if문과 substr을 이용해 한 글자씩 잘라냈다.그런데 문제는 쿼터와 ord함수, ascii함수를 못 쓴다. ?no=if(substr(id,1,1)like(0x61),3,0) ?no=if(substr(id,1,1)in(..

13번

우선 필터링 목록이 빡쎄다 union+-*_informationschema#and/charhexlimitasciigroup (group_concat, group by)= ?no=1일 때만 참이 뜬다.?no=0 or 1요래하면 쿼리 전체가 참이된다. 테이블 명과 컬럼 명이 주어졌으니, flag를 추출하면 된다. ?no=0 or length(flag)를 이용하여 flag의 길이를 알아낸다. 그러나 거짓으로 뜬다. (유추할 수 있는 쿼리는 select flag from prob13password where no={GET_[no]} 이며, 반환행이 1개일 때만 참으로 뜨는듯.)select ~ where no=0 or length(flag)는 참인데 거짓으로 뜬다. (flag길이가 0일리는 없으니, length(..

57번

$_SESSION[id]와, 입력받은 값, php변수($secret_key)를 테이블에 넣는다. 출력해주는 부분도 딱히 없는데, 이 $secret_key를 알아내야 한다. php변수값을 알아내는 방향으로 접근하면 답이 없다. 테이블에 있는 데이터를 추출한다는 방식으로 접근해야 한다. 우리가 이용할 수 있는 쿼리는 insert문 뿐이다. $_GET[se]부분에 쿼터가 없어서 인젝션이 가능해보인다. if문을 이용하여 time based sql injection공격을 했다. if(length(pw)>6, sleep(1), 0) length(pw)=10일 때 참이므로, 길이를 알아냈으니 이제 한 글자씩 추출해내면 된다. import urllib2 import time url = "http://webhacking..

51번

소스를 보면... 자세히 보면 md5함수의 두 번째 인자가 true이다.php의 md5함수는 두 번째 인자가 TRUE이면, 해시를 길이 16의 바이너리 형식으로 반환한다. 기본값은 FALSE이다.(PHP Manual : http://php.net/manual/kr/function.md5.php) $str = "129581926211651571912466741651878684928"라는 문자열을 예로 들면, md5($str)은 06da5430449f8f6f23dfc1276f722738이지만,md5($str, true)는 ÚT0DŸo#ßÁ'or'8이다. id에 admin, pw에 위의 문자열을 입력했다면 전체 쿼리는 select id from challenge_51_admin where id='admin'..

56번

게시판이다.admin이 쓴 글은 access denied로 안 읽어지고, guset가 쓴 글의 내용은 hi~이다.검색창에 여러 가지 입력해보니, h, i, hi라고 검색했을 때는 guest글이 검색이 된다.제목이나 내용을 검색하는 듯 하다.제목을 검색하는가 싶어 readme를 검색하니 아무것도 안 나온다. 내용을 검색하는 것 같다.admin이 쓴 글의 내용을 읽어내면 클리어인듯 k를 검색하면 admin이 쓴 글만을 읽어온다. 내용에 k가 있는 것 같다. 예상되는 쿼리는select * from table where contents like '%%' like절에 %가 양 끝에 붙은 것으로 추정 가능한 이유는i를 검색했을 때 guest가 쓴 글의 내용인 hi~를 검색하기 때문이다. 언더바(_)로 글자 수를 추..