iT邦幫忙

0

資安學習路上-picoCTF 解題(Reverse)2

4.speeds and feeds


Google後發現CNC 的language是"G-Code"

再Google "G-code interpreter online",發現這個網站不錯用
https://ncviewer.com/
會進資料後發現flag

picoCTF{num3r1cal_c0ntr0l_68a8fe29}

5.Shop


先測試一下基本功能,可以做買賣,但想買flag會說錢不夠

再測試個幾次,發現買負個商品,前會變多,於是可以買flag

轉換後看到flag

6.ARMssembly 1

先看func

func:
	sub	sp, sp, #32 	#sp=sp+32
	str	w0, [sp, 12]	#*(sp+12)=w0=user input
	mov	w0, 58			#w0=58
	str	w0, [sp, 16]	#*(sp+16)=58
	mov	w0, 2			#w0=2
	str	w0, [sp, 20]	#*(sp+20)=2
	mov	w0, 3			#w0=3
	str	w0, [sp, 24]	#*(sp+24)=3
	ldr	w0, [sp, 20]	#w0=*(sp+20)=2
	ldr	w1, [sp, 16]	#w1=*(sp+16)=58
	lsl	w0, w1, w0		#w0=w1<<w0,w0=58*2**2
	str	w0, [sp, 28]	#*(sp+28)=w0=58*(2**2)
	ldr	w1, [sp, 28]	#w1=*(sp+28)=58*(2**2)
	ldr	w0, [sp, 24]	#w0=*(sp+24)=3
	sdiv	w0, w1, w0  #w0=w1/w0=58*(2**2)/3
	str	w0, [sp, 28]	#*(sp+28)=w0=58*(2**2)/3=77
	ldr	w1, [sp, 28]	#w1=*(sp+28)=58*(2**2)/3
	ldr	w0, [sp, 12]	#w0=*(sp+12)=w0(user)
	sub	w0, w1, w0		#w0=w1-w0=58*(2**2)/3-w0(user)
	str	w0, [sp, 28]	#*(sp+28)=w0=58*(2**2)/3-w0(user)
	ldr	w0, [sp, 28]	#w0=*(sp+28)=58*(2**2)/3-w0(user)
	add	sp, sp, 32		#sp=sp+32
	ret					#return		
	.size	func, .-func

可以整理成
stack + 12 = user input
stack + 16 = 58
stack + 20 = 2
stack + 24 = 3
stack + 28 = 77

在看主程式,請看註解

.LC0:
	.string	"You win!"
	.align	3
.LC1:
	.string	"You Lose :("
	.text
	.align	2
	.global	main
	.type	main, %function
main:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0		#x29=sp+0
	str	w0, [x29, 28]	#*(x29+28)=w0
	str	x1, [x29, 16]	#*(x29+16)=w1
	ldr	x0, [x29, 16]	#x0=*(x29+16)=w1
	add	x0, x0, 8		#x0=x0+8
	ldr	x0, [x0]		#x0=*(x0)
	bl	atoi
	str	w0, [x29, 44]	#*(x29+44)=w0
	ldr	w0, [x29, 44]	#w0=*(x29+44)
	bl	func
	cmp	w0, 0			
	bne	.L4				#w0 != 0跳到.L4就會跳到.LC1=>lose					
	adrp	x0, .LC0	#希望跳到.LC0(win)=>w0 = 0
	add	x0, x0, :lo12:.LC0
	bl	puts
	b	.L6
.L4:
	adrp	x0, .LC1
	add	x0, x0, :lo12:.LC1
	bl	puts

重點是w0 = 0而看回func最後58*(22)/3-w0(user)希望為0,那w0須為58*(22)/3=77轉成16進位==>(4d),並照題目說的格式補0==>picoCTF{0000004d}


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言