일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 웹해킹 기초
- system hacking
- XSS GAME
- 인공지능
- 웹해킹
- 개발자
- 코딩
- 웹개발
- lord of sqlinjection
- SQL Injection
- Bandit
- burp suite
- write up
- WebHacking
- geminipro
- root me
- CTF
- 사이버보안
- web-server
- webhacking.kr
- 프로그래밍
- hackthissite
- 정보보안
- sql injection bypass
- Wargame
- overthewire
- web hacking
- pythonprogramming
- 테크트렌드
- Over The Wire
- Today
- Total
목록Wargame (21)
컴맹에서 컴공 그리고 화이트 해커가 되는 그날까지

이 문제의 php 코드를 살펴보니 뭔가 지금까지의 스킬이 짬뽕되어 있는 것처럼 보인다. 전단계의 darkelf에서 사용했던 것 그대로 사용하면 될것 같고 여기서 주목해야 할 코드는 역시 이 부분인 것 같다. result[ 'pw' ] 와 GET으로 받은 패스워드가 일치해야 문제가 풀리는 blind sql injection 문제다. 이 부분은 orge 단계까지 온 사람이라면 어디서 본 기역이 있을 것이다. 바로 orc문제이다. orc 단계에도 위에 보이는 php 코드처럼 패스워드가 일치해야 문제가 풀리는 방식이었다. 그럼 이제 본격적으로 문제를 풀어보자 우선 Hello admin 까지 출력하고 이제 pw의 길이를 한번 찾아보자 ?pw=123%27%20||%20id=%27admin%27%20%26%26%20..

darkelf 문제도 그전 문제인 wolfman과 비슷한 문제이다. 그러나 이번에 무엇이 필터링 되었는지 살펴보면 이번에는 공백이 아니라 or, and 같은 논리 연산자들이 필터링되었다. 이번에도 구글의 도움으로 필터링 우회를 찾아보면 'or'은 '||' 로도 사용할 수 있다는 사실을 알게 되었다. 그럼 이번에도 필터링 우회 sql injection을 작성해 보면 "?pw=123' || id = 'admin' -- " 이렇게 된다. --(주석처리) 뒤에는 공백이 있어야 주석처리가 되기 때문에 이 부분을 주의하자! 완성된 sql injection 구문을 넣으면 DARKELF 클리어!

wolfman 단계의 화면이다. 쿼리: id='guest' 및 pw=''인 prob_wolfman에서 id 선택이라는 글과 php코드가 있다. 여기서 $query 문을 위에 글로 설명해 놓은 것 같다. id='guest' 및 pw=''인 prob_wolfman에서 id 선택 그리고 만약 id == 'admin'이라면 문제가 해결된다. 그럼 우리는 pw에 값을 넣을 수 있기 때문에 sql injection을 사용하여 pw=123 넣어주고 id='admin' -- (주석처리)를 해주면 sql injection이 발생하여 문제가 풀릴 거라 생각했다. 그래서 ?pw=123' or id = 'admin' -- ' 이렇게 처리했더니 다음과 같이 공백 없음 ~_~이라는 글이 나왔다. php코드를 보니 공백을 필터링해..

SQL INJECTION이란 말과 함께 입력할 수 있는 칸과 view-source가 있다. 이번 문제는 SQL INJECTION 취약점을 이용하는 문제인 것 같다. 일단 소스코드를 보자 밑에 GET ['no']에 대한 php를 살펴보면 sql injection 문제답게 sql injection 필터링이 되어 있다. 필터링을 우회하여 문제를 해결해야 하는 것 같다. 일단 아이디가 guest라고 하면 guest가 출력이 된다고 한다. 그리고 아이디가 admin이면 문제가 풀린다. 그리고 주석으로 admin의 no = 2라고 한다. 그럼 "select id from chall27 where id='guest' and no=({$_GET['no']})" 이 부분을 sql injection 공격을 해야 하는 부분..

12번 문제 javascript challenge라고 적혀있다. 바로 계발자 도구 (f12)를 눌러서 확인해보자. ....? 이상한 이모티콘들이 적혀있는 다... 뭔소리여... 구글링을 해서 알아보니 저건 aadecode라는 것으로 코드를 이모티콘 모양으로 암호화해 놓은 것이다. 구글에 aaencode decoder라고 검색해서 디코더 사이트에 들어가서 복사한 내용을 붙여 넣기 하면 요렇게 정상적인 코드가 나온다. 아마 저 charCode(enco들을 해석해서 webhacking.kr/challenge/code-3/(코드해석).php를 하면 문제가 풀릴 것이다. 코드 해석은 f12를 누르면 보이는 콘솔 창에서 해보면 된다. 와우 'youaregod~~~~~~!'가 나왔다. 문제를 해결했다! 굿굿굿~!

화가나는 문제였다.... 정말 어떻게 하면 좋을까 고민을 많이 한 문제였다. 일단 16에 로그인하고 들어간 다음에 포트 로컬 호스트가 31000~32000 사이라고 하여 nmap 명령어를 사용하여 한번 찾아보았다. 사용가능 포트가 5개 나왔다. 31046 31518 31691 31790 31960 5개 크지 않은 숫자이므로 하나씩 다 들어가 보았다. 그랬더니 openssl s_client -connect localhost:31790에 들어가 bandit16번 패스워드를 입력했더니 Correct!와 함께 BEGIN RSA PRIVATE KEY를 얻을 수 있었다. 이 뒤로는 level 13에서 했던 것 대로 하면 된다. mkdir을 사용해서 /tmp/eric1 이라는 파일 하나를 만들고 얻었던 BEGIN R..

이번 문제를 요약하자면 전 단계들과 마찬가지로 data.txt에 암호가 저장되어 있고 이것은 반복적으로 압축된 파일의 16진수 덤프이다. 파일을 압축해제하고 패스워드를 찾는 것이 이번 문제의 포인트이다. 문제에서 친절하게 설명을 더 해주었는데 이 문제는 /tmpin에서 mkdir을 사용하여 작업할 수 있는 디렉토리를 만드는 것이 유용하다고 한다. 그런 다음 cp를 사용하여 데이터 파일을 복사하고 mv를 사용하여 이름을 변경한다. 한번 문제가 알려주는 데로 따라가 보자 일단 /tmp에 ericls 디렉터리를 만들고 data.txt를 가져오는 것까지 실행했다. 그리고 문제에서 이번 data.txt파일은 반복적으로 압축된 파일의 16진수 덤프라 했기 때문에 파일을 16진수로 보여주는 xxd 명령어를 사용했다...

이번 문제는 좀 복잡하다. 이것 말고도 한참 더 파일들이 많다..... 그렇기 때문에 우리는 밑에 설명되어있는 파일의 속성을 보고 값에 맞는 파일을 찾아 패스워드를 알아내야 한다. human-readable 인간이 만든 1033 bytes in size 1033바이트 크기 not executable 실행할 수 없는 여기서 2번째 속성인 1033바이트 크기를 이용해 파일을 찾아보자 일단 cd inhere로 inhere로 들어간 다음에 1033바이트 크기의 파일을 모두 찾는 명령어인 find ./* -size 1033c 를 입력하여 파일을 찾으면 파일이 1개 나온다. 그럼 cat을 이용해 파일을 읽으면 풀이 성공!