1 签到

一道ret2libc,给了libc版本,脚本如下

img

2 shellcode

img

题目告诉了我这道题是shellcode(但如果题目不说的话我经常和libc搞混),发现read只能读取0x12,以往shellcode我都是用shellcodecraft生成,但是这个生成的我记得好像是0x44,总之行不通,在网上搜了很多短的shellcode也都比0x12大,所以这题成为了我第一次手搓shellcode的题,execve(“/bin/sh”)执行的条件是rdi指向/bin/sh然后rsi=0.rdx=0,然后调用execve这个函数实际上是调用系统调用号0x3b,再执行system,通过print知道shellcode的长度为8,所以binsh就在shellcode的后面8位,又因为rdi指向的是shellcode,所以rdi+8就是binsh,通过gdb发现在最后的函数把rsi和rdx都变成0了,那正好就不用管这两个寄存器了,手搓shellcode,脚本如下:imgimg

3 密码签到

Gpt梭的