일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- webhacking.kr
- Bob
- PS
- pwn.college
- web
- pwnable
- regex
- Crypto
- SQLi
- JS
- 백준
- SECGAME
- cryptohack.org
- blind_sqli
- cookie
- blind-sqli
- 예전글 #PS
- 예전글 #CNN
- 예전글
- pwn
- Pwnable.kr
- XSS
- HTB
- cce2023
- Today
- Total
목록분류 전체보기 (50)
아모에요
A1 칸에 FLAG{?????????????}이 주어지고 이 값은 다른 시트지에서 받아오는 것을 확인할 수 있다. 시트지 주소로 접속해보면 접속이 되지 않는다. 그러나 페이지를 불러오는 와중에 평문으로 데이터를 받아왔을 것을 예상해서 시트지 링크를 개발자 도구의 Network 탭에서 검색해보았다. 확인해보면 플래그가 나와있다.
정확히 0개의 옵션을 선택해야 제출이 가능한데.. 하나도 선택하지 않으면 제출이 안되는 그런 상황이다. 혹시나 해서 view-source를 보았는데 플래그가 노출되어있다. ...?
참 더러운 자바스크립트가 있다. 자바스크립트 난독화 종류를 찾아보니 aaencode이다. https://cat-in-136.github.io/2010/12/aadecode-decode-encoded-as-aaencode.html aadecode - Decode encoded-as-aaencode JavaScript program. ['_'] aadecode - Decode encoded-as-aaencode JavaScript program. (゚Д゚) ['_'] Enter ... cat-in-136.github.io 에서 디코딩을 해보자. var enco=''; var enco2=126; var enco3=33; var ck=document.URL.substr(document.URL.indexOf('=..
문제 소스를 보면 $pat="/[1-3][a-f]_.*$SERVER[REMOTE_ADDR].*\tp\ta\ts\ts" 의 정규표현식 형태이다. 이게 ?val= 값과 일치하면 풀린다. 정규식을 잘 알고 있는 사람이라면 금방 풀 수 있다. [1-3]은 [1-3]범위에 있는 문자 하나를 지칭한다. 1 [a-f]{5}는 [a-f]범위에 있는 문자 5개를 지칭한다. aaaaa _는 _ .*는 .(아무 문자나 가능) *(0개 이상의 개수) 이므로 아무 문자도 입력하지 않아도 된다. $_SERVER[REMOTE_ADDR]는 내 ip주소 \tp\ta\ts\ts는 탭을 인코딩해서 %09p%09a%09s%09s 형태로 입력하면 된다. ?val=1aaaaa_182.224.141.25%09p%09a%09s%09s를 입력하면 ..
문제에 접속하고 소스를 보면 다음과 같은 element가 존재한다. O 이걸 1600번 클릭하면 문제가 풀릴 것 같다. for(var i=0; i
SQLi는 맞는데 필터링이 걸려있는 문제 소괄호는 필터링이 되어있지 않는다. if(true,1,1234) 형태로 입력하면 if조건문에서 no=1이 되고 Apple이 출력된다. 반대로 조건이 false가 되면 no=1234가 되면서 Apple이 출력되지 않는다. blind-sqli로 풀리는 문제 같은데.. 필터링이 빡세서 어떻게 해야할지 고민했다. no=3이면서 id를 구해야하는데.. no가 3이라는걸 어떻게 조건을 맞출까 생각하다가 if(조건문,1,1234)를 입력했을때. 쿼리상에는 다음과 같은 쿼리가 입력되었을 것이다. SELECT text FROM table WHERE no=if(조건문,3,1234) db테이블에 최소 3개의 컬럼이 존재하고 각각 text = 반환되는 텍스트 (no=1일때 Apple,..
Access Denied!"); echo(htmlspecialchars($agent)); exit();}$db = dbconnect();$count_ck = mysqli_fetch_array(mysqli_query($db,"select count(id) from chall8"));if($count_ck[0] >= 70){ mysqli_query($db,"delete from chall8"); }$result = mysqli_query($db,"select id from chall8 where agent='".addslashes($_SERVER['HTTP_USER_AGENT'])."'");$ck = mysqli_fetch_array($result);if($ck){ echo "hi ".htmlentit..
"); }echo("Admin page");if(preg_match("/2|-|\+|from|_|=|\\s|\*|\//i",$go)) exit("Access Denied!");$db = dbconnect();$rand=rand(1,5);if($rand==1){ $result=mysqli_query($db,"select lv from chall7 where lv=($go)") or die("nice try!");}if($rand==2){ $result=mysqli_query($db,"select lv from chall7 where lv=(($go))") or die("nice try!");}if($rand==3){ $result=mysqli_query($db,"select lv from chall7..
보호되어 있는 글입니다.
문제 소스를 보면 base64로 20번 인코딩하고 문자열을 치환한 값이 쿠키에 저장된다. 이를 역산한 값이 admin, nimda이면 문제가 풀린다. 어렵지 않게 이를 코드로 짤 수 있다. admin, nimda를 20번 인코딩한 값은 import base64 def encode(text): text_bytes = text.encode('ascii') text_base64 = base64.b64encode(text_bytes) tb64str = text_base64.decode('ascii') return tb64str id = "admin" pw = "nimda" for i in range(20): id = encode(id) pw = encode(pw) print(id) print(pw) 의 코드로 ..