2021-09-09 · 2분
[시스템해킹] Buffer Overflow(BOF)
설정되어 있는 버퍼의 크기보다 크게 입력을 받을 수 있을 때 생기는 취약점입니다.
2021-06-06 · 1분
이 글은 작성된 지 2년이 넘었어요. 내용이 오래됐을 수 있어요.
이 LOS(Lord Of SQLInjection)은 SQLInjection를 실습할 수 있는 웹 해킹 실습 사이트입니다.
SQL Injection에 관한 건 [해킹/웹 해킹] - SQL Injection 이 글을 읽어주세요~ㅎ
[해킹/웹해킹] - [LOS] 1번 gremlin write up <- 1번 문제

1~6번째 줄까지는 전 1번 내용과 똑같기에 넘어가겠습니다.
$query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')";
1번과 달라진 쿼리문입니다. pw에 md5라는 것이 추가된것이 끝인거 같다. 핵심은 여기가 아닌 10~11 줄입니다.
if($result['id'] == 'admin') solve("cobolt");
elseif($result['id']) echo "<h2>Hello {$result['id']}<br>You are not admin :(</h2>";
이제 전과 달라진 점은 result['id']값이 'admin'이 되어야 지만 풀리는 것같다. 그냥 1번 문제처럼 풀면 아래 elseif문이 작동되는 것 같습니다. 확인해 볼까요? 1번과 똑같이 'or 1=1 %23를 id값에 넣어보도록 하겠습니다.

예상대로 elseif문이 작동되는 것을 확인할 수 있습니다. 그렇다면 어떻게 해야할까요?
매우 간단합니다 id값만 admin으로 만들어 주면 되요! id=admin' %23 이런식으로 입력하면 id값이 admin으로 바뀌고 뒤에 #를 입력해주어서 뒤를 주석처리 해 주었습니다.

이렇게 해결하였습니다!! 2번 문제 수고하셨습니다.
원문: tistory — 2021-06-06 발행, 이 블로그로 이전됨.
…