목록Wargame & CTF/Web (15)
메로나

LoS 7번 orge 문제 입니다. 문제를 보면, pw에서 or, and를 필터링 하고 있고, pw를 그대로 받아와 admin과 다시 and 연산을 통해 로그인을 해서 admin의 pw가 정확히 맞다면 orge가 풀리는 코드라는 것을 알 수 있습니다. Blind SQLi 문제이겠죠? 사실 문제는 4번 문제에서 or, and를 필터링 하는 조건이 추가된 것 뿐입니다. 그러니 4번 익스플로잇 코드에서 or, and만 똑같은 기능을 하는 연산자로 바꿔 주면 끝나겠죠. 먼저 pw의 길이를 알아봅시다. 길이는 그냥 직접 찾았습니다. length(pw)=8이니, 이용하여 코드를 짜서 익스를 하도록 합시당. flag가 나오게 됩니당. pw 파라미터에 넘겨주게 되면 클리어 했습니다.

LoS 6번 darkelf 문제입니다. 문제에서 pw 파라미터에 어떤 값을 필터링 하는지 보면, or과 and를 넣으면 HeHe라며 웃어버리네요. or, and 대신 어떤걸 넣어야 필터링 검사에 걸리지 않고 or and 연산을 할 수 있을까요? 1. and, or 대신 &&, ||를 사용한다! and랑 or 대신 &&, ||를 사용할 수 있죠. 이 연산자를 이용하면 필터링을 거치지 않고 똑같은 연산을 할 것입니다. 그러면 익스플로잇 코드는 ?pw='||id='admin 이 될 것입니다. 넣어보면 풀리게 됩니다.

LoS 5번 wolfman 문제입니당. 문제부터 봅시다. 이번 문제에서는 pw 파라미터로 값을 받아오는데, 이번에는 띄어쓰기 공백을 필터링 합니다. ' or id='admin 을 넣고싶은데 저 사이에 공백을 필터링 해버려서 저 구문은 사용 못하게 되었습니다. 그러면 어떤 구문을 사용해야 할까요? 1. %0a, %0b, %0c 등으로 우회하기 그냥 공백 대신 %0a, %0b 등을 넣어주면 그대로 우회가 됩니다. 넣어보면 그대로 필터링을 우회할 수 있다는 것을 알 수 있습니다. 2. or이나 and 사용시 대신 ||, && 사용하기 or, and 사용시 대신 ||, &&를 사용할 수 있습니다. 이 때는 굳이 띄어쓰기가 필요가 없으므로 or 대신 || 를 넣어주게 된다면 위와같이 띄어쓰기 사용 하지 않고 공격..

미리 말씀드립니다만 이 문제는 Blind SQL injection 문제입니다. 문제를 풀이할 때 물론 하나하나 전부 찾아보는 방법이 있지만 매우 귀찮겠죠?? 그러니 코드를 작성하여 문제를 푸는것을 추천드립니당. LoS 4번 orc 문제입니당. 문제 데이터베이스에 공격을 가하지 않는 이상 딱히 필터링을 안합니다만... id가 admin이라도 pw가 정확한 pw가 아니라면 문제를 풀어주지 않고 그냥 Hello admin만 출력하네요. Blind SQLi 문제 라는 것을 알 수 있습니다. 그렇다면 pw를 하나하나 알아가는 방법밖에 없습니다. pw에 대한 정보를 알기 위해 length 함수를 이용해 pw의 길이를 알아 내고, substr 함수를 이용해 한글자 한글자 찾아 가는 방법 밖에 없습니다. pw 길이는 ..

LoS 3번문제, Goblin 문제입니다. 어떤걸 필터링 해놨는지 볼까요? 파라미터 값을 no 파라미터에서 갖고 오는 것을 쿼리문에서 볼 수 있습니다. 그런데 preg_match 구문에서 따옴표 종류별로 다 필터링 해놨네요... 그러면 어떻게 해야 할까요? 이번 문제는 char() 함수를 이용해야 합니다. char() 함수는 입력된 숫자의 값에 따른 아스키 코드 문자를 출력하는 함수입니다. 따옴표를 막아놔서 문자열을 넣지 못하니 숫자를 이용해야 한다는 것을 알 수 있죠. 따옴표를 제외하고는 딱히 필터링 해 놓지 않았네요. 익스플로잇 코드는 ?no=0 or id=char(0x61, 0x64, 0x6D, 0x69, 0x6E)가 되겠습니다. (no값이 1이 되어버리면 앞 문자열이 맞게 되어 버려요. 그래서 g..

이번엔 두번째 문제인 COBOLT 문제입니다. 문제는 아래와 같습니다. 음... 이번 문제는 pw에 이상한 md5('')라는 구문이 들어와 있습니다. 코드를 보면 id가 admin이면 솔브 되지만 아닐 경우에는 admin이 아니라고 문제를 풀어주지 않습니다. 또 쿼리 구문에는 id 값과 pw값을 받아오지만 별 다른 필터링이 되어 있지 않습니다. 그래서 그냥 id 파라미터에 admin을 넣어주고 뒤 구문을 그냥 전부 주석처리 해 버리면 될 것 같습니다. 그러면 익스플로잇 코드는 ?id=admin'-- - 이 되겠죠. 넣어주게 된다면 풀리게 됩니다.

어제부터 LOS 시작했습니당. 이제 LOS랑 웹케알 root-me도 함께해서 라이트업을 올릴 예정입니다. 1번 문제인 GREMLIN 문제는 아래와 같이 있습니다. 음... 다른 문제 공격하는 걸 제외하고는 딱히 필터링 된 문구가 없습니다. 그냥 기초적인 SQL injection 구문 중 하나인 1=1이 True가 되는것과 주석을 이용하여 빠르게 넘어가 주도록 합시다. pw 파라미터에 ' or 1=1-- - 이렇게 전달해 주면 될 것 같습니당. 필터링 하는 값이 따로 없어서 그냥 기초적인 SQL injection 문제입니다.

저 웹사이트에서 로그인 하는 문제이다. 링크로 들어가 보자. 느끼하게 생긴 아저씨들의 사진이 나와있다. 물론 이게 목표는 아니다 ㅋㅋㅋ 로그인을 하라고 했으니 메뉴에서 로그인 페이지로 들어가보자. 그냥 평범한 로그인 페이지이다. 처음 이 문제를 보자마자 SQL injection 공격을 떠올렸었다. F12를 눌러 한번 분석을 해보자. 오잉? hidden 부분에 디버그 하는 부분이 있다. 원래는 0이여서 그런지 로그인에 실패했어도 별 문구가 뜨지 않았는데, 이 부분을 1로 만들어 주고 다시 아무 값이나 집어 넣어 보자. 오 ㅋㅋㅋ 쿼리문을 전부 보여준다. SQLi 공격에서 기본적으로 대입해 볼만한 값이 ' or 1=1-- -이다. 막힌다면 어느부분에서 막히는지 쿼리문을 보여주기 때문에 알 수 있다. 한번 대..