일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- wolfman 풀이
- orc
- darkelf 풀이
- orc 라이트업
- blind sql injection
- los 풀이
- orc 풀이
- 34t3rnull
- goblin 라이트업
- orge 라이트업
- cobolt 라이트업
- lord of sql injection
- cobolt
- darkelf
- cobolt 풀이
- zombie_assassin
- NULL 잡아먹는 놈
- wolfman
- gremlin 라이트업
- xavis 라이트업
- los 라이트업
- darkelf 라이트업
- los of sql injection xavis
- gremlin 풀이
- goblin 풀이
- wolfman 라이트업
- Los
- lord of sql injection 풀이
- zomblie_assassin 라이트업
- SQL Injection
- Today
- Total
목록0x0070 워게임 문제 풀이 (60)
NULL 잡아먹는 놈
HINT : 1. PHP는 대소문자를 구별 못한대요~ 얼레리 꼴레리2. 필터링을 역이용 해볼까 ㅎㅎ? 이번 문제는 풀이가 2가지가 있을 수 있다.물론 힌트별로 1개씩 ㅎㅎ필터링은 별 것 없고, 그냥 str_replace를 해준다는 것이다.하지만 여기서 알아야 할 1가지!! str_replace는 대, 소문자를 구별한다! 는 것이다.결국 admin이랑 ADMIN은 다른 것으로 인식하기 때문에... 요로코롬 써주면? 클리어! 하지만 다른 풀이도 있다.str_replace("admin","",$_GET[id])는 'admin'이란 패턴은 빈 칸으로 만든다는 것이다.만약 'adadminmin'이란 것을 입력해준다면가운데 admin은 사라지게 될 것이고 결국 우리는 admin이란 것을 입력한 것과 똑같이 된다.아..
HINT : php는 대소문자를 구별 못한대요~~ 얼레리꼴레리 문제는 이렇다. ereg는 정규표현 패턴과 일치하면 참을 내뱉는 함수이다.그말은 즉슨 'admin'(소문자)이랑 id가 일치하면 안 된다는 건데....$result['id'] == 'admin' 이어야 되고 ㅠㅠ.... 못 푸는 건가?포기하자..............는 구라고, ereg에 있는 admin은 소문자라서 대문자를 삽입하는 것은 가능하다.물론 변태들은 섞어서도 넣고 싶어하겠지 ㅎ암튼 admin 대신 ADMIN으로 대신하면$query에서 ADMIN을 입력했지만 바보인 php는 admin으로 보내게 될 것이고,$result['id']의 값은 admin으로 오게 될 것이다. 그럼 우리가 해야할 것은?id=ADMIN을 입력하자! 그 다음은..
HINT : 1. Blind SQL injection은 기본...2. or은 필터링 우회가 쉽죠?? 이번 문제는 ~~~~ or, and의 필터링을 피하면서 blind SQL injection을 시행하는 것입니다!여러분들은 or의 우회는 || and의 우회는 &&인 걸 아시겠죠??? (&&은 URL 창에서 안 먹히므로 안 쓰도록 하겠습니다.)아아!! 귀찮은 문제여라~~~ 한 번 길이를 알아볼까요?첫 구문은 pw의 길이부터 재보죠. ?pw=0' || LENGTH(pw)='0 을 시작으로 쭉쭉 입력하다보면 아아~~ 길이는 8이다~~~ 이제 길이 8 동안 blind SQL injection을 합시다.LIKE가 필터링 안 됐으니 LIKE 써도 되고, substr도 써도 되고, RIGHT랑 LEFT도 섞어 써도 되..
HINT : 흠... or 말고 또 없나? 하..... 벤쯔 먹방 보면서 글 쓰고 있는데 족발, 보쌈 개땡김... 암튼 시작하겠습니다. 문제는 이렇다. or, and 가 필터링 되는데, 이거 우회는 쉽잖아요 ㅋㅋ || 이나 && 다들 아시죠? 그럼 쉽게 풀 수 있음guest 부분을 거짓 처리하고 id가 admin인 레이블을 나오도록 쿼리를 바꾸면 끝~쿼리문의 생김새는 대충select id from prob_darkelf where id='guest' and pw='0' or id='admin'인데or부분을 우회하기 위해 ||로 바꿔줍니다. 즉 위와 같이 쿼리문을 바꿔준다면? 꿀려~
힌트 : 1.우리가 원하는 것은 guest가 아니라 admin이야!2.스페이스바를 꼭 써야해?? 필터링 따윈 우회하면 되잖어 이번 문제는 스페이스바가 필터링 되어 있다. 뭐 스페이스바 따윈 creturn(%0D), tap(%09), linefeed(%0A)로 우회하면 끝나니깐 결국 필요한 것은id가 'admin'인 레이블을 뽑아내는 것이다.흠.... guest의 값은 거짓으로 만들면서 id='admin'과 pw의 값을 얻어줘야하니 이렇게 바꿔주었다. 쿼리는 select id from prob_wolfman where id='guest' and pw='0' or id='admin' and pw>'0'과 같이 된다.즉 연산자 순위가 빠른 and 후 or 연산이 시작되니 우리는 admin의 레이블을 얻을 수 ..
힌트 : BLIND SQL INJECTION 입니다!...이건 어려워서 ㄷㄷ... 힌트는 LIKE 입니다. 더 편하게 하실려면 LENGTH 도 힌트 ㅋ 문제는 이렇네요 ㅋㅋ 마지막에 입력한 pw와 db상의 pw가 일치해야지만 풀리는 것을 보아하니그냥 sql 인젝션이 아닌 블라인드 sql 인젝션이네요,블라인드 sql 인젝션 중에서는 쉬운 편인데,, 설명하기가 어렵네요 (저도 처음엔 어려웠음 ㄷㄷ..)이 문제는 블라인드 sql 인젝션이란 기법을 알아야 풀 수 있어요.쉽게 설명하자면 TRUE or FALSE를 이용해서 내가 원하는 값을 도출해내는 것인데요.이 문제의 경우 TRUE면 Hello admin이라는 문구가 출력되네요 ㅎㅎ맛보기로 admin의 pw의 길이를 구해볼까요?물론 0부터 시작해서 차근차근 넣어..
힌트 : 1. 비밀번호를 바로 맞출 수는 없으니깐 범위로 때려 맞춰 보자!2.guest랑 admin의 no 값은 다르겠지?? 하핫! 풀이를 보게 된 당신 부끄럽지 않나?? 하핫 물론 풀이 진행하겠습니다.$query = "select id from prob_goblin where id='guest' and no={$_GET[no]}";가 쿼리문이다.흠... id='guest' and no=~~~가 거슬리는데 짜피 'or' 써주면 무시될 수 있다.여기서 중요한 것은 no를 조작하여서 'id = guest and no = 거짓식 or 참식' 과 같은 꼴을 만드는 것이다.그러면 결과적으로 참식을 이용해서 admin의 id를 도출시킬 수 있을 것이다.그럼 어떻게 no를 보내야 할까? 다음과 같이 보낼 수 있는데 ..
힌트 : md5?? 그게 뭐야?? 먹는 거야?? 무시해버려 그냥 ㅋㅋ 어허.... md5?? 이거 계산할 거에요?? 여러분?? 이거 언제하고 앉아있어 ㅋㅋ $query = "select id from porb_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')"; 이고,solve 조건이 id=admin이니깐 그냥 id = admin주고 pw는 어짜피 0보다 크거나 같거나 작을테니조건문 몇 개 써주면 끝 아니겠습니까? 근데 pw에 md5가 걸렸네... 그래도 ㄱㅊㄱㅊ우리에겐 최후의 카드 '주석'이 있잖아요 ㅋㅋid에서 pw까지 다뤄주고 뒷 pw부분은 주석처리 해주면 되겠지 뭐 ㅋㅋ 어떻게?? 요롷겧ㅎㅎㅎㅎㅎㅎ Ang~ CLEAR띠~