본문 바로가기

반응형

웹해킹/webhacking.kr

(58)
webhacking.kr 문제풀이 완료 webhacking.kr 문제풀이 완료 드디어 webhacking.kr 문제풀이가 끝났습니다. 지금까지 응원해주신 분들께 감사합니다. Is_lab 해킹동아리도 화이팅! 자랑하고 싶은데 할 곳이 마땅치 않아서 이곳에 적어봅니다. 많은 것을 배웠고 계속 복습하면서 잊지 않게 노력하겠습니다! 리버싱 핵심 원리 악성 코드 분석가의 리버싱 이야기『리버싱 핵심 원리』. 프로그램의 내부를 깊이 들여다보고 조작할 수 있는 기법인 ‘리버싱’에 필요한 핵심 원리를 50여개 장을 통해 꼼꼼하게 설명한 책이다. 리버싱 기술의 단순한 소개에 그치지 않고, 각 기술의 핵심적인 원리를 깨닫게 하는 데 목표를 두고 있다. 무엇보다 저자 이승원이 안철수 연구소에서의 오랜 경험을 토대로 직접 작성한 다양한 코드는 물론 리버서라면 꼭 알..
webhacking.kr old 52번 문제풀이(Writeup) http 헤더 인젝션 문제. webhacking.kr old 52번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. admin page에 로그인하면 문제가 풀린다. admin page를 누르니 바로 로그인 창이 나온다. 혹시 해서 guest 계정으로 로그인 후 쿠키를 봤는데 쿠키로 푸는 문제는 아니었다. 취소를 누르니 view-code가 나와서 코드를 확인했다. 프록시를 눌러보니 request와 response가 나온다. 여기까지가 문제 사이트를 확인해본 결과이다. 이제 문제를 풀어보자. 먼저 코드를 살펴보면, id가 admin이고, 주소가 172.17.0으로 시작해야 한다. 이후 웹 인증 개념에 대해서 알아야 한다. 이번 문제는 기본 인증 취약점을 통해 해결하는 문제이다. 코드에서 보면 pw는 md5로 암호화하기 때..
webhacking.kr old 57번 문제풀이(Writeup) Timebase SQL Injection webhacking.kr old 57번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드를 보고 확인해보자. msg와 se를 확인하는데 msg와 se가 입력되면 addslashes를 통해 싱글 쿼터, 더블쿼더, Null, /에 역슬래시를 추가한다. 이후 select, and, or, not, &, \, benchmark 등을 se에서 필터링한다. flag는 mysql에서 3번째 컬럼에 존재하고 있다. 이후 0~100까지 랜덤으로 1이 나오면 테이블을 삭제한다. 이번 문제는 timebase SQL Injection을 통해 해결해야할 것으로 보인다. msg를 임의로 넣고 제출을 해보니 msg=123&se=1이 보인다. Python으로 exploit code를 작성해보자. import req..
webhacking.kr old 55번 문제풀이(Writeup) webhacking.kr old 55번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. rank를 누르니 많은 분들의 점수가 나오기도 한다. rank 페이지에 마지막 부분을 보니 쿼리문이 나와있다. 3번째 컬럼이 flag라는 것을 알았다. 하지만 컬럼명을 모르기 때문에 저번 문제에서 사용했던 procedure analyse() 함수와 limit를 사용해보자. limit 0, 1 procedure analyse() 를 하면 0번째 컬럼이 출력될 것이다. 그러니 limit 2, 1 procedure analyse() 로 입력해보자. 입력해보니 컬럼명이 p4ssw0rd_1123581321이라고 나온다. 이제 flag의 길이부터 찾아보자. Burp Suite에서 패킷 캡처 후 Interlude에서..
webhacking.kr old 53번 문제풀이(Writeup)와 procedure analyse() DB, 테이블 이름 확인 webhacking.kr old 53번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드를 보고 시작하자. 코드는 간단하다. answer가 hidden_table가 같으면 문제가 해결된다. 이때 preg_match를 통해 val 값 중 select, by 를 필터링하게 된다. 결과값은 result에 담고 select a from hidden_table where a=val의 구문을 쓴다. 어떻게 우회할까 검색을 하던 중에 select, union, information_schema 가 필터링 될 때 사용하는 SQL 함수로 procedure analyse()가 있다는 것을 알게 되었다. DB.테이블.컬럼이 출력된다. 테이블을 복사해서 answer에 넣었다. 문제가 풀렸다. procedur..
webhacking.kr old 35번 문제풀이(Writeup) webhacking.kr old 35번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드가 있으니 힌트를 얻고 시작하자. phone과 id값을 같이 입력해야 한다. 이때 preg_match는 *, /, =, select, -, #을 필터링하고 있다. 그리고 id의 길이가 5보다 크면 안 된다. 이후 insert 문을 통해 id와 내 IP와 phone 값이 입력된다. 이후 DB에서 server IP와 내 IP가 같으면 통과한다. "insert into chall35(id,ip,phone) values('{$_GET['id']}','{$_SERVER['REMOTE_ADDR']}',{$_GET['phone']})" 현재 insert문은 위와 같다. "insert into chall35(id,..
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번 시도하고 잘 안됐다. 그래서 업로드를 할 ..

728x90