본문 바로가기

반응형

분류 전체보기

(246)
webhacking.kr old 45번 문제풀이(Writeup) webhacking.kr old 45번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드가 있으니 힌트를 확인해보자. id와 pw를 입력할때 addslashes함수를 통해 싱글쿼터, 더블 쿼터, /, \, Null 앞에 \를 추가해주고 있다. 이후 id를 'utf-8'에서 'euc-kr'로 바꿔주기도 한다. euc-kr은 8bit로 된 한글 완성형 인코딩이고 멀티 바이트다. preg_match를 통해 admin, select, limit, pw, =, 을 터링하는 중이다. result로 값을 받아올때 pw를 md5로 암호화하는 모습도 보인다. 이때 result로 로그인을 하면 문제가 해결된다. 먼저 0x, 문자열 길이가 필터링이 안되기 때문에 admin은 0x61646D696E #으로 ..
webhacking.kr old 48번 문제풀이(Writeup) webhacking.kr old 48번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드를 통해 힌트를 못 얻어서 아마 파일 업로드 취약점을 의심했다. 일단 좀 알아보기 위해 abc.txt파일을 만들어서 업로드할 때, Burp Suite로 캡처해보기로 했다. POST 방식으로 파일을 전달한다. name="upfile"을 통해 파일이 넘어간다. 내용은 ls만 넣어둬서 24번줄에 나오는 것 같다. 웹쉘을 업로드해도 뭔가 바뀌는 게 없어서, 이번엔 upload폴더로 들어가려고 했는데 권한이 없다고 나온다. 이름을 넣고 파일을 업로드 하니까 Upload file과 Delete 버튼이 생겼다. Delete에서 파일 취약점을 사용해보려고 했는데 약 30번 시도하고 잘 안됐다. 그래서 업로드를 할 ..
webhacking.kr old 34번 문제풀이(Writeup) webhacking.kr old 34번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 음 debug를 해달라고 하니까 먼저 Burp Suite에서 캡처해서 코드를 보자. script로 된 코드가 길게 출력된다. 음 일단 복사해서 script beautifilter로 보기 좋게 만들어보자. 정말 script beautifilter는 말 그대로 보기좋게, 예쁘게 코드가 보여서 좋다. 일단 debugme가 alert를 통해 출력되고 있으니까 한번 alert를 검색해봤다. 이후부터는 vscode에서 작업했다. alert가 하나밖에 없으니까 이 부분이 debugme를 출력할 것으로 예상된다. 확인해보기 위해 문제 페이지 콘솔창에서 입력해봤다. 예상대로 debug me가 나온다. 곧 끝날 것 같은 ..
webhacking.kr old 60번 문제풀이(Writeup)와 레이스 컨디션 공격 및 대응방안 정리 webhacking.kr old 60번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드에서 힌트를 확인해보자. 첫 if문을 보면! is_numeric()을 통해 PHPSESSID값이 숫자가 아니면 Access Denied를 출력하고 1초를 sleep 한다. 이후 가장 눈에 띄는 것은 다음 if문이다. Get 메소드에서 mode가 "auth"이면 Auth가 출력되고, session[idx].txt 파일을 읽어서 result 변수에 저장하고, result값과 session[idx]값이 같으면 해결된다. 마지막 if문에선 자신의 주소가 127.0.0.1이 아니면 readme/session[idx].txt 파일을 1초 쉬고 삭제한다. 그렇다면 session[idx]값이 삭제되기 전에 조회하면..
webhacking.kr old 46번 문제풀이(Writeup) webhacking.kr old 46번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드가 있으니 코드부터 확인하자. 어제 게시된 문제와 비슷하게 몇 가지 필터링이 된다, 공백과 '/', '*', '%' 등도 필터링이 되고, ', ", Null바이트, \도 필터링된다. 그래도 ()가 필터링이 안되고 있어서 쉬울 것 같다. lv=0||id=char(97,100,109,105,110) 0x가 필터링되고 있어서 hex값을 넣어서 사용하기가 어렵다. 따라서 함수를 이용해야 하는 문제인데, 필자는 간단하게 char() 함수를 이용했다. 성공메시지가 출력되었다. 간단하다.
webhacking.kr old 44번 문제풀이(Writeup) webhacking.kr old 44번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드가 있으니 코드부터 확인해보자. POST방식으로 id값을 받는데 id는 5자리까지 가능하고 여기서 ls가 실행되면 된다고 한다. 코드에 힌트가 있었다. 이 문제는 코드만 봐도 POST메소드에서 발생하는 Command Injection 문제이다. 필터링이 없다보니 쉬운 편이었다. " echo 'hello! {id}' "); 우리가 넣는 것은 id이기 때문에 문장을 닫고 세미콜론을 넣은 후 명령어를 넣어야한다. "echo 'hello! ';'ls"); 위와 같이 입력이 되면 문장이 닫히고 세미콜론으로 echo가 끝난다. 이후 ls 명령어를 보내게 된다. flag가 있는 파일이 보인다. flag파일을 실행..
webhacking.kr old 49번 문제풀이(Writeup) webhacking.kr old 49번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드가 있으니 코드부터 확인하자. 코드를 보니 이것저것 많이 필터링을 한다. select, or, and, (, ), limit, order, cash, /, 탭, ', " 공백이 입력되면 no hack이 출력된다. 일단 lv에 숫자가 입력이 되고, GET 메소드 방식으로 값이 전달된다. admin으로 접속하면 해결되는 문제이다. ?lv=0||id=%61%64%6d%69%6e 그래서 admin을 입력했을 때는 안되서 URL 인코딩을 해서 넣었는데 admin으로 값이 바뀐다. 그래서 hex값으로 URL 인코딩 값을 전달했다. ?lv=0||id=0x61646d696e 성공 메시지가 출력되었다. 너무 간단하다.
webhacking.kr old 56번 문제풀이(Writeup) webhacking.kr old 56번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 이번 문제도 SQL Injection 문제인 것 같다. 게시판 형태의 SQL 문제가 나오면 columns 값을 찾아서 필요한 내용을 출력하는 문제가 많았다. 하지만 search에서 union select를 아무리 해도 결과값이 나오지가 않아서 다른 방법을 찾았다. 다른 게시판 문제를 풀 때는 search에서 안에 내용을 기반으로 검색을 했다. 따라서 안에 내용이 포함되면 검색 결과에 나왔고, 불일치하면 나오지 않았다. 그래서 검색을 돌려보니 hi했을 때는 admin만 결과로 나왔고, hello를 했을 때, guest가 나왔다. 이 모습을 보니, exploit코드로 Blind SQL Injection 할때..

728x90