워게임
-
공격 백터는 pw 파라미터 하나 뿐이다. pw 파라미터의 검사는 prob, _, ., (), sleep, benchmark가 필터링 되며, addslashes 함수에 들어가기 때문에 ’, “, \, Null 바이트가 \', \", \\, \Null 바이트로 치환이 된다. Sleep 함수와 Benchmark 함수는 Time-Based Blind Injection에 사용되는 함수이다. Blind Injection은 응답의 참과 거짓을 구분할 수 없을 때 사용되는 기법인데, Time-Based는 지체되는 시간에 따라 참과 거짓을 구별하는 것이다. 현재 문제에선 내가 입력한 쿼리에 대한 결과를 얻을 수 없기 때문에 Blind Injection을 시도해야하는데, Sleep 함수와 Benchmark 함수가 필터링 ..
[Lord of SQLInjection] Iron Golem Write UP공격 백터는 pw 파라미터 하나 뿐이다. pw 파라미터의 검사는 prob, _, ., (), sleep, benchmark가 필터링 되며, addslashes 함수에 들어가기 때문에 ’, “, \, Null 바이트가 \', \", \\, \Null 바이트로 치환이 된다. Sleep 함수와 Benchmark 함수는 Time-Based Blind Injection에 사용되는 함수이다. Blind Injection은 응답의 참과 거짓을 구분할 수 없을 때 사용되는 기법인데, Time-Based는 지체되는 시간에 따라 참과 거짓을 구별하는 것이다. 현재 문제에선 내가 입력한 쿼리에 대한 결과를 얻을 수 없기 때문에 Blind Injection을 시도해야하는데, Sleep 함수와 Benchmark 함수가 필터링 ..
2021.08.07 -
공격 백터는 pw 파라미터이며, pw 파라미터에 대한 검증은 prob, _, ., ()을 필터링하고 있다. 하지만 이 문제의 가장 큰 문제점은 select id from prob_dragon where id='guest'# and pw='{$_GET[pw]}'로 입력된 pw가 id 뒤로 넣어지게 되는데, id 뒤부터는 #로부터 주석처리가 된다는 것이다. 이 문제를 클리어하기 위해선 #를 무력화 시켜야하는 문제로 보인다. 위와 같이 URL 인코딩의 줄바꿈인 %0A 로 입력하여, 주석을 우회하려고 했지만 실패하였다. 혹시 내가 사용한 방법이 틀렸는지 확인하기 위해서 인터넷에 sqli %0a로 검색해보니, 내가 틀린 방법으로 하고 있었다. 원리는 밑과 같다. SELECT id FROM prob_dragon W..
[Lord of SQLInjection] Dragon Write UP공격 백터는 pw 파라미터이며, pw 파라미터에 대한 검증은 prob, _, ., ()을 필터링하고 있다. 하지만 이 문제의 가장 큰 문제점은 select id from prob_dragon where id='guest'# and pw='{$_GET[pw]}'로 입력된 pw가 id 뒤로 넣어지게 되는데, id 뒤부터는 #로부터 주석처리가 된다는 것이다. 이 문제를 클리어하기 위해선 #를 무력화 시켜야하는 문제로 보인다. 위와 같이 URL 인코딩의 줄바꿈인 %0A 로 입력하여, 주석을 우회하려고 했지만 실패하였다. 혹시 내가 사용한 방법이 틀렸는지 확인하기 위해서 인터넷에 sqli %0a로 검색해보니, 내가 틀린 방법으로 하고 있었다. 원리는 밑과 같다. SELECT id FROM prob_dragon W..
2021.08.07 -
이번 문제는 where절의 pw가 ('')로 감싸져 있다. 또한 id는 admin이 아니라고 박혀있다. solve를 얻기 위해선 쿼리문의 값이 있어야 solve를 얻을 수 있다. 문제를 풀기 앞서 pw에 대한 검사가 있었다. prob, _, ., (), #, -를 필터링 길이가 6 초과를 하면 안됨. 일단 #, --를 사용해서 and id != 'admin'를 주석 처리하는 것은 포기해야할 것 같다. 인터넷에 주석 방법을 찾아보니 #, --, /**/, ;%00 4가지 방법이 있었다. 이 중 #, --은 필터링 때문에 불가능하며, /**/은 *사이에 쿼리문이 들어가야 함으로 현 문제에서 사용이 불적합하다. 즉, ;%00을 이용하여 and id != 'admin'를 주석 처리해야한다. select id f..
[Lord of SQLInjection] Nightmare Write UP이번 문제는 where절의 pw가 ('')로 감싸져 있다. 또한 id는 admin이 아니라고 박혀있다. solve를 얻기 위해선 쿼리문의 값이 있어야 solve를 얻을 수 있다. 문제를 풀기 앞서 pw에 대한 검사가 있었다. prob, _, ., (), #, -를 필터링 길이가 6 초과를 하면 안됨. 일단 #, --를 사용해서 and id != 'admin'를 주석 처리하는 것은 포기해야할 것 같다. 인터넷에 주석 방법을 찾아보니 #, --, /**/, ;%00 4가지 방법이 있었다. 이 중 #, --은 필터링 때문에 불가능하며, /**/은 *사이에 쿼리문이 들어가야 함으로 현 문제에서 사용이 불적합하다. 즉, ;%00을 이용하여 and id != 'admin'를 주석 처리해야한다. select id f..
2021.08.07 -
이번 문제는 Succubus 문제에서 발전된 문제이다. addslashes 함수를 사용하여 ', ", \, %00(Null 바이트)를 \', \", \\, \%00로 치환한다. 또한 strrev 함수를 이용하여 '\, "\, \\, %00\로 자리를 변경한다. 나는 ", %00를 이용하여 Succubus 문제처럼 풀이하려고 한다. select id from prob_zombie_assassin where id='"\' and pw='||1=1#'로 입력을 한다면, where 절의 id는 "' and pw='로 인식하게 된다. 원하는 대로 이루어졌지만, 간과한게 있었다. pw도 strrev 함수을 이용한다는 것이다. 나는 pw도 strrev함수로 자리가 바뀐다는 것을 깜박하였고, 반대로 #1=1||로 넣어..
[Lord of SQLInjection] Zombie Assassin Write UP이번 문제는 Succubus 문제에서 발전된 문제이다. addslashes 함수를 사용하여 ', ", \, %00(Null 바이트)를 \', \", \\, \%00로 치환한다. 또한 strrev 함수를 이용하여 '\, "\, \\, %00\로 자리를 변경한다. 나는 ", %00를 이용하여 Succubus 문제처럼 풀이하려고 한다. select id from prob_zombie_assassin where id='"\' and pw='||1=1#'로 입력을 한다면, where 절의 id는 "' and pw='로 인식하게 된다. 원하는 대로 이루어졌지만, 간과한게 있었다. pw도 strrev 함수을 이용한다는 것이다. 나는 pw도 strrev함수로 자리가 바뀐다는 것을 깜박하였고, 반대로 #1=1||로 넣어..
2021.08.07 -
들어가면 로그인 페이지가 반겨주고 Login버튼과 View Source버튼이 보인다. 바로 소스부터 봐보자. 바로 query문이 보이고 id와 pw를 검증하는것 같다. db는 mysql을 사용한다는 정보를 가지고 인젝션을 진행해 보자. id와 pw에 admin을 넣고 로그인을 진행할때 burp를 통해서 인젝션을 진행해 보았다. 이렇게 id 파라미터 뒤에 'or '1'='1을 넣어주었다. 이렇게 되면 위 query문이 id 값을 검증 우회할 수 있기 때문에 flag 값을 얻을 수 있다. 즉, 쿼리문에 select * from jhyeonuser where binary id='admin'or '1'='1' 이렇게 입력이 들어가게 되면서 pw가 틀리더라도 로그인이 된다는 의미이다. 그렇게 값을 보내면 flag..
[HackCTF] Web - Login 풀이들어가면 로그인 페이지가 반겨주고 Login버튼과 View Source버튼이 보인다. 바로 소스부터 봐보자. 바로 query문이 보이고 id와 pw를 검증하는것 같다. db는 mysql을 사용한다는 정보를 가지고 인젝션을 진행해 보자. id와 pw에 admin을 넣고 로그인을 진행할때 burp를 통해서 인젝션을 진행해 보았다. 이렇게 id 파라미터 뒤에 'or '1'='1을 넣어주었다. 이렇게 되면 위 query문이 id 값을 검증 우회할 수 있기 때문에 flag 값을 얻을 수 있다. 즉, 쿼리문에 select * from jhyeonuser where binary id='admin'or '1'='1' 이렇게 입력이 들어가게 되면서 pw가 틀리더라도 로그인이 된다는 의미이다. 그렇게 값을 보내면 flag..
2021.08.06 -
Javascript-Obfuscation2 문제풀이 해보도록 하겠습니다. 1. 문제 문제에 접근하면 아무것도 안 보이게 된다... 2. 문제풀이 어떠한 문제인지 확인하기 위해 패킷을 잡아보았다. 패킷을 잡아보니 pass의 힌트가 보이며, 이 힌트를 통해 정답을 입력해보아야겠다. 이후 입력된 값이 인코딩 되어있다고 생각하여 Decoder를 이용하여 디코딩해보았다. String.fromcharCode를 통해 UTF-16 코드로부터 문자열을 반환시킨다고 한다. alert를 이용해 이 문자가 무엇인지 출력해 보았다. 뱉어준 결과가 Pass 값이 될 것 같아 인증하는 곳에 입력해 보았다. 결과는... 파랑새가 나를 반겨주었다~ 문제풀이 끄읏~
[Root-Me]/Web-Client/Javascript - Obfuscation 2Javascript-Obfuscation2 문제풀이 해보도록 하겠습니다. 1. 문제 문제에 접근하면 아무것도 안 보이게 된다... 2. 문제풀이 어떠한 문제인지 확인하기 위해 패킷을 잡아보았다. 패킷을 잡아보니 pass의 힌트가 보이며, 이 힌트를 통해 정답을 입력해보아야겠다. 이후 입력된 값이 인코딩 되어있다고 생각하여 Decoder를 이용하여 디코딩해보았다. String.fromcharCode를 통해 UTF-16 코드로부터 문자열을 반환시킨다고 한다. alert를 이용해 이 문자가 무엇인지 출력해 보았다. 뱉어준 결과가 Pass 값이 될 것 같아 인증하는 곳에 입력해 보았다. 결과는... 파랑새가 나를 반겨주었다~ 문제풀이 끄읏~
2021.08.02