일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 취약점 스캔
- 모의해킹
- smb
- 시스템 해킹
- 스캐닝
- load of sqlinjection
- 암호해독
- Hacking
- 권한상승
- Kioptrix
- 포트스캔
- 칼리리눅스
- sql
- web hacking
- Samba
- 침투테스트
- 해킹
- 내부침투
- SQL Injection
- 해킹도구
- Metasploit
- root권한
- Los
- 취약점
- 메타스플로잇
- 스캔
- CTF
- SQLINJECTION
- 해킹툴
- 취약점분석
- Today
- Total
목록my_study (42)
감자 텃밭
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bag2Sz/btrVBP9Yc0N/gWvrb1UKGdsLGcgOk1I2O0/img.png)
21단계 = iron_golem 소스코드 해당 소스코드를 보면 이전문제와 다르게 추가적으로 적용된 필터링으로는 sleep, benchmark가 필터링되어 있다. 이는 Time based SQL Injection은 불가능하게 하기 위함으로 추측된다. 이번문제는 참값을 입력해도 참 거짓이 구분이 되지 않는다. 이럴 경우 사용할 수 있는 게 1. Time Based SQL Injection 2. Error Based SQL Injection 두 종류의 인젝션을 사용할 수 있는데 필터에서도 보았듯이 1번 해결법 Time Based SQL Injection은 사용불가다. 코드를 자세히 보면 즉 에러가 발생 시 에러페이지를 출력시켜 준다. 2번 해결법인 Error Based SQL Injection을 사용하면 될 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bHUoym/btrVF88QklO/K4DnUcXK6vcNIkDWjUZdfK/img.png)
19단계 = xvais 소스코드 이번문제에서는 이상하리만큼 필터링되는 게 없으며, regex와 like가 필터링되고 있다. 이번 문제의 의도를 파악하기 힘든부분이었으며, 해당 문제에서 많은 걸 배우게 되었다. 우선 기존문제들과 동일하게 입력값과 db저장된값을 비교하므로, Blind SQL Injection을 이요하면 될 것이다. 정상적으로 구해지는 거 같은데 불안한 기분이 맴돌았다.. 늘 그래왔듯 패스워드길이와 문자열을 추출하기위해 파이썬코드를 작성하여 추출하려 시도하였지만 패스워드의 길이는 12자리인 걸 확인 후 문자열이 구해지지 않았다.... 우선 패스워드의 길이는 12자리였다. 파이썬 코드의 오류인가 싶어 아무리봐도 오류코드를 찾지 못하여 직접 URL로 값을 확인해본 결과 필터도 걸려있지 않는데 A..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dE4JHs/btrUutaiQhs/Ky1DyBqXjIfwIRzhTxWtE0/img.png)
12단계 = DARKKNIGHT 소스코드 이번문제에서는 넘겨줘야 할 파라미터값이 pw, no 두 가지로 보인다. 필터링되는 값을 확인해보면 pw 파라미터에서 '을 필터링하며, no파라미터에서 ', substr, ascii, = 를 필터링하고 있다. 이전 문제에서 사용한 것들을 잘 조합해서 사용하면 무난하게 우회가 가능할 거 같다. 우선 '를 필터링하여 문자열을 필터링하고 있다. 이럴 경우 id = 'admin'이 안되지만, My SQL에서는 아스키코드값인 16진수로 표현할 경우 문자열로 인식이 가능하다. 또한 no에서의 substr은 substrin(), mid() , left(), light()등 다양한 함수로 우회가 가능하다. ascii()는 ord(), hex()등으로 우회가 가능하다. =은 이제 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/0masy/btrl5m2myAT/gcmiOWKl6Xmi66whKiHrVk/img.png)
제목에서도 알 수 있듯 해당 문제는 RTC를 이용하는 문제인듯 하다. 우선 해당 프로그램을 확인해보자. 입력과 출력 기능이 있고, nx가 걸려있는걸 확인 할 수 있다. 또한 해당 바이너리 파일에는 pop rdx; ret 가젯이 존재하지 않는다.. 역시 RTC 기법을 사용해야할 거 같다. 해당 프로그램을 IDA로 확인해보자. 매우 단순하다 write()함수와 read()함수로 단순 출력 입력만 하고있다. 우선 RTC란 ROP기법을 사용할떄 필요한 가젯이 없을경우 사용하는 기법이다. RTC기법은 __libc_csu_init 함수를 사용하며, 가젯을 해당 함수에서 찾는것을 제외한 나머지 방법은 ROP와 동일하다. 자세한 설명은 RTC 기법설명에서 확인하자. https://hg2lee.tistory.com/en..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/tohy2/btrfZp47Y6K/37OFD6Rzfmqml3XK5KkQpK/img.png)
이번에 풀어볼 문제는 pwning라는 문제이다 제목으로는 어떤 문제인지 추측이 불가능하니 해당 문제를 우선 실행시켜보자. 높은 수를 입력하게 되면 크다고 하고 종료되고 작은 수를 넣으면 통과되어 한번 더 입력을 받도록 되어있다. 해당 프로그램의 메모리 보호기법을 확인해보자. NX가 걸려있다. 쉘코드작성은 불가능할 것이고, IDA를 통해 상세 확인을 해보도록 하자. MAIN함수에서는 특별한 걸 발견할 수 없었다 바로 vuln함수를 호출하는 듯하다 해당 함수를 확인해보자. nptr이라는 변수의 크기를 32로 지정해놓고 get_n이라는 사용자 정의함수로 nptr에 입력을 받는 듯하며 해당 입력값을 v2변수에 넣고 해당 변수가 32이상일 경우 크다는 내용 추려과 함께 종료되며, 그렇지 않을 경우 한번 더 입력받..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bBieMg/btrdZWyw6yk/naoheIskMCyHKZugU8eUHK/img.png)
해당 문제는 함께 제공되는 소스코드 또는 아래와 같다. 별 내용 없이 시스템 함수가 실행된다. 해당 문제를 해결하기위해서 사용한 방법은 2014년 발표된 bash의 취약점인 shellshock를 활용했다 shellshock란 환경변수에 함수를 저장하고 서브 쉘로 변경 시 함수 부분 뒤에 이어 나오는 문자열을 명령어로 인식하고, 필터링 없이 실행되는 취약점이다. 즉 아래와 같이 환경변수를 만든 후 shellshock함수에 존재하는 시스템 함수로 bash를 실행시켜 서브 쉘로 변경될 때 해당 함수 뒤에 나오는 명령어를 실행시켜 플래그를 획득할 수 있다. 해당 문제는 export가 아닌 env함수로도 해결할 수 있다. 위의 함수 제작에서 :은 1 즉 무조건 참임을 의미한다. 결론은 flag라는 환경변수에 함수..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bRZ4sI/btrdOwek30Q/k67RvI9frKcceodBGN6M80/img.png)
해당 문제와 함께 제공되는 소스코드는 아래와 같다. 해당 코드를 살펴보면 해당 코드에서의 취약점은 개발자의 연산자 우선순위 선정 실패로 일어난다 첫 번째 if문을 보면 fd=open을 통해 password파일을 읽기 전용으로 0400 권한을 준 후 < 0으로 비교하는 거 같지만 연산자의 우선순위는 =연산자보다
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/JrTYM/btrdQBlEvos/lDKQm5HZ80kc54rfd62BTk/img.png)
해당 문제의 소스코드는 아래와 같다. 차례대로 stage 1번부터 아래와 같다. [stage 1] 스테이지 1번은 argc의 개수가 100개 여야 하며, argv ['A'], argv ['B'] 즉 65번과 66번째 argv에 각각 \x00과 \x20\x0a\x0d가 입력되면 통과한다. [stage 2] 스테이지 2번은 read를 사용하여 파일 디스크립터 0 표준 입력으로 \x00\x0a\x00\xff를 입력하고 그 후 다음 read를 사용하여 2 표준 에러에 \x00\x0a\x02\xff가 입력되면 통과된다. [stage 3] 스테이지 3번은 \xde\xad\xbe\xef라는 이름의 환경변수의 저장되어있는 값이 \xca\xfe\xba\xbe와 일치하면 통과이다. [stage 4] 스테이지 4번은 \x0..