- 博客(25)
- 收藏
- 关注
原创 采用汇编手写shellcode写入栈解题ciscn_s_9
因为执行pop ebp 把esp栈顶的值给ebp,esp加4h,执行ret,即pop eip,把修改后的返回地址 0x08048554给eip,esp加4h,此时esp距离s是28h(有点昏,参考其他文章),原先的20h(s的缓冲区已经不够,需要增加8h的大小)需要扩充,利用sub esp,0x28;2.接下来主要看栈的内部分配,已知s的输入点距离ebp为20h,加上ebp的4字节大小,共需要填充24h的shellcode(大小比这小,不够填充字节),再接上ret_addr,此时还未结束。
2024-08-13 19:15:24
534
原创 bof解题
梳理$payload1发送后一般接受函数addr:32位:XX_addr = u32(io.recvuntil(b'\xf7')[-4:])64位:XX_addr = u64(io.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))
2024-07-25 17:24:08
354
2
原创 PicoCTF_2018_rop_chain解题
上面的flag函数中也是只定义了一个参数a1为另一个值,在构造payload时就要注意分开,a1分别是两个函数的局部变量,要满足各自if的条件,win1中没有定义变量,就不用传递参数。3.保证win1,win2都大于0且a1=0xDEADBAAD的情况下打印出flag,win1函数直接赋值给win1的值是1,win2中传递了参数a1,在这个函数中传给0xBAAAAAAD,则保证了win2是1。fgets(arg1[存储读取数据的位置],arg2[读取的前多少位],arg3[被读取数据的位置])
2024-07-25 12:18:23
274
原创 r2t3解题及理解整数溢出
这样是分两次send,是错误的。v3是无符号8位整型,有strlen(),意思是buf的字符长度小于3或大于8则会exit(-1),即错误退出,为避免这一检查,利用strlen的性质,保证超出的长度(即减去2^8-1)在4~8之间就好。整数溢出,一般对应strlen(s)函数,s为char类型,所赋值给的变量为无符号整型则仅代表0~2的整型位数次方,输入长度若大于赋值给的变量的表示范围,则会返回超出长度的字符数,即整数溢出。
2024-07-17 13:01:47
444
原创 ciscn_2019_en_2解题
当遇到\0时以其作为结束符,返回其之前的字符数量,而不是计算后面所跟参数的全部长度。所以可以先添上'\x00'使得跳出加密过程,又因为之前执行了puts函数,利用该性质加上gets的栈溢出,书写第一个payload来泄露gets的libc版本
2024-07-15 14:39:10
403
1
原创 [第五空间2019 决赛]PWN51解题
主要格式化字符串漏洞利用,后面添加recvline及脚本编写说明仅为个人理解🌹🌹🌹(个人还是小白一枚)希望帮助理解,望大家多多指出错误及正确理解做法。
2024-03-11 22:56:43
1096
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人