Wargame Site/SQL injection
-
아는 동생의 SOSWargame Site/SQL injection 2019. 3. 8. 12:22
서울에서 1년 생활 동안 동아리 활동을 했던 동생이 내게 문제를 줬다. 다음을 해결해 달라는 부탁이었다. 나도 아직 잘 못하지만, 그 동안 LOS 를 통해 얻은 지식을 시험해볼 수 있는 좋은 기회일 것 같았다. 문제를 받자마자 POST 방식이라는 점이 보였고, 필터링 방식을 검토하다가 의문이 생겼던 것은"pw 만 필터되는 거라면 좀 허술한 것이 아닌가?" 였다. 왜냐하면 두번째 pw 의 필터 조건을 우회할 수 있는 방법이 너무 많기 때문이다. id 필드를 이용하더라도 금방 우회할 수 있는 구문이었다. 그리고, pw 를 이용하더라도 문제를 해결할 수 있을 거 같았다.if 와 sleep 을 활용하면 금방 해결될 것 같다. 짜잔!! 해결하는데 걸린 시간을 보니 그 동안 워게임을 헛으로 한게 아니구나 하는 생각..
-
|Lord of SQL_injection| #28 FrankensteinWargame Site/SQL injection 2019. 3. 5. 12:32
이것 까지 해결하면 4 문제만 풀면 끝난다!! 가보자~ 학창시절 별명이 프랑켄슈타인이었는데.... 우선 if(mysql_error()) 를 보니 Error 기반의 SQL Injection 인 것 같다. 하지만 우선, select 1 union select 2 를 사용할 수 없다. 따라서 다른 에러를 발생하는 구문을 떠올려야한다. 우선 조건을 사용해야하지만 '( ' 가 필터링 되어있으므로 if 를 사용할 수 없다. 이럴 때 생각나는 한가지 !!! 21번 문제 Iron_golem 에서 다뤘던 Case when then else end 문을 떠올려보자 그럼 then ?? else ?? 자리에 어떤 것을 넣어야할까? 도저히 구문을 못찾겠다..... 그래서 구글링을 해봤다 ㅎㅎ 그 결.과. MySQL 에선 9e3..
-
|Lord of SQL_injection| #27 Blue_dragonWargame Site/SQL injection 2019. 3. 4. 13:15
오늘 대학교 개학날이다 그래도 포스팅을 멈추지 않도록 신경써야 할 것 같다. 자 이제 5 ~ 6 문제만을 남겨두고 있는 상황이다 ㅎㅎ 가보자 ~ 우선 문제 구조가 평소와는 다르다는 것을 직감할 수 있었다. 일단 눈에 띄는 것은 NO Hack 문구가 나눠져있는 것 id 와 pw 의 제약조건만 봤을 때, 우선은 ' (작은따옴표) 가 필터링 되어있고, '\' 가 필터링 되어 있기 때문에 NO Hack 에 해당되지 않고 Blind sql injection 을 실행하는 건 어려워보였다. 10 분의 뻘짓의 결과 다른 종류의 인젝션 공격일 수도 있겠다는 생각을 했다. 시간기반 Injection 을 이용해보도록했다. 어차피 No Hack 을 출력하는 것도 결국엔 쿼리를 실행한 결과 나타나는 것이니 필터에 있는 문자를 ..
-
|Lord of SQL_injection| #26 Red_dragonWargame Site/SQL injection 2019. 3. 2. 14:12
이제 어느덧 두 줄을 남기고 있다. 가볼까아 26단계 문제 Red_dragon 이다. 우선 id 의 문자 길이가 7 이하여야 한다는 가정을 미루어볼때 뭔가 특별한 구문을 넣는 것 같다. 그리고 no 에는 숫자만 넣을 수 있는 것으로 보아 hex 값을 이용하는 것 같다. 우선은 조건을 무조건 참으로 만들어볼까아?? 문장을 참으로 만들면 admin 에 접근할 수 있는 것을 볼 수 있다. 그리고 no 에는 숫자 혹은 문자열만 들어갈 수 있다. 그.렇.다.면 id = ''||[field][부등식]# no=[줄바꿈][비교대상] 와 같은 접근을 생각해볼 수 있다. 필드와 비교대상을 연결하는 방식이다. 우선 호기심에 no 이라는 필드에 대해 탐색을 시작해보았다. (사실 pw 만 탐색하면 된다 ㅎㅎ) 이를 통해 no ..
-
|Lord of SQL_injection| #25 Green_dragonWargame Site/SQL injection 2019. 3. 1. 20:12
이 초록초록한 용친구를 클리어하면 8문제가 남는다 ~!! 오늘도 화이링~ 25단계 문제 Green_dragon 이다. 보자마자, 떠오른건 제약조건이 별로 없다는 것이었다. 그 뒤 이문제를 마주쳤을 땐 '이게 왜 25 단계일까?' 라는 의문이 들었다. 1단계 문제 Gremlin 와 17단계 문제 Succubus 에서도 사용했던 방법으로 해결하면 되기 때문이다. "id 가 admin 인 계정을 찾아라" 라는 질의를 했음에도 불구하고 아래 query2 부분이 출력이 안되었다는 점을 미루어 보아 이 DB 에 어쩌면 admin 이라는 계정이 없을 수도 있겠다는 생각이 들었다. 그 뒤, 바로 union select 를 붙혀서 실험해보았다. 질의의 결과로 1 과 2 가 들어갔다는 것을 보여준다.admin 이라는 계정..
-
|Lord of SQL_injection| #24 Evil_wizardWargame Site/SQL injection 2019. 2. 27. 15:50
9 개의 문제만을 남겨두고 있는 상황이다 얼른 달려야겠다. 화이팅 24단계 문제 Evil_wizard 이다. 중간에 노란색으로 주석처리가 된 부분이 눈에 뛴다.hell_fire 랑 같을거 같지?이 문구를 보고 '이번엔 필드에 따라 정렬을 해도 차이가 없겠구나' 라는 생각을 했다. 역시나 어떤 필드를 사용하든 간에 admin 이 위로 올라와 있는 것을 볼 수 있었다. order 를 적절히 조절해서 다른 결과를 보여줄 수 있는 구문을 찾는다면 끝날 것 같다. 다음과 같은 경우를 발견했고, 바로 코딩에 돌입했다. order by [정수] 의 경우는 "정수 번째 필드에 따라 정렬해라" 라는 의미로 order by 1 은 order by id 와 같은 구문이다. 일단 코딩을 해보았다. 짜잔!! 이 방법으로 문제를..
-
|Lord of SQL_injection| #23 Hell_fireWargame Site/SQL injection 2019. 2. 23. 14:00
이제 슬슬 Count Down 을 시작해야될 때가 다가온다. 23단계 문제 hell_fire 이다. 정렬에 관한 내용인 듯 하다. 우선 기본적으로 각 필드를 넣어봤다. email 을 알아내야하는 문제이니 뭔가 정렬하는 필드마다의 차이점이 있을 듯 싶었다. 역시 score 를 넣었을 때는 rubiya 가 위에 있는 것을 알 수 있다. 그렇다면 조건문을 활용해서 필드를 결정해주고, 출력결과를 통해 조건문의 참 거짓을 판단하면 되지 않을까? 그 내용에 따라 '100' 또는 '200' 을 검출해주면 될 것 같다 의외로 로직이 단순하다!! 짜잔!! Clear 하게 Clear~~ 오늘은 여기까지 풀고 다른 프로젝트를 해야겠다
-
|Lord of SQL_injection| #22 Dark_eyesWargame Site/SQL injection 2019. 2. 23. 13:19
후반부로 오면서 뭔가 문제 해결 속도가 느려졌다. 하지만, 쾌감?? 은 더 큰 거 같다 ㅎㅎ 오늘도 GO ! 22단계 문제 dark_eyes 이다. 우선 뭔가 기능을 많이 필터했다는 예감이 든다. 우선 앞서 봤던 case 문과 if 문의 사용이 불가한 상태에서 error 기반 SQL Injection 을 수행해야한다.그렇다면, 앞서 다뤘던 세 가지 방법 중에 마지막 방법을 사용하면 될 것 같다. 21 단계 문제 그랬더니 문제가 풀렸다 ㅎㅎ 짜잔!! 스무스하게 PASS ~