DoR@Hee의 끄적끄적
webhacking.kr 39번 본문
문제 첫화면 먼가 제출하는 느낌이다.
1를 넣었을 때 mysql_fetch_array()이 보이며 문법이 틀린거 같다.
그래서 소스보기를 한 결과
index.phps가 보인다.
그 중 mysql_fetch_array 에 '(싱글쿼터) 가 빠져있는것이 보이며,
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 | <html> <head> <title>Chellenge 39</title> </head> <body> <? $pw="????"; if($_POST[id]) //전달받은 id 값이 존재 할 경우 { $_POST[id]=str_replace("\\","",$_POST[id]); // \\는 공백으로 $_POST[id]=str_replace("'","''",$_POST[id]); // '는 ''으로 치환한다. $_POST[id]=substr($_POST[id],0,15); // substr은 문자열을 자르는 함수이며 0번째부터 15번째까지 자르고다.잇 $q=mysql_fetch_array(mysql_query("select 'good' from zmail_member where id='$_POST[id]")); // 그 결과값 $_POST[id]를 query에 if($q[0]=="good") @solve(); } ?> <form method=post action=index.php> <input type=text name=id maxlength=15 size=30> <input type=submit> </form> </body> </html> | cs |
해당 소스코드이고 해석은 주석을 달아 놓았다.
good이라는 문자열이나타나야하고 또한 '를 닫아줘야하니 위와 같이 문자열을 입력 후 제출을 눌러보았다.
아무런 오류가 안나타났다.
select 'good' from zmail_member where id='goodasdasdasda'"
위와 같이 쿼리가 들어가는 이유는
1. $_POST[id]=str_replace("'","''",$_POST[id]);
2.$_POST[id]=substr($_POST[id],0,15);
와 관련이 있다는것을 확인 할 수있다.
goodasdasdasda' 이런식으로 쿼리가 들어갈 경우
goodasdasdasda" 이런식으로 치환이 되고
0~15문자열까지 자르기 때문에 "(더블쿼터)는 '(싱글쿼터)로 잘린다
즉 쿼리는 이런식으로 들어간다. goodasdasdasda'
즉 위와같이 쿼리가 들어간다는것을 알 수 있었고
그럼 문자열 대신 공백으로
good '를 입력하면
성공
'WarGame > WebHacking.kr' 카테고리의 다른 글
webhacking.kr 42번 (0) | 2019.02.25 |
---|---|
webhacking.kr 41번 (0) | 2019.02.25 |
webhacking.kr 38번 (0) | 2019.02.24 |
webhacking.kr 8번 (0) | 2019.02.23 |
webhacking.kr 37번 (0) | 2019.02.22 |
Comments