[Webhacking.kr] Old - 46 Write Up
2021. 5. 27. 18:45
워게임/webhacking.kr
Sqli 문제가 나왔다. 코드를 확인해보니, 입력값에 대한 검증이 몇가지 있었다. 입력값에 대한 검증 - addshlashes : ', ", \, NUL - replace : 공백, /, *, % - preg_match : select, 0x, limit, cash 위 검증을 우회하여, 쿼리문의 id 결과값을 admin으로 출력해야한다. Sqli를 진행하기 전 어떤 데이터가 있는지 확인해봤다. 1~4번까지 데이터가 있었고, 그 이후에는 출력이 되지 않았다. 혹시 다른 ID를 SQL 함수로 admin을 만들 수 있지 않을까 했지만, 없는 것 같다. 확인을 끝냈으니, Sqli에 사용될 쿼리를 테스트하였다. 몇가지 방법을 시도 끝에 admin을 출력할 수 있었다. 하지만, 쿼리에 공백과 작음따음표가 있어서 이..
[Webhacking.kr] Old - 11 Write Up
2021. 5. 27. 15:30
워게임/webhacking.kr
아무 반응이 없어서 코드를 확인하였다. 코드를 확인해보니, 정규포현식 관련된 문제인 듯하다. Get 메소드로 보낸 입력값이 정규포현식에 걸리면, Falg를 출력한다. 변수 pat에 정의된 정규포현식을 분석하였다. - [1-3] : 1부터 3까지의 숫자에 해당하는 문자 - [a-f]{5} : a~e까지의 알파벳 소문자 - _.$_SERVER[REMOTE_ADDR] : _ + 공인 IP 주소 - \\tp\ta\ts\ts : \t 은 탭을 뜻함. 즉, 탭 p 탭 a … 위를 모두 만족하는 문자열은 123abcde_IP주소 p a s s이다. 위의 값을 서버로 보내니, Flag를 획득할 수 있었다. PHP 정규포현식 참고 사이트 코딩의 시작, TCP School
[Webhacking.kr] Old - 7 Write Up
2021. 5. 26. 20:13
워게임/webhacking.kr
Auth 버튼을 클릭했지만, “Access_Denied!”라는 문구의 alert 창이 떴다. 몇가지 시도를 해보니, 나머지를 이용하여 이론상으로 2를 만들 수 가 있었다. 5%3 select lv from chall7 where lv=(5%3) 위의 쿼리문이 잘 작동하는지 mysql에서 테스트를 진행하니, 2가 출력이 되었다. 하지만, 무슨 이유인지 모르겠지만 문제에선 결과값이 없어서 query error를 출력하였다. 그래서 곰곰히 생각을 하니, 현재 내 도커의 DB에는 2이라는 데이터가 저장이 되어있다. 만약 문제에선 2가 저장이 안되어있다라는 상황을 생각하게 되었다. 도커의 mysql에 있는 2를 지우고 쿼리문을 실행하니, 결과값이 전혀 나오지 않았다. 이를 해결하기 위해 나는 select 2로 하..
[Webhacking.kr] Old - 5 Write Up
2021. 5. 25. 12:50
워게임/webhacking.kr
로그인과 회원가입 버튼만 있는 페이지가 나왔다. Join 버튼을 누르니, alert창이 나왔고, 로그인 버튼을 누르니, 로그인 페이지로 이동하였다. 혹시 Join으로 갈 수 있는 방법이 있는지 코드에서 확인하였다. 하지만, 전혀 없었다. 로그인 기능에서 취약점을 찾고 이를 이용하여 우회를 해야하는 것으로 판단된다. 나는 아무런 정보가 없어서 일단 guest/guest로 로그인을 시도하였다. 패스워드가 틀렸다는 결과를 얻을 수 있었다. 이것을 보고, 무조건 틀리면 Wrong password가 출력되는지가 궁금하여 아무 값을 넣어서 로그인을 시도하였다. 같은 결과를 얻을 수 있었다. Blind SQL Injection도 안될 것이라 판단하여 논리적 에러기반 SQLi도 시도하였지만 실패하였다. 그러다가 URL..
[Webhacking.kr] Old - 4 Write Up
2021. 5. 25. 11:11
워게임/webhacking.kr
비밀번호 form 위에 해시값이 있는 것으로 판단된다. 아마 해시값을 이용하여 비밀번호를 알아내는 문제인 듯하다. 코드를 살펴보니, 해시를 생성하는 코드가 있었다. 그러나 문제는 10000000 ~ 99999999이라는 엄청난 범위에서 랜덤으로 나온 값과 ‘sal_for_you’라는 문자열을 합한 값을 해시화했다는 것이다. 거기서 끝나지 않고 해시화한 값을 500번 반복하여 해시화하였다. 이러면, 코드를 짜서 해시값과 같은 값이 나올 때까지 돌릴 수 밖에 없다. 나는 여러가지 방법을 생각을 하였다. 방법 1 - 일반적인 파이썬으로 값을 구하는 방법 이 방법은 10000000 ~ 30000000까지 돌리고, 안나오면 페이지를 리로딩하여 해시값을 초기화하는 방법으로 접근해야한다. 이렇게 하지 않으면 범위가 ..
Old - 56 Write Up
2021. 5. 23. 11:38
워게임/webhacking.kr
게시판 페이지가 나왔다. 기능을 보기 위해 게시판 글과 검색 기능을 사용해봤다. Admin의 readme 글은 access denied로 볼 수 없다. Guest의 hi~ 글은 권한이 모든 사람이 접근할 수 있는 권한인 듯하다. 해당 글들의 URL을 살펴보니, read=admin, read=quest로 되어 있었다. 때문에 Injection으로 문제 접근이 불가능해보였다. 검색 기능을 보기위해 admin, guest, hi~, readme를 입력해봤지만, 모두 위와 같이 결과가 출력되었다. 그래서 “게시판 글 안에 있는 Text를 검색하는건가?”라는 생각에 hello~를 검색하니, 글이 출력이 되었다. 이를 이용하여 나는 admin의 readme를 추측하기로 하였다. readme 안에 있는 글은 flag..