본문 바로가기

Wargame, CTF

(113)
Webhacking.kr 34번 처음 들어올 때 alert창 말고는 딱히 보이는게 없음 보기 힘들게 되어있음 쭉 코드를 보면 아랫 부분에 alert이 딱 하나 나옴 아마 처음들어왔을 때 alert인것 같음 보면 else 일 때 alert이 뜨는데 else가 아닌 if일 때를 보면 저기서 if일 때 실행되는 location[b('0x1c','4c%d')]=b('0x1d','llaF') 이걸 console창에 붙여놓고 실행시키면 https://webhacking.kr/challenge/js-7/?Passw0RRdd=1 일로 이동하면서 클리어됨
Webhacking.kr 25번 리눅스 터미널같은 모습 ls -al 명령어의 결과 같음 파일은 flag.php hello.php index.php가 있음 get파라미터로 받는 file의 기본값은 hello hello.php가 아니라 hello가 있는걸 보니 뒤에 .php가 알아서 붙어있는것 같음 flag는 코드안에 있다고 하는데 뭔 소린지 모르겠다 찾아보니 php wrapper라는게 있다고 함 그리고 이문제에서는 filter로 base64가 적용되어있다고함 https://www.php.net/manual/en/wrappers.php.php PHP: php:// - Manual This parameter takes one or more filternames separated by the pipe character |. www.php.ne..
Webhacking.kr 6번 소스코드 user_id 쿠키값이 없다면 val_id="guest" val_pw="1234" val_id와 val_pw를 base64로 20번 인코딩 그리고 인코딩한 값을 소스코드에 보이는 값처럼 str_replace로 치환 val_id를 user쿠키값으로 val_pw를 password 쿠키값으로 저장 다시 str_replace로 치환하고 base64로 디코딩했을 때 user값이 "admin"이고 password값이 "nimda"가 되면 클리어 간단하게 "admin"과 "nimda"를 20번 base64로 인코딩한 값을 각각 넣어주면 될것같음 파이썬 코드 import base64 user = "admin" pw = "nimda" user = user.encode("UTF-8") pw = pw.encode(..
Webhacking.kr 1번 ---------------------
Webhacking.kr 52번 view-source 소스코드 일단 클리어를 하려면 admin으로 로그인하고 remote ip가 172.17.0.~가 되어야함 프록시를 줬음 벞스에서 보던거랑 거의 유사함 sql injection으로 admin으로 로그인한다 처음에 admin page에서 뭘 해보려다 삽질이란걸 알게됨 이 문제는 문제에서 준 proxy를 활용해야함 괜히 준게 아니였음 proxy로 바로 들어가면 Response에 메인화면과 같다 지금 url은 proxy.php?page=/ 이렇게 되어있는데 proxy.php?page=/admin/ 이렇게 주게되면 admin page의 response가 뜸 실제 admin page에 admin으로 로그인 했지만 여기선 Login Fail이 떠있음 실제로 벞스에서 /admin/으로 갈 때 re..
Webhacking.kr 13번 참일 때 거짓일 때 필터링 =, , and, ||, &&, 공백, 0x, -, /, *, like, left, right, mid, ascii, hex, where, limit, union, order 등 되는 것 or, select,0b, ', substr, sleep,^,ord, if, database(), information, in, reverse 등 필터링과 되지 않은 것들은 더 있을 것인데 중요한 것만 추렸다 데이터베이스명 알아내기 no=(0)or(if(length(database())in(7),1,0)) ord(?)=99 'c' 아마 chall13이지 싶음 이제 테이블을 찾아야하는데 우선 테이블명의 길이부터 알아낸다 테이블명의 길이를 알아내는 쿼리문으로는 if((select(length(mi..
Webhacking.kr 9번 no=3의 id값이 password라고 함 쿼리문은 아마 no의 값으로 id를 꺼내오는 단순한 구조인거같음 select id from 테이블 where no=1 이런구조? no의 값에서 injection을 해야하는 것 같은데 필터링된게 엄청 많음 =, , ||, &&, or, and, /**/, 공백, char, hex, select, left, ', ", # 더 있는거같다 그래도 필터링을 우회하여 injection이 먹히긴 함 공백은 괄호를 적당히 사용하면 될거같음 0은 없는 것 같으니 이걸로 씀 no=if(length(id)like(5),1,0) id의 길이가 5이면 no=1이되고 아니라면 0번페이지를 호출할 거임 근데 하다보니 신기한 거였는데 if문의 참일 경우 반환되는 값에 따라 id가 no=1의..
Webhacking.kr 57번 se가 secret체크박스의 값임 message와 secret에 addslshes함수 적용 se에서 select, and, or, not, &, |, benchmark 필터링 쿼리문은 insert into chall57(id,msg,pw,op) values('{$_SESSION['id']}','{$_GET['msg']}','{$flag}',{$_GET['se']}) se에서 sql함수를 사용가능해 보임 일단 이문제에서 볼수있는건 메세지를 보냈을 때 Done 밖에 없음 그래서 time based injection이 생각나 해보기로함 msg=1&se=if(length(pw)>0, sleep(2), 0) 이런식으로 해서 작동되는지 보니까 sleep이 먹힌다 msg=1&se=if(length(pw)=24, sl..