본문 바로가기

Wargame, CTF/webhacking.kr

(56)
Webhacking.kr 35번 phone과 id를 GET방식으로 전달받음 필터링 phone에서 | * | / | = | select | - | # | ; | id에서 id값이 5글자보다 많으면 안됨 admin이 포함되면 안됨 쿼리문 insert into chall35(id,ip,phone) values('id','아이피',phone) 이게 우리가 날리는 쿼리이고 select ip from chall35 where id='admin' and ip='내 아이피' 이 쿼리로 나오는 값이 내 ip와 같다면 클리어 mysql에서 한번에 insert를 여러개 할 수 있음 insert into 테이블명(컬럼1, 컬림2) values('값1', '값2'), ('값1', '값2'), ('값1', '값2') 그래서 id값은 그대로 두고 phone에서 ..
Webhacking.kr 49번 필터링 목록 select | or | and | ( | ) | limit | , | / | order | cash | 공백 | \t | ' | " 쿼리문 select id from chall49 where lv={$_GET['lv']} 쿼리를 보내 id가 admin이면 클리어 46번과 비슷한데 이번에는 괄호를 아예 못 쓰게 해놔서 함수를 못 쓸것 같음 그래도 0x를 필터링 해놓지 않아서 문자로 바꿀수 있음 0||id
Webhacking.kr 46번 lv에 addslashes함수가 씌어지고 공백, /, *, %, select, 0x, limit, cash가 필터링 되어있다 쿼리문은 select id, cash from chall46 where lv=$_GET[lv] 쿼리문을 날려 id값이 admin이면 클리어 일단 정상적으로 해봤을 때 lv1은 ltusy information money : 1100 2 udnrg information money : 800 3 fvvcg information money : 1200 4 bzrbo information money : 700 이렇게 있었고 lv에 0||1=1을 했을 때 lv가 3인 친구가 나왔는데 돈이 제일 많을 걸봐서 돈이 많은 순서일 수도 있겠다라고 생각됨 근데 cash가 필터링되 있어서 돈으로 어째 ..
Webhacking.kr 32번 1등이나 100 다 채워야 할거 같음 784등 아까 실수로 다른 사람에게 투표해서 이미 투표했다고 뜬다 쿠기값을 보면 vote_check : ok ok값을 지우면 또 투표할 수 있다 161등 까지 올라왔다 파이썬으로 돌리기로함 import requests for i in range(99): url="https://webhacking.kr/challenge/code-5/?hit=bbq9014" cookie={'PHPSESSID':'3vnfk08krjdljv681h8lt0ulfm','vote_check':''} session=requests.Session() payload=session.get(url,cookies=cookie) print(i)
Webhacking.kr 26번 소스코드 id가 admin이면 클리어 id에서 admin필터링 통과하면 urldecode를 한다 일단 admin의 urlcode값은 %61%64%6d%69%6e인데 이대로 전송하면 get방식이라 바로 admin으로 전송되 필터링된다 그래서 한번 더 인코딩 %2561%2564%256d%2569%256e 이렇게되면 %61%64%6d%69%6e이렇게 보내져서 필터링을 우회하고 url decoding을 하면 무사히 admin으로 바뀌게 된다
Webhacking.kr 59번 회원가입란과 로그인란
Webhackig.kr 24번 $ip가127.0.0.1이면 클리어 extract함수가 보이는데 이 함수의 역할은 배열속의 키값들을 변수화 시키는 것이다. 그래서 쿠키값에 REMOTE_ADDR를 주면 REMOTE_ADDR를 변수로 사용해서 값을 줄 수 있게되어 $ip값을 줄 수 있게 된다 그리고 str_replace가 보이는데 .. -> . 12 -> 공백 7. -> 공백 0. -> 공백 replace를 거쳐서 127.0.0.1을 만드려면 112277....00....00....1 이걸 쿠키값에 주면된다 클리어
Webhacking.kr 58번 채팅창 같기도 help를 쳐보니 리눅스처럼 ls id flag help라는 명령어가 있는 것 같음 ls하면 index.js temp.html이 있다고 함 id를 치면 원래 현재 로그인한 root계정의 정보를 출력하는데 root라고 나옴 flag는 권한이 없고 admin만 가능하다고 한다 페이지 소스중에 이상한게 있는데 username이 guest로 되어있음 콘솔 차에서 admin으로 수정하고 flag를 쳐도 안된다 원래 socket.emit부분에 uesrname+":"+$('#m').val()); 이렇게 되어 있었는데 입력 창의 id값이 m인걸 보아 입력값을 전달해주는 것 같음 그래서 그냥 내가 원한는 값을 가져다 박기로함 그리고 flag를 치면 클리어 이번건 거의 찍은거 같고 원래 이렇게 하는건지도 잘..