본문 바로가기

4-1. 2026-1 심화 스터디/워게임 도장깨기

[4주차] 워게임도장깨기_웹해킹, 리버싱

오늘은 webhacking.kr의 [old-32] 문제를 풀어보았다.

 

 
사이트를 들어가보니 투표를 많이 받은 순서로 정렬이 되어 있다.
 

 
각 항목의 onclick 이벤트에서 '?hit=닉네임' 형태의 URL이 사용되는 것을 알 수 있다.
 

 
계정당 한번밖에 투표를 못하는 제한이 걸려있어서 'vote_check=ok' 쿠키을 제거해야한다.
 

 
fetch를 이용해 내 닉네임의 hit 요청을 반복적으로 보내서 100번 투표를 완성한다.
 

 
새로고침하면 1등으로 바뀌어있다.
 

 
끝~


Lord of SQLInjection 3번

문제


풀이


조건 & 제약사항
preg_match 함수를 통해 ' , " , ` 의 사용이 차단되어있음
id가 admin이여야

아이디어
1. id='guest'가 고정되어있음 -> and no = 뒤에 false조건을 넣어 guest가 조회되지 않도록해야함
2. or 연산자를 사용하여 id = 'admin' 조건을 추가하기
3. '를 사용할 수 없어서 문자열 'admin을 다른 방식으로 표현해야함 -> 16진수로 변환하기
4. (id가 guest이고 no가 0인 데이터) 또는 (id가 admin인 데이터) 인 쿼리를 입력한다

문제 풀기
1. 문자열 반환

a -> 0x61
d -> 0x64
m -> 0x6d
i -> 0x69
n -> 0x6e
->  admin은 0x61646d696e 이다.

2. no = 0
계정의 번호를 0이나 다른 값을 입력한다( 보통 guest 번호가 0이 아니어서 조건을 틀리게 하기위해서 0을 넣는다)

3. 최종 url

?no=0 or id=0x61646d696e




5. 문제 해결 완료


old-20 문제풀이


입력값 nickname, comment, captcha를 제한 시간 2초 안에 입력해야 하는 문제다.


f12 elements를 확인하면
captcha는 사용자가 입력하는 칸
captcha는  정답이 들어있는 버튼 (value 값)
임을 알 수 있다.

>> 콘솔 자동 입력 코드
let f = document.querySelector("form"); // name=id인 input 찾기, 값 "test" 넣기
f.querySelector("input[name=id]").value = "test";
f.querySelector("input[name=cmt]").value = "test";
let answer = document.querySelector("input[name=captcha_]").value;// captcha_ 버튼 선택, 그 안의 value 읽기
f.querySelector("input[name=captcha]").value = answer; f.submit();// 실제 입력칸 (captcha)에 아까 가져온 정답 넣기