본문 바로가기

Wargame, CTF

(113)
Webhacking.kr 29번 파일을 올리면 time, ip, file의 이름이 뜨는 것을 볼수있다 이걸로 파일을 제출할 시 INSERT INTO 테이블 VALUES() 구문이 쓰이고 우리에게 보여지는 화면은 select time, ip, file from 테이블 구문으로 되어있는걸 추측할 수 있다 일단 파일이름으로 injection을 시도할건데 VALUES()안에서 파일이 어디에 위치하는지를 먼저 알아내야한다 경우 1(파일 이름이 첫번째에 위치하는 경우) file, ~~, ~~ 이런 경우에는 ', ~~, ~~),(injection, ~~. ~~)-- -로 한다 INSERT INTO 테이블 VALUES('', ~~, ~~),(injection, ~~, ~~)-- -', ~~, ~~) 경우 2(파일 이름이 중간에 위치한 경우) ~~, ..
Webhacking.kr 53번 val과 answer의 파라미터를 값으로 줄 수 있고 쿼리문 select a from $hidden_table where a=$_GET['val'] val에서 | select | by | 가 필터링 되어있음 문제의 목적은 일단 $hidden_table을 찾아야함 테이블명을 알아내서 테이블명을 answer의 파라미터 값으로 주면 클리어 select가 필터링되어있어 information_schema를 쓸 수 없음 그 대신 procedure analyse()를 사용가능함 https://chaneyoon.tistory.com/109 MySQL procedure analyze()를 이용한 SQLi MySQL procedure analyze()를 이용한 SQLi - H3X0R, s1ipper 소속 웹해커 윤석찬(c..
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번 회원가입란과 로그인란