일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- cobolt
- SQL Injection
- cobolt 라이트업
- goblin 라이트업
- zomblie_assassin 라이트업
- gremlin 풀이
- orc
- darkelf 풀이
- lord of sql injection 풀이
- Los
- los of sql injection xavis
- wolfman 풀이
- NULL 잡아먹는 놈
- goblin 풀이
- lord of sql injection
- xavis 라이트업
- orc 풀이
- orge 라이트업
- los 라이트업
- wolfman
- los 풀이
- darkelf 라이트업
- cobolt 풀이
- gremlin 라이트업
- wolfman 라이트업
- zombie_assassin
- blind sql injection
- darkelf
- orc 라이트업
- 34t3rnull
- Today
- Total
목록blind sql injection (20)
NULL 잡아먹는 놈
HINT : 필터링 우회를 하면 끝~ 이번 문제는 이렇다! 그냥 blind SQL injection 문제인데 다만 or, and, substr(, =이 필터링 되는 것이 다르다.그럼 or은 ||로 필터링 해주고, 어짜피 substr( 대신 LIKE를 써주어서 풀어보면 될 것 같다.(물론 substring을 쓸 수 있긴 하지만 = 때문에 LIKE를 또 써야하기 때문에 그냥 LIKE만 쓰도록 하겠다.)=은 LIKE로 대체하거나 아니면 부등호 연산자를 사용해서 풀어도 되겠다.먼저 길이를 알아보자! 길이는 8임을 알 수 있다.이제 생김새를 알아볼까? blind SQL injection을 하다보니 pw의 값은 88e3137f임을 알 수 있다.이것을 대입하면? .......... 클리어!---------------..
HINT : 1. 연산자 우선순위 2. 1=0은 무조건 거짓이다. 없애자! 문제는 이렇다. 필터링 되는 것 별 것 없고, 그냥 아무런 이상 없는 문제다.다만 마음에 걸리는 점은 1=0은 무조건 거짓이고, 어떻게 쿼리를 써야할 지 막막하다는 것이다.그래서 우리가 이용할 것은 연산자 우선순위와 주석이다.연산자 우선순위 적으로 and가 or보다 빠르고, 주석으로 1=0을 없애는 것이 이 문제의 핵심이다.select id from prob_skeleton where id='guest' and pw='0' or id='admin' and pw>'0'# and 1=0과 같은 쿼리를 만들어서 앞에 빨간 부분이 아닌 뒤 파란 부분의 조건이 검색되도록 url을 보내면 되겠다.어떻게? 이렇게 ㅎ 클리어!
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부터 시작해서 차근차근 넣어..