DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP 이 지원 된다고 한다.
parse_url parse_url('http://a@b@c') => ( [scheme] => http [host] => c [user] => a@b ) parse_url('http://a@b@c@d@e@f@g') => ( [scheme] => http [host] => g [user] => a@b@c@d@e@f ) parse_url('http://a:10@b:20@c:30') => ( [scheme] => http [host] => c [port] => 30 [user] => a [pass] => 10@b:20 ) parse_url('http://a@b:80@c') => ( [scheme] => http [host] => c [user] => a@b [pass] => 80 ) parse_url('htt..
urllib.urlopen('example.com') 은 언뜻보기엔 example.com 으로 요청을 보낼거 처럼 보이지만 urllib.urlopen 은 default 로 지정된 프로토콜이 file:// 이라서 example.com 이라는 파일을 불러오게 된다.
문제를 해결하기 위해서는 admin의 password를 알아내야 한다. Members로 들어가게 되면 John 이 admin 인걸 확인할 수 있다. 그리고 특정 Username을 클릭하게 되면 profile을 보여주고 메시지를 보내는 기능이 존재하는데 기능은 작동하지 않는 거 같다. userid 값을 문자나 큰 수로 변경해주게 되면 XPath error라고 XPath의 구문을 보여주게 된다. 이제 XPath injection 이 가능한 부분을 찾았고 exploit 하면 된다. John의 password를 뽑기 위해 password 노드의 이름을 알아내야 한다. ?action=user&userid=2 and pass XPath error ?action=user&userid=2 and pw XPath err..
Variable functions 'phpinfo'() => phpinfo() "phpinfo"() => phpinfo() PHP Type Juggling *( [a-zA-Z0-9_]만 적용 ) system('ls') => system(ls) // Notice: Use of undefined constant ls - assumed 'ls' PHP Variables Trick ##################################### $a = 'b'; $b = 'NGA'; $c = '_GET'; echo $$a; // printed NGA echo $$c['v']; // print $_GET['v'] echo $$c{'v'}; // print $_GET['v'] ###################..
PHP 에서 에러를 반환할 때 사용. new finfo([ int $options = FILEINFO_NONE [, string $magic_file = NULL ]]) finfo_open(new finfo([ int $options = FILEINFO_NONE [, string $magic_file = NULL ]])) example) new finfo(FILEINFO_MIME,"/usr/share/misc/magic") finfo_open(FILEINFO_MIME,"/usr/share/misc/magic") Read file) ini_set('display_errors', 'on'); new finfo(1,'.'); // or finfo_open(1,'.'); finfo __construct 에서 m..
rubiya 님의 글을 보고 RPO 에 대해 공부를 해보았다. 아주 흥미로운 주제였고 취약점을 찾더라도 exploit 하긴 힘들 거 같다.
PW에 or, and, substr(, = 등이 필터링이 되어있다. 그리고 쿼리의 결과값이 admin이여야 하고 admin의 PW도 일치 해야 한다. 먼저 PW쪽 파라미터를 통해서 쿼리 결과값의 ID값을 admin으로 만들어 출력하고 그 후에 Blind SQL Injection을 통해서 PW 까지 같이 뽑아오면 된다. ID값을 admin으로 만들어 보자. pw='||id like 'admin'# pw='||id in ('admin')# = like in 이 필터링 되었을 때 >,'21232f297a57a5a743894a0e4a801fc2'&&md5(id)= 1: query="pw=%27||id+like+'admin'%26%26ascii(mid(pw,{},..
이번 문제는 PW만 입력이 가능하고 쿼리의 결과값을 출력해주지 않는다. 그리고 쿼리 결과값이 admin이면 문제가 해결된다. 딱히 필터가 없기에 기본적인 쿼리를 통해 문제가 해결된다. 풀이 pw='||id='admin'#pw=' union select 'admin'#..
이 문제는 쿼리의 결과가 "admin" 이여야 문제가 해결된다. SQL 쿼리를 봤을 때 id 값만 받음으로 ' id 값에 admin 이라는 값을 전달하거나 '(quote) 를 이용해 해결하면 되겠다. ' 라는 생각이 들게 될 것이다. 하지만 '(quote) 가 필터링이 되어 있고 GET 으로 받는 id 파라미터에 문자열을 소문자로 교체 그리고 "admin" 이라는 값이 존재하게 된다면 "admin" 이라는 문자열을 NULL 값으로 바꿔버리게 된다. 우리는 가장 마지막 필터인 "admin" 을 NULL 로 대체시키는 쪽을 봐야한다. 간단하게 예를 들자면 우리가 id 값에 "headminllo" 라는 값을 넣게 되면 필터링 된 후에 "hello" 라는 쿼리로 변해서 가게 될 것이다.이것을 이용해서 "admi..