Season 1
-
공격 백터는 id와 pw가 있으며, select id,pw from prob_green_dragon where id='{$_GET[id]}' and pw='{$_GET[pw]}'에 사용이 된다. 똑같은 쿼리문이 2개가 작동하는데 첫번째 쿼리문의 id 결과 값이 있어야만 두번째 쿼리문이 작동되는 시스템이다. id와 pw에 대한 검증은 prob, _, ., ', "이 필터링 되는 거 빼곤 없다. 그래서 일단 문자형 데이터를 삽입할 땐 hex값으로 넣어야 할 것으로 판단된다. 나는 id를 admin으로 만들어주기 위해 /**/를 사용하여 id=‘/*’ and pw=‘*/admin’이라는 쿼리문을 생각했지만, /**/은 ’, “ 안에서 사용 시 문자열로 인식되어 주석처리가 되지 않는다. 다른 방법으로 \를 사용..
[Lord of SQLInjection] Green Dragon Write UP공격 백터는 id와 pw가 있으며, select id,pw from prob_green_dragon where id='{$_GET[id]}' and pw='{$_GET[pw]}'에 사용이 된다. 똑같은 쿼리문이 2개가 작동하는데 첫번째 쿼리문의 id 결과 값이 있어야만 두번째 쿼리문이 작동되는 시스템이다. id와 pw에 대한 검증은 prob, _, ., ', "이 필터링 되는 거 빼곤 없다. 그래서 일단 문자형 데이터를 삽입할 땐 hex값으로 넣어야 할 것으로 판단된다. 나는 id를 admin으로 만들어주기 위해 /**/를 사용하여 id=‘/*’ and pw=‘*/admin’이라는 쿼리문을 생각했지만, /**/은 ’, “ 안에서 사용 시 문자열로 인식되어 주석처리가 되지 않는다. 다른 방법으로 \를 사용..
2021.08.14 -
들어가자마자 쿠키가 반겨준다.. 쿠키와 관련이 있는 문제 같으니 바로 확인해보자. 쿠키 값으로 'WlhsS2NGcERTVFpKYWtscFRFTktNR1ZZUW14SmFtOXBXak5XYkdNelVXbG1VVDA5' 확인 하였고 쿠키 값에 정보가 들어가 있을 수 있으니 디코딩을 시도. 3회 base64로 디코딩 해보니 id=2, guest라는 값이 들어가 있는 것을 확인할 수 있었다. 그럼 id=1, admin으로 해서 쿠키 값을 전송해 보면 flag 값을 얻을 수 있을거 같다. 변조 후 전송해보았지만 깨꿀맛 쿠키가 패스워드 틀림과 함께 나를 반겨준다... 찾아보니 이문제는 strcmp 취약점을 이용해서 푸는 문제이다. strcmp에서 어떤 문자열을 비교할때 배열을 넣게 되면 우회가 가능하다.(php 버전..
[HackCTF] Web - Cookie 풀이들어가자마자 쿠키가 반겨준다.. 쿠키와 관련이 있는 문제 같으니 바로 확인해보자. 쿠키 값으로 'WlhsS2NGcERTVFpKYWtscFRFTktNR1ZZUW14SmFtOXBXak5XYkdNelVXbG1VVDA5' 확인 하였고 쿠키 값에 정보가 들어가 있을 수 있으니 디코딩을 시도. 3회 base64로 디코딩 해보니 id=2, guest라는 값이 들어가 있는 것을 확인할 수 있었다. 그럼 id=1, admin으로 해서 쿠키 값을 전송해 보면 flag 값을 얻을 수 있을거 같다. 변조 후 전송해보았지만 깨꿀맛 쿠키가 패스워드 틀림과 함께 나를 반겨준다... 찾아보니 이문제는 strcmp 취약점을 이용해서 푸는 문제이다. strcmp에서 어떤 문자열을 비교할때 배열을 넣게 되면 우회가 가능하다.(php 버전..
2021.08.14 -
Web Client 난이도가 높아져 잠시 Server 쪽으로 넘어왔습니다. Server 난이도 또한 상당해서 풀다가 막힐 것 같네요... 일단 문제풀이 시작하겠습니다. 1. 문제 문제를 보니 패스워드를 입력하라는 구간이 나옵니다. 2. 문제풀이 가장먼저 패킷을 잡아봐야겠죠~ 응답 패킷을 보니 it's really too easy! 라며 패스워드가 나와있네요. 주어진 패스워드를 입력하여 로그인해보겠습니다. 이 패스워드를 검증하는 곳에 넣으라는 구문이 보이네요. 결과는... 패스워드를 검증하는 곳에 입력하니 파랑새가 나와 축하해주네요~ 지금까지 쉬운 문제여도 이런 적이 없었는데 다음 문제는 얼마나 어려울지 두렵습니다...
[Root-Me]/Web Server/HTML - Source codeWeb Client 난이도가 높아져 잠시 Server 쪽으로 넘어왔습니다. Server 난이도 또한 상당해서 풀다가 막힐 것 같네요... 일단 문제풀이 시작하겠습니다. 1. 문제 문제를 보니 패스워드를 입력하라는 구간이 나옵니다. 2. 문제풀이 가장먼저 패킷을 잡아봐야겠죠~ 응답 패킷을 보니 it's really too easy! 라며 패스워드가 나와있네요. 주어진 패스워드를 입력하여 로그인해보겠습니다. 이 패스워드를 검증하는 곳에 넣으라는 구문이 보이네요. 결과는... 패스워드를 검증하는 곳에 입력하니 파랑새가 나와 축하해주네요~ 지금까지 쉬운 문제여도 이런 적이 없었는데 다음 문제는 얼마나 어려울지 두렵습니다...
2021.08.10 -
전 문제인 Hell Fire 문제의 코드와 별다른 차이점이 없는 것 같다. 다만 차이점이라면 첫번째 쿼리문 옆에 주석으로 ‘same with hell_fire? really?’라는 문구가 있었다. 정말 Hell Fire와 같을 것 같냐는 문구를 보니, 뭔가 DBMS에서 설정을 한 것으로 보인다. 일단 Hell Fire에서 시도하였던 것들과 비교하여 차이점을 찾아보겠다. 다른 방법들도 비교를 해봤지만 별차이가 없는 것 같았다. import requests, string url = 'https://los.rubiya.kr/chall/evil_wizard_32e3d35835aa4e039348712fb75169ad.php' headers = {'Cookie': 'PHPSESSID=6pcue41grdd15c632..
[Lord of SQLInjection] Evil Wizard Write UP전 문제인 Hell Fire 문제의 코드와 별다른 차이점이 없는 것 같다. 다만 차이점이라면 첫번째 쿼리문 옆에 주석으로 ‘same with hell_fire? really?’라는 문구가 있었다. 정말 Hell Fire와 같을 것 같냐는 문구를 보니, 뭔가 DBMS에서 설정을 한 것으로 보인다. 일단 Hell Fire에서 시도하였던 것들과 비교하여 차이점을 찾아보겠다. 다른 방법들도 비교를 해봤지만 별차이가 없는 것 같았다. import requests, string url = 'https://los.rubiya.kr/chall/evil_wizard_32e3d35835aa4e039348712fb75169ad.php' headers = {'Cookie': 'PHPSESSID=6pcue41grdd15c632..
2021.08.10 -
새로운 문제 유형이 나왔다. 공격 백터는 order, email 입력 값에 대한 검증은 밑과 같다. order 필터링 : prob, _, ., proc, union email addslashes() : ', ", \, null 바이트 -> \', \", \\, \null 바이트 문제를 클리어하기 위해선 admin의 email 값을 알아내야한다. 첫번째 쿼리문은 select id,email,score from prob_hell_fire where 1 order by {$_GET[order]}로 order by를 이용하여 정렬을 시켜서 반환 값을 표로 출력한다. Order by 절의 기본 구조 SELECT * FROM table_name ORDER BY column_name (ASC, DESC) 데이터를 지..
[Lord of SQLInjection] Hell Fire Write UP새로운 문제 유형이 나왔다. 공격 백터는 order, email 입력 값에 대한 검증은 밑과 같다. order 필터링 : prob, _, ., proc, union email addslashes() : ', ", \, null 바이트 -> \', \", \\, \null 바이트 문제를 클리어하기 위해선 admin의 email 값을 알아내야한다. 첫번째 쿼리문은 select id,email,score from prob_hell_fire where 1 order by {$_GET[order]}로 order by를 이용하여 정렬을 시켜서 반환 값을 표로 출력한다. Order by 절의 기본 구조 SELECT * FROM table_name ORDER BY column_name (ASC, DESC) 데이터를 지..
2021.08.08 -
바로 View Source를 통해서 확인해보자. 소스보기를 통하니 "240610708"을 md5로 암호화한 값과 입력값을 sha1으로 암호화한 값이 일치하면 flag 값을 반환한다는 것을 알 수 있었다. "240610708"을 md5로 암호화 하면 "0e462097431906509019562988736854"로 암호화 된 값을 확인할 수 있었다. 그러면 어떻게 md5와 sha1의 암호화한 동일한 값을 찾을 수 있을까? 바로 PHP Magic Hash라는 것을 찾아보면 알 수 있다. php magic hash 라는 것에 대해 간단히 설명하면 이렇게 두가지 변수가 선언되어 있다고 하면 $a == $b라하면 동일하다고 판단된다. 왜냐하면 e를 지수로 판단한다 즉, $a가 0*e1234 = 0이라 판단되고, $..
[HackCTF] Web - 마법봉 풀이바로 View Source를 통해서 확인해보자. 소스보기를 통하니 "240610708"을 md5로 암호화한 값과 입력값을 sha1으로 암호화한 값이 일치하면 flag 값을 반환한다는 것을 알 수 있었다. "240610708"을 md5로 암호화 하면 "0e462097431906509019562988736854"로 암호화 된 값을 확인할 수 있었다. 그러면 어떻게 md5와 sha1의 암호화한 동일한 값을 찾을 수 있을까? 바로 PHP Magic Hash라는 것을 찾아보면 알 수 있다. php magic hash 라는 것에 대해 간단히 설명하면 이렇게 두가지 변수가 선언되어 있다고 하면 $a == $b라하면 동일하다고 판단된다. 왜냐하면 e를 지수로 판단한다 즉, $a가 0*e1234 = 0이라 판단되고, $..
2021.08.08