티스토리 뷰
Challenge 39
입력창과 제출버튼밖에 없다.
페이지 소스를 보면 index.phps 가 주석처리 되어있고 이 부분을 url에 붙여주면
index.phps 소스가 뜬다.
<head>
<title>Chellenge 39</title>
</head>
<body>
<?
$pw="????";
if($_POST[id])
{
$_POST[id]=str_replace("\\","",$_POST[id]);
$_POST[id]=str_replace("'","''",$_POST[id]);
$_POST[id]=substr($_POST[id],0,15);
$q=mysql_fetch_array(mysql_query("select 'good' from zmail_member where id='$_POST[id]"));
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>
여기서 쓰인 str_replace 함수의 사용법은
$_POST[id] = str_replace("-","",$_POST[id]);
$_POST[id] = str_replace("찾을문자열","치환할문자열","대상문자열");
substr은 php에서 문자열에서 일부를 잘라내어 쓰고자 할 때 사용된다.
string substr ( string $string , int $start [, int $length ] )
$string에 담고 있는 문자열의 $start부터 길이$length만큼을 잘라내어 반환합니다.
즉, $_POST[id] 문자열에서 \ -> (공백) , ' -> '' 이렇게 치환되고
$_POST[id] 문자열에서 0부터 15까지의 구간을 반환한다는 것.
아무거나 입력 했을 땐 이렇게 뜨는데
index.php 페이지의 17번째 라인을 보자.
"select 'good' from zmail_member where id='$_POST[id]"
자세히 보니 id 부분의 싱글쿼터(')가 닫히지 않았다.
그럼 싱글쿼터를 닫아주는 형식으로 입력해주면 될 것 같다.
15개의 글자를 입력해 주고 마지막은 싱글쿼터로 닫아 주어야 하는데 '가 ''으로 치환되므로
admin ' 이런식으로 입력 해주면 16글자가 된다.
' 하나가 잘려나가면 15자리 숫자가 되고 싱글쿼터로 닫히므로 문제를 풀 수 있다.
예에~
'Web_Hacking > Webhacking.kr' 카테고리의 다른 글
[Web_hacking] Webhacking.kr 12 (0) | 2017.01.31 |
---|---|
[Web_hacking] Webhacking.kr 16 (0) | 2017.01.23 |
[Web_Hacking] Webhacking.kr 14 (0) | 2017.01.23 |
[Web_hacking] Webhacking.kr 17 (0) | 2017.01.22 |
[Web_hacking] Webhacking.kr 15 (0) | 2017.01.22 |
- Total
- Today
- Yesterday
- attackme
- webhacking.kr
- c언어
- 파이썬
- pwnable.kr
- wargame
- cobolt
- 자바
- pwnable
- WebHacking
- C
- 워게임
- MySQL
- 웹해킹
- BOF
- 설치
- my-pass
- 명령어
- 0xdeadbeef
- ubuntu
- 1번
- Python
- java
- lob
- wargame.kr
- ftz
- Los
- lord of sqlinjection
- Lord of SQL Injection
- 우분투
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |