전체 글 (123) 썸네일형 리스트형 xss-game / Level4 : Context matters [write-up] create timer 버튼을 누르면 로딩 화면이 나오고 3초 뒤에 alert 창이 뜬다. 한번 힌트를 보자. startTimer 함수가 어떻게 호출되는지를 살펴보고, 브라우저가 html 디코딩을 할 때에는 값을 먼저 디코딩한다는 점을 힌트로 주고 있다. 또 한번 싱글 쿼터를 넣어서 에러가 어떻게 나는지 확인해보라고 하니 한번 해보자. 이렇게 계속 로딩이 되는 에러가 발생한다. 이제 프레임 소스 보기로 startTimer 함수를 확인해보자. 아까 입력한 ‘ 가' 로 setTimer 함수에게 전달되는 것을 볼 수 있다. 우리는 이 자리에 alert()를 넣어야한다. startTimer(‘1’); alert( ‘1 ‘);” /> 이렇게 입력해주면 될 듯 하다. 그러나 실패. 그래서 ; 를 인코딩해서 .. xss-game / Level3 : That sinking Feeling... [write-up] 설명을 보면 url 주소를 수정해서 alert를 띄우라는 소리 같은데 url 끝에 를 입력해도 되지 않는다. 힌트를 살펴보자. 이번에도 태그는 막혔다는 내용과, window.location을 사용하라는 듯한 힌트가 주어졌다. 이번엔 프레임 소스 보기를 통해서 어떻게 인자가 전달되고 있는지, html 태그 형태가 어떤지 확인해보자. 이미지1을 클릭하면 num에 1 이, 이미지2를 클릭하면 num에2가, 들어가서 동적으로 연결된다는 것을 알 수 있다. img 태그가 이미 사용되고 있기 때문에 여기서도 onerror 를 사용해서 풀어볼 수 있을 것 같다. url의 # 뒤에'aaaa.png' onerror=alert()> 를 붙여 onerror함수가 실행되도록 하면, 해결! xss-game / Level2 : Persistence is Key [write-up] level1 에서 풀었듯 alert 를 띄우기 위해 그냥 alert()를 입력해도 작동되지 않았다. 힌트를 보면 라는 태그는 필터링이 되고 있고, img 를 통해 풀 수 있으며 onerror를 통해 해결할 수 있다고 한다. 이 힌트들을 조합해서 img 태그에 error를 발생시킬만한 아무 url 이나 입력한 후, onerror 에 내가 원하는 명령을 넣으면 된다는 것 같다. 출처 - https://brillian-ye.tistory.com/7 따라서 를 입력하면, 해결! 이 문제를 통해 태그가 필터링 되었을 경우 우회할 수 있는 또 다른 태그와 onerror 함수를 새로 알게 되었다. xss-game / Level1 : Hello, world of XSS [write-up] 스크립트를 주입해서 alert 창을 띄우라는 문제. 입력. 성공! [Toddler's Bottle] 6번 random 언제나처럼 cat random.c를 해본다. key 를 입력받고 rand() 와 xor시킨 값을 0xdeadbeef 와 비교해서 같으면 플래그를 획득할 수 있다. rand()가 랜덤으로 난수를 생성하는데 어떻게 풀어야하는걸까 정말 2^32 번 반복해야하는걸까 ? rand() 그대로 사용하면 랜덤 값이 아닌 같은 값을 출력한다는 취약점이 있다. 따라서 실행시 마다 바뀌는 난수를 얻고 싶다면 srand(time(NULL)) 을 사용해야한다. *rand() : 예측할 수 없는 하나의 난수를 생성, 범위는0~RAND_MAX(0x7fff) ,따라서 난수의 범위는0~32767 *srand() : 호출할때 전달받은 인자를 기반으로 난수를 초기화 *time() : 인자로 NULL을 넘기면1970년1월1일(UTC 타임 .. [Toddler's Bottle] 9번 mistake 9번은 연산자 우선순위가 힌트라는 걸 알아두고 실행해보았다. ls 로 mistake.c 가 있는 것 확인 후 열어보면 가장 먼저 system(“/bin/cat flag\n”) 가 있는 곳에서 조건을 확인해보면, pw_buf와 pw_buf2 를 비교해서 값이 같으면 플래그를 획득할 수 있는 것 같다. 그러나 pw_buf2 의 값을 1과 xor 연산하기 때문에 pw_buf2 를 1과 xor 연산한 후의 값과 pw_buf 값을 비교한다. -> 1 xor (pw_buf2) 와 pw_buf 비교 바로 위를 보면 pw_buf2 는 scanf 를 통해 10바이트까지 입력받을 수 있는 것 같고, pw_buf는 if(!(len=read(fd,pw_buf,PW_LEN) > 0)) 에서 처리되는데, 앞선 풀이에서 정리했듯이.. [JAVA 백준] 10871. X보다 작은 수 정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오. 감을 잃은 것 같아서 단계별로 풀기에서 하나씩 뽑아서 풀어보고 있는데 재밌는 것 같다. 역시 간단하게 for 문과 if 문으로 해결할 수 있는 문제이다. import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int x = sc.nextInt(); int[] a = new int [n]; //입력될 n 크기 만큼 배열 크기 지정해서 선언 int i; for (i=0;i [JAVA 백준] 11022. A+B - 8 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 이 문제도 매우 쉬운 문제, import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int t = sc.nextInt(); int[] a = new int[t]; // a와 b가 한 줄 씩 t 번 입력되므로 배열 생성 int[] b = new int[t]; for (int i=0;i 이전 1 ··· 6 7 8 9 10 11 12 ··· 16 다음