일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pwn
- pwnable
- cookie
- HTB
- regex
- pwn.college
- 예전글 #PS
- Pwnable.kr
- cryptohack.org
- webhacking.kr
- SECGAME
- PS
- web
- XSS
- 백준
- Crypto
- blind-sqli
- 예전글
- blind_sqli
- cce2023
- Bob
- SQLi
- 예전글 #CNN
- JS
- Today
- Total
목록SQLi (5)
아모에요
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..
사이트에 접속하면 노노그램이 주어진다. 이를 해결하면 로그를 위해서 이름을 입력하라고 나온다. 이름을 입력한 뒤 submit를 누르면 POST 요청이 보내지는데, answer=1010100000011100101011111과 id=이름 형태의 데이터가 전달된다. id에는 어떤 데이터를 입력해도 취약점이 보이지 않지만, answer에 '1'+'1'과 같은 데이터를 넣으면 query error라고 표시된다. 가장 기본적인 SQLi 구문을 넣으면 문제가 풀린다.
처음 이 문제를 봤을 땐 와 저걸 진짜 어떻게 풀지, 싶었는데 CTF를 여러번 뛰고 나니까 감이 잡히는 문제입니다. 페이지 소스를 보면 와 같이 쓸데없는 주석이 있습니다. 쿠키도 확인해보면 time이라는 값이 있네요. time의 값을 변경해봅시다. true로 변경하면 2070-01-01 09:00:01으로 바뀌고 false로 변경하면 2070-01-01 09:00:00으로 변경됩니다. admin.php에 접근하면 엉덩이를 차버린다 했으니 SQL 구문을 사용할 확률이 높겠네요. 직접적으로 SQL 결과값을 알 순 없고 true, false 값이나 숫자 값만 알 수 있으므로 Blind SQL Injection 공격을 시도해봅시다. 먼저 테이블 개수를 구하려면 (select count(*) from inform..