본문 바로가기

워게임32

webhacking.kr old 58번 문제 풀이 음.. 이게 뭘까.. 코드를 봐보자. 음.. 어차피 js를 잘 모르니까 각각의 메서드를 찾아가면서 이해해보자. 폼이 제출되면 preventDefault() 메서드가 동작한다. preventDefault() 메서드는 이벤트를 취소하는 기능을 한다고..? 뭔가 수상하다. socket.emit('cmd', username+":"+$('#m').val()) 은 cmd라는 이벤트에 "username:(send한 내용)"을 전달해준다. 2021. 11. 3.
[los 문제풀이] dragon 쿼리문을 보자마자 느꼈다. pw에 어떠한 값을 넣든 주석처리가 되겠구나. 그러면 주석처리가 되지 않는 게 하기 위해선 어떻게 해야 할까? # 주석에 관해서 생각하면 금방 유추해낼 수 있다. #은 한줄짜리 주석이다. 그럼 다음 줄로 넘어가도록 하면 되겠구나 ㅎㅅㅎ 엔터를 어떻게 하면 적용시킬 수 있을까... \r\n, newline 등등 여러 차례 시도해보았지만,, 정답은 아스키코드표에 있는 url 인코딩 값(엔터)을 넣으면 됐었다. 아래 표를 보면 %0a임을 확인할 수 있다. 그리고 id='guest'로 고정되어 있으므로 id='admin'이 되도록 나머지 코드를 짜야했다. and pw='(아무값)'를 통해 id='guest'가 되지 못하게 만들고, or id='admin'을 해주면 문제가 풀린다. pa.. 2021. 3. 31.
[los 문제풀이] nightmare 풀고 나면 꽤나 쉬운 문제라고 생각이 들것이다. 먼저 GET방식으로 보내는 pw 값이 6보다 작은 조건 하에, 그 아래 쿼리문이 실행되도록 해야 한다. // 처음에 strlen을 우회해보려고 여러 시도를 해봤는데 삽질이었다.. 어떻게 해야 할까 고민을 많이 하다가 preg_match 필터링에 '(싱글 쿼터)가 없는 것을 보고, 'pw에 입력되는 값을 닫아버리고 pw= 식 자체를 참으로 만들어버리자'라고 생각했다. pw의 값을 닫아버리려면 pw=('')를 입력하고, 해당 식을 참으로 만들기 위해 =0를 붙이면 된다. 물론 그 뒤에 있는 값들은 주석처리가 되어야 한다. 입력 >> ?pw=')=0;%00 위의 값을 입력하면 다음과 같은 쿼리문이 나오고, 문제가 풀린다. ----------------------.. 2021. 3. 24.
[los 문제풀이] zombie_assassin 앞에서 풀었던 succubus 문제와 쿼리문이 동일하고, addslashes 함수를 보니 역슬래시를 사용해야 하는 문제인 것 같았다. GET방식으로 보낸 id와 pw값을 addslashes 함수와 strrev 함수가 감싸고 있었고, addslashes 함수는 간단하게 말해서 특수문자 앞에 \를 붙임으로써 일반 문자로 인식되게 하는 것이고, strrev 함수는 뒤집는 함수임을 기억하자. 일단 작은따옴표를 우회해야 하므로 역슬래시를 집어넣었다. 아래 사진과 같이 addslash 함수가 잘 적용된 것을 알 수 있었다. 그럼 id의 두 번째 작은따옴표 앞에 \만 붙일 수 있도록 하려면 어떻게 해야 할까? addslashes 함수를 역으로 이용해야겠다고 생각했다. addslashes 함수에서 특수문자(두 번째 작.. 2021. 3. 8.
[los 문제풀이] succubus 아래 코드에서 GET방식으로 보낸 id와 pw값이 쿼리문에 들어가고, 해당되는 id값을 가져온다. 이때의 id값은 뭘 가져와야 할까? 문제가 풀리는 if문을 가져오면, 가져온 id값이 참일 경우에 문제가 풀린다. 따라서 우리는 1. select에 있는 작은따옴표를 우회한다. 2. id 값이 참이 되도록 쿼리문을 작성한다. 작은따옴표 우회는 작은따옴표 앞에 \(역슬래쉬)를 붙여 문자로 인식되도록 하는 것이다. 무슨 말이냐면, preg_match에서 필터링되는 특수문자를 입력할 때 \를 붙이는 것처럼 쿼리문 안에서 특수문자를 문자로 인식시키려면 역슬래쉬를 사용하면 된다. 그럼 id에는 \를 입력하면 아래와 같이 pw의 첫 번째 작은따옴표까지 한 문자로 인식하게 된다. pw에는 참 값과 주석이 포함되면 풀린다.. 2021. 3. 7.
[los 문제풀이] assassin 블라인드 SQL 문제이다. GET방식으로 넘겨준 pw 파라미터에 따라서 id 값이 나온다고 한다. 이 쿼리문에서 like 취약점인 % 연산자를 통해 pw 값을 알아낼 수 있다. 그럼 파이썬 코드를 짜볼까. import requests URL = "https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php" header = {"Cookie" : "PHPSESSID=....."} check = 0 flag = '' while True: for flag_num in range(48, 122): tmp = flag + chr(flag_num) + '%' para = {'pw' : tmp} response = requests.get(URL,.. 2021. 2. 15.