$ 웹 해킹 $
-
webhacking.kr 9번 [900p]$ 웹 해킹 $/webhacking.kr 2019. 4. 9. 23:52
메인 화면입니다. 1,2,3 전부 한번 확인해 보겠습니다. 1,2,3전부가 no=1,2,3으로 되어 있습니다. 0을 입력 하니까 메인 화면이 나왔습니다. 0,1,2,3을 제외한 나머지를 입력해보면 다음과 같이 나옵니다. sql injection을 이용하는줄 알았는데 아니였습니다. Blind sql injection 을 이용해보 겠습니다. 다음과 같은 sql구문을 전송해보면 no=if(substr(id,1,1)like(0x41),3,0) 위의 sql 구문을 풀이해 보면 id의 값을 찾기 위해서 sql을 사용한 것 입니다. substr()은 ( 해당문자열 , 몇번째문자부터 , 몇번째 문자까지 ) 가져오는 함수 입니다. 위에선 substr(id,1,1)이기 때문에 id의 문자열중 첫번째 문자만 가져오는 기능을..
-
webhacking.kr 8번 [350p]$ 웹 해킹 $/webhacking.kr 2019. 4. 9. 23:52
소스코드를 확인해 보겠습니다. ↓ index.phps 아래쪽 sql 부분을 보면 insert 문이 있습니다. 소스코드를 보면 user_agent값을 불러와서 .와/를 _로 치환한 후에 pat에 들어있는 문자를 필터링한다. 그 값이 admin이면 클리어 해줍니다. 만약 그 값이 없다면 user_agent값과 ip값 그리고 guest로 새로 lv0에 집어넣는다. $agent값을 sql injection 해서 admin값을 넣어주면 될 것 같습니다. User-Agent가 있습니다. 이처럼 hi','1','admin'),('bi 를 입력해서 hi라는 이름으로 admin을 넣어줍니다. 그리고나서 hi를 입력해서 넘겨주면 완료가 됩니다.
-
webhacking.kr 7번 [300p]$ 웹 해킹 $/webhacking.kr 2019. 4. 9. 23:51
Auth를 눌러보면 이라고 나옵니다. 소스코드를 한번 확인해 보겠습니다. 주석으로 admin mode : val=2 라고 적혀 있어서 URL을 변경해 보았습니다. 접근이 불가능 합니다. 그래서 아래의 index.phps에 들어가 봤습니다. 코드를 보면 rand함수에 의해서 값이 하나 결정 되고 val=2가 존재하지 않기 때문에 union을 이용해야 합니다. union은 sql 문법으로 A union select B형식으로 사용합니다. 여기서는 A에 해당되는 부분을 거짓으로 만든 다음 B부분을 참으로 만들어서 admin권한을 얻는 형식으로 문제를 풀이할 것 입니다. 또한 $data[0]이 2가 되어야 문제가 해결되기 때문에 2라는 값이 필요합니다. 하지만 2는 필터링에서 걸리게 됩니다. 저는 val=-1 ..
-
webhacking.kr 6번 [100p]$ 웹 해킹 $/webhacking.kr 2019. 4. 9. 23:48
문제를 보면 HINT는 base64이고 ID와 PW이 적혀있습니다. 소스코드를 확인하면 코드를 간략히 이야기 하면 id와 pw를 decode를 해서 넣어줘야 한다는 것이지만 마지막 조건문에서 id를 복호화 한값이 admin이여야 하며 pw를 복호화 한 값도 admin이여야 해결된다고 합니다. 그렇다면 admin을 복호화 하면 될 것 같습니다. admin을 for문과 Hint에 의하여 base64로 20번 복호화 해줘야 합니다. Base64로 admin을 20번 복호화 한 결과 : Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSV01WbDNXa1JTVjAxV2JETlhhMUpUVmpBeFYySkVUbGhoTVVwVVZtcEJlRll5U2tWVWJHaG9UVlZ3VlZadGNFSmxSbGw..
-
webhacking.kr 5번 [300p]$ 웹 해킹 $/webhacking.kr 2019. 4. 9. 23:46
문제가 다음과 같이 적혀 있네요 Login을 클릭하면 다음과 같은 창이 뜹니다. URL주소는 /mem/login.php이네요 로그인을 하려면 Join을 먼저 해야할거 같아서 Join을 눌러보았으나.. 접근 불가로 되어 있네요. 로그인을 아무거나 쳐봤는데. ID : aaaa PW : 1111 로 입력을 했습니다. ID는 무조건 admin이어야 하나 봅니다. ID : admin PW : 1111 아이디는 맞으나 비번이 틀렸다고 나오네요. 소스코드를 확인하니 location.href를 이용해서 바로 login을 누르면 /mem/login.php로 넘어가도록 되어있습니다. 또 아까 언급한 URL을 살펴보니 그냥 /login.php라고 하면 될 것을 굳이 /mem이 있더라고요. 혹시나 하는 마음에 /mem까지만 ..
-
webhacking.kr 4번 [150p]$ 웹 해킹 $/webhacking.kr 2019. 4. 9. 23:36
다음과 같은 화면이 띄워 지는데.. 예측을 해봤을 때 암호화된 코드가 있어서 복호화 한 코드를 제출하는 문제 같습니다. 혹시나 힌트가 있을지 모르는 소스를 한번 확인해 보겠습니다. 음… 역시 힌트는 없네요 저 암호화 코드의 맨 뒤인 ==을 보면 Base64로 암호화 된 것 같아서 복호화를 한번 해줍니다. Base64는 webhacking.kr 홈페이지 에서도 할 수 있습니다. YzQwMzNiZmY5NGI1NjdhMTkwZTMzZmFhNTUxZjQxMWNhZWY0NDRmMg==
-
webhacking.kr 3번 [350p]$ 웹 해킹 $/webhacking.kr 2019. 4. 9. 23:34
들어가면 네모 로직 처럼 생긴 Puzzle이 있습니다. 틀린 답을 입력하고 gogo버튼을 입력하면 No! 라고 출력이 됩니다. 네모 로직을 완성 시켜 보겠습니다. 위와 같은 화면 이 출력이 됩니다. 일단 admin으로 들어가 보겠습니다. Answer에 101010000011100101011111이 출력되는데 그 이유를 찾아보니 다른 name을 입력해도 같은 값이 나옵니다. SQL Injection을 이용해서 name에 0 or 1=1#을 입력해봤지만 똑같은 결과가 나옵니다. Name 입력하는 창의 소스코드를 가져와 봤더니 그냥 value 값이 정해져 있네요. Value값을 SQL Injection을 이용해서 값을 추가해 보겠습니다. 넣고 admin을 해보니까 아마 or를 이용한 SQL Injection ..