Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 예전글 #CNN
- HTB
- webhacking.kr
- XSS
- cookie
- regex
- 예전글 #PS
- 백준
- web
- Pwnable.kr
- cce2023
- Bob
- pwn
- pwn.college
- 예전글
- blind-sqli
- pwnable
- Crypto
- cryptohack.org
- PS
- SECGAME
- JS
- SQLi
- blind_sqli
Archives
- Today
- Total
아모에요
[webhacking.kr] old-07 본문
<?php
$go=$_GET['val'];
if(!$go) { echo("<meta http-equiv=refresh content=0;url=index.php?val=1>"); }
echo("<html><head><title>admin page</title></head><body bgcolor='black'><font size=2 color=gray><b><h3>Admin page</h3></b><p>");
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 where lv=((($go)))") or die("nice try!");
}
if($rand==4){
$result=mysqli_query($db,"select lv from chall7 where lv=(((($go))))") or die("nice try!");
}
if($rand==5){
$result=mysqli_query($db,"select lv from chall7 where lv=((((($go)))))") or die("nice try!");
}
$data=mysqli_fetch_array($result);
if(!$data[0]) { echo("query error"); exit(); }
if($data[0]==1){
echo("<input type=button style=border:0;bgcolor='gray' value='auth' onclick=\"alert('Access_Denied!')\"><p>");
}
elseif($data[0]==2){
echo("<input type=button style=border:0;bgcolor='gray' value='auth' onclick=\"alert('Hello admin')\"><p>");
solve(7);
}
?>
문제 코드를 보면 SQLi로 data[0] 값을 2로 만들면 되는 문제인데, '2','-','+','from','_','=','\s','*','/' 문자열이 필터링되어있다.
$go에 들어갈 수 있는 연산은 무궁무진하다.
XOR 연산을 사용해서 1^3 = 2
비트 쉬프트 연산을 사용해서 1<<1 = 2
나머지 연산을 사용해서 5%3=2 등등 을 대입하면 될 줄 알았는데
query error가 뜬다.v
이를 해결하기 위해서 union을 사용해보자.
val=13)union(select(1^3));%00
괄호를 한개만 우회했으므로 5번정도 돌리면 문제가 풀린다.
'Study > Hacking' 카테고리의 다른 글
[webhacking.kr] old-10 (0) | 2023.06.14 |
---|---|
[webhacking.kr] old-09 (0) | 2023.06.14 |
[SECGAME] Response (0) | 2023.06.13 |
[webhacking.kr] old-06 (0) | 2023.06.13 |
[webhacking.kr] old-05 (0) | 2023.06.13 |