본문 바로가기

반응형

풀이

(19)
IrisCTF 2023 babyshark writeup wireshark 관련 문제 풀이 IrisCTF 2023 babyshark writeup wireshark 관련 문제 풀이 먼저 이번 대회는 시간이 없어서 재미로 참여했다. 많은 문제들이 준비되어 있어서 재밌게 풀었다. 먼저 이름에서 알 수 있듯이 wireshark 문제이다. wireshark를 따로 설치를 안 해서 칼리리눅스에서 파일을 다운로드하여서 열어봤다. 자연스럽게 열고 프로토콜 별로 확인을 하다보니 HTTP 프로토콜에서 의심스러운 파일들이 보였다. favicon.ico는 실패했고 babyshark.gif 파일은 성공했길래 TCP Stream으로 데이터를 확인했다. 여기서 바로 파일 카빙을 준비했다. raw 데이터로 바꾸고 데이터를 복사했다. 복사한 데이터를 HxD에서 새파일로 만들어서 넣었고 .gif 파일이니 47 49 46 3..
webhacking.kr old 50번 문제풀이(Writeup) webhacking.kr old 50번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. SQL Injection을 통해 푸는 문제이고, 코드가 있으니 먼저 확인해보자. 코드를 확인해보니, 방금 전에 푼 old 45번 문제와 유사하다. id와 pw를 받아서 \(역슬래시)를 붙이고, utf-8에서 euc-kr로 바꾸면서 멀티 바이트가 된다. 이후 foreach문을 사용하는데 PHP에서 foreach 문은 배열의 원소나, 객체의 프로퍼티 수만큼 반복하여 동작하는 구문입니다. 반복하면서 from, pw, (, ), 공백, %, =, >, < 를 필터링하고, union도 필터링한다. level 3가 되면 문제가 해결된다. 먼저 필터링에 대한 생각부터 했다. 공백이 필터링이 되니 %09로 우회하고, ..
webhacking.kr old 29번 문제풀이(Writeup) 파일업로드를 통한 SQL Injection webhacking.kr old 29번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 사실 들어가자마자 backdoor를 올렸는데 실행이 안돼서 다른 느낌의 문제구나 싶었다. 바로 위에 공지를 보면 FLAG가 다른 테이블에 있다고 한다. 이걸 보고 이건 database 문제이구나 싶었다. 파일 업로드 취약점을 통해 database의 정보를 알아올 수 있다는 것을 오늘 알았다. 파일 업로드 취약점에 대해 더 공부해야겠다. insert into 테이블명 values (값) 먼저 MySQL에서 입력을 할 때 위와 같이 들어간다. ex) RRR 테이블에 새로운 레코드를 추가할 때 INSERT INTO RRR(ID, Name, ReserveDate, RoomNum) VALUES(5, '이순신', ..
webhacking.kr old 37번 문제풀이(Writeup) webhacking.kr old 37번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 파일을 업로드할 수 있는 페이지가 나온다. 코드를 확인하자. 먼저 db가 연결되어 있고, query를 알려준다. select flag from challenge where idx=37 db와 query를 넣어서 MySQL에서 레코드를 가져와서 flag 변수에 저장한다. 파일을 ./tmp/tmp-시간을 통해 만들고 127.0.0.1을 저장하고 파일을 닫는다. 업로드 파일은 , ., /, 공백이 필터링이 된다. scandir을 통해 ./tmp 아래에 있는 모든 파일에 대해 출력하는 모습도 보인다. 마지막 코드 부분에 보면, file_get_content 함수를 통해 ./tmp/tmp-{$time} 파일 내의..
webhacking.kr old 23번 문제풀이(Writeup) webhacking.kr old 23번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드나 쿠키를 확인했을 때 따로 의심될만한 부분이 없어서 값을 넣어보기로 했다. 먼저 를 주입하는 것이 이번 문제의 목적이기 때문에 넣어봤다. "no hack"이 출력된다. 어떤 것이 필터링 되는지 모르기에 갖가지 값을 넣다 보니, (, /, " 등 특수문자는 그대로 나온다. 문자를 넣을 때는 한 개까지 되지만 두 개 이상의 문자가 들어가면 출력이 안된다. 그래서 문자열 길이 제한을 우회해야 한다. 이번엔 띄워쓰기를 했더니 전체가 입력이 된다. 즉 널 취약점이 있는 것으로 보인다. 따라서 %00을 공백으로 넣어서 script를 입력했다. a%00l%00e%00r%00t%00(%001%00)%00;%00 ..
webhacking.kr old 32번 문제풀이(Writeup) webhacking.kr old 32번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 저 중 아무 이름이나 클릭하면 투표가 되고 값이 1 오른다. 이후 다시 이름을 누르면 이미 투표했다는 알림 창이 출력된다. 코드도 보고, 쿠키도 한번 확인해보자. vote_check라는 쿠키가 있다. 이걸로 투표를 확인하고 있을 것이라는 생각이 든다. 그래서 쿠키 값을 0으로 변조하고 이번엔 내 아이디에 투표를 했다. 1이 증가했다. 쿠키 값을 변조해서 투표를 100번 하면 해결될 것으로 예상된다. 그럼 이제부터 이 귀찮은 일을 어떻게 해결할지 고민했다. 공부 중인 학생이기에 스크립트를 작성하는 게 옳다고 생각했다. import requests for i in range(0,100,1): url = 'h..
webhacking.kr old 19번 문제풀이(Writeup) webhacking.kr old 19번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. id: admin을 입력하니 "your are not admin"이 출력된다. 코드를 확인해보자. 따로 의심될만한 코드 부분이 보이지 않는다. 혹시 몰라서 guest로 로그인 시도를했다. guest 로그인이 되었다. GET 메소드를 이용하는 것과 id 파라미터를 이용한다는 것에서 Injection이 가능할 것으로 생각했다. 예상한대로, ?id=admin-- 으로 뒤에 부분을 생략하니 성공 메시지가 출력되었다. 이를 통해 webhacking.kr old 19번을 해결했다.
webhacking.kr old 54번 문제풀이(Writeup) webhacking.kr old 54번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 마지막에 '?'위치에서 문자가 계속 변경되면서 Password가 노출되는 것으로 보인다. 코드를 확인해보자. Burp Suite로 따라가면서 찾은 flag는 FLAG{a7981201c48d0ece288afd01ca43c55b}이다. 너무 쉬워서 이게 끝이 아닐 거라고 생각했는데, 이게 끝이었다..

728x90