2013년 3월 23일 토요일

webhacking.kr - 39번문제

- webhacking.kr - 39번문제 -
[sql injection]

1. 초기화면은 입력창과 submit버튼 뿐이다.
소스보기를 선택하여 index.phps가 존재함을 알아낼수있다.




2. index.phps를 url에 치고 들어가보면, 이런 화면을 만날수있다.

str_replace함수 뒤에 어떻게 바뀌는지 알수가있다.
또한 substr(0,15)를 보아 15자리쿼리문을 작성해야함을 알수있다.
한가지 더 따진다면 쿼리문 부분에 '가 닫히지 않음을 알수있다 그러므로 '가 삽입값에 필요하다는것을 짐작할수있다.





3. 그러므로 최종 삽입값은 [admin              '] 이다. 총 15개. 

2013년 3월 22일 금요일

webhacking.kr - 18번문제

- webhacking.kr - 18번문제 -
[sql injection]

1. sql injection 문제이다. 하단의 index.phps링크를 클릭하여 소스를 확인한다.




2. index.phps소스 확인 결과 admin 은 no값이 2 일때 나오는것을 유추해볼수 있다.
 그렇다면 2 or 1 를 입력시 no=1 <= false 이고 false or 1 이므로 true 값이 되면서 guest가 나와야 한다는것을 미루어 짐작할수있다.




3. 1을 입력시 guest가 나온다.




4. 1 or 2 나 2 or 1을 넣었을때  no hack 이라고 뜬다.
    이유는 eregi에 띄어쓰기 검사가 있으므로 띄어쓰기를 하면 안된다.
   그러므로 %0a를 쓰도록 한다.

   2 or 1  =>  2%0aor%0a1  대입시 guest가 출력된다.



 5. guest=1 이고 admin=2이므로 1을 넣었을때 guest가 나오는건 당연한것이므로 2를 넣기위해 limit 을 사용하도록 하자.

최종 쿼리 = 2%0aor%0a1%0alimit%0a1,1  를 url 부분 no=뒷부분에 삽입한다.

이문제는 이미 풀었던 문제이므로 already solved 메세지가 뜨는데, 원래는 hi admin 과 password가 출력된다.





이상 webhacking.kr 4번문제 sql(url) injection 이였습니다.

2013년 3월 21일 목요일

Web hacking - 쿠키 변조

Web hacking - 쿠키 변조
- 누구나 할수있는 매우 간단한 쿠키 변조 -



1. p2p사이트 airfile.co.kr 접속후 로그인




2. 자바스크립트 콘솔창을 열고 document.cookie 를 쳐서 현재 페이지 쿠키값을 알아본다.




3. Base64로 암호화 되있는 쿠키값을  coderstoolbox.com에서 푼다.




4. 공격대상 아이디를 알아본다.




5. 아이디를 암호를 풀어놓은 쿠키값에 자신의 아이디 부분대신 삽입한다.




6. 다시 암호화 한후 현재 자신의 쿠키값 대신 새로 만든 쿠키를 삽입하고 적용한다.




7. 새로고침을 하면 아까 선택햇던 유저의 아이디로 접속되어 있는것이 보인다.
     [포인트가 없는 유저...]


이상  누구나 할수있는 매우 간단한 웹해킹 - 쿠키변조 이였습니다.

2013년 3월 20일 수요일

wrap 알고리즘


프로그램 명: wrap(open)

10 * 10 행렬이 주어지고 연속한 인접한 수의 5 개의 합의 최대값을 출력한다. 상,하,좌,우,대각선이 인접하면 인접하다고 하고, 이 행렬의 상하,좌우, 대각선은 붙어 있다.
아래는 입출력 예에서의 답이다.

입력

100 개의 수가 한 줄에 10 개씩 주어진다. 각 수는 -100 에서 100 사이 수이다.

출력

최대 값을 출력한다.

입출력 예

입력

1 7 0 8 1 0 0 0 6 9
7 1 1 7 5 1 7 8 0 4
3 7 1 2 0 5 1 9 4 8
6 7 5 5 9 0 3 8 9 7
2 1 2 1 4 5 4 0 5 7
4 8 6 4 1 9 9 8 3 5
1 3 1 1 9 2 3 6 9 5
5 1 6 4 9 4 4 4 2 2
4 7 4 9 6 3 1 9 4 3
3 4 1 6 5 2 9 2 1 7

출력

37
---------------------------------------------------------------------------

#include <stdio.h>

int main()
{
int i,j,max=0,l,hap=0,k;
int A[100][100];

for(i=0;i<=9;i++) //입력부분
{
for(j=0;j<=9;j++)
{
scanf("%d",&A[i][j]);
}
}

for(i=0;i<=9;i++) //가로부분
{
for(l=0;l<=5;l++)
{
for(j=l;j<=l+4;j++)
{
hap+=A[i][j];
}
if(max<hap)
{
max=hap;
}
hap=0;
}
}

for(j=0;j<=9;j++) //세로부분
{
for(l=0;l<=5;l++)
{
for(i=l;i<=l+4;i++)
{
hap+=A[i][j];

}
if(max<hap)
{
max=hap;
}
hap=0;
}
}

for(i=0;i<=9;i++) //대각선
{
for(j=0;j<=9;j++)
{
for(l=0;l<5;l++)
{
hap+=A[(i+l)%10][(j+l)%10];
}
if(hap>max)
{
max=hap;
}

hap=0;
}
}

for(j=0;j<=9;j++) //대각선
{
for(i=0;i<=9;i++)
{
for(l=0;l<5;l++)
{
hap+=A[(j+l)%10][(i+l)%10];
}
if(hap>max)
{
max=hap;
}
hap=0;
}
}
printf("%d",max);
return 0;
}