목록전체 글 (69)
생선이의 잡다한 블로그
이번 문제에서는 공백 한 칸(스패이스바 한 번이 금지되어 있습니다 그러면 이 문제를 풀기 위해 공백 없이 풀거나 스페이스바가 아닌 다른 공백을 넣어서 풀어주면 됩니다 우선 다른 공백을 이용하는 방법입니다 저는 탭을 공백으로 이용하려고 합니다 탭은 아스키코드로 09번 이므로 아래와 같이 적어줍니다 ?pw='%09or%09id='admin 다음은 공백 없이 푸는 방법입니다 or를 ||으로 적어주면 공백 없이 가능해집니다 ?pw='||id='admin
admin의 pw를 알아내야 합니다 substr(값, 시작할 위치, 범위) 이 substr을 이용하면 substr(pw, 1, 1) 이렇게 하면 pw에서 1번째 자리부터 1개 substr(pw, 2, 1) 이렇게 하면 pw에서 2번째 자리부터 1개 이렇게 한 자리씩 맞는지 확인을 해줄겁니다 그리고 여기에 ascii(값)을 이용해 줄겁니다 ascii(subsrt(pw,1,1)) = 10 위와 같이 적어주면 pw의 첫 번째 값의 아스키코드가 10인지 비교하게 됩니다 이제 아래와 같이 구문을 적어서 비밀번호를 잘 맞춰봅니다 id에 admin을 적어준 이유는 admin의 pw 값을 비교해야 하기 때문입니다 ?pw=' or id='admin' and ascii(substr(pw,1,1)) = 47 %23 ?pw=..
이 문제에는 앞의 id 가 guest로 고정이 되어있고 no 만 입력을 받고 있네요 그럼 or 을 적절히 활용하여 앞 부분을 거짓으로 만들고 뒷 부분을 id에 admin을 넣어 참이 되도록 하면 될 것 같습니다 그래서 아래와 같이 적어줬는데 문자열이 막혀있군요 ?no=123123 or id='admin' 여기서 no에는 guest의 no 값과 같아지지 않게 하기위해 아무런 값이나 넣었습니다 이럴때 문자열을 16진수로 나타내주면 이 16진수 값을 문자열로 읽어 간다고 합니다 아스키코드로 a 0x61 d 0x64 m 0x6D i 0x69 n 0x6E 이므로 모두 조합하면 admin은 16진수로 0x61646D696E 따라서 ?no=123123 or id=0x61646D696E 위와 같이 적어주면 됩니다!
위의 식을 참으로 만들어야 합니다 우선 기본적인 'or 1=1 을 먼저 대입해 봅니다 무언가가 되긴 됐는데 admin이 아니라고 합니다 그래서 아래와 같이 id에 admin을 넣고 뒤를 주석처리 하니 되네요! ?id=admin' %23
위의 식을 참으로 만들어주어야 합니다 그러기위해 id에 무언가를 입력해서 참으로 만들어야하는데 뒤의 pw 부분은 주석처러해서 없애주어야 합니다 주석은 # 또는 -- 으로 가능합니다 여기서 #은 %23으로 해주어야 합니다 이제 아래와 같이 적어주면 성공합니다! 와아아 ?id=' or 1=1 %23
안녕하세요 생선스프입니다! 이번 강좌에서는 포인터 변수를 알아보려고 합니다. 포인터 변수에는 일반 변수와는 다르게 메모리의 주소값이 들어가게 됩니다. 그리고 포인터 변수는 자료형 * 변수명 으로 선언합니다.자료형과 변수명 사이에 있는 *의 위치는 중간에만 있다면 어디에 있어도 문제가 없습니다. 이제 아래 코드를 먼저 보겠습니다. 123456789101112#include void main(){ int num1 = 10; int * numPtr; numPtr = &num1; printf("%p %p", &num1, numPtr);} cs 위의 코드는 num1의 주소값을 numPtr이라는 포인터 변수에 넣고 출력하는 코드입니다 즉, 같은 값이 출력되는 것이죠 그럼 이제 이 포인터 변수에 주소를 담았으면 이 ..
안녕하세요 생선스프입니다! 이번 강좌에서는 자료형 변환을 알아보려고 합니다 자료형 변환은 변수의 자료형이 다른 자료형으로 바뀌는 것을 말합니다 #include void main(){ int num1 = 3; float num2 = num1; printf("%f", num2);}cs 위의 코드를 보면 int형의 값을 float에 넣어주고 있습니다. 이런 경우에는 자료형의 크기가 작은 것을 큰 곳으로 넣어주는 것이라 아무런 문제가 없습니다. 하지만 반대로 아래와 같이 자료형의 크기가 큰 것을 작은 곳에다가 넣을때는 경고문과 함께 값이 손실됩니다 #include void main(){ float num1 = 3.01; int num2 = num1; printf("%d", num2);}cs warning C42..
안녕하세요 생선스프입니다! 이번 강좌에서는 구조체를 알아보도록 하겠습니다 제가 인적사항을 기록하고 싶다고 합니다이 인적사항에는 나이, 이름, 키가 있다고 합니다이럴때 구조체를 사용하면 쉽게 관리할 수 있게됩니다사람이라는 큰 범위안에 나이, 이름, 키가 있기 때문이죠 그럼 이제 사용해보도록 하죠 1234struct 자료형의이름{ 변수들};cs 사용은 이렇게 하면 됩니다 아래의 코드를 보죠 12345678910111213#include struct person{ char name[10]; int age; int height;}; void main(){ struct person p1;}cs 우선 이런식으로 선언을 해줄 수 있습니다 이제 안에 값을 넣어줘야겠죠 값을 넣어주는 방법은 두 가지가 있습니다 아래와 같..