奇怪的pwn入门(第n+1天)

时间:2020-07-07 10:18:14   收藏:0   阅读:57

奇怪的pwn入门(第n+1天)

先从比较基础的 pwnable 开始做起吧

C语言函数

1.fd

1.根据题目信息ssh fd@pwnable.kr -p2222 (pw:guest)

大意是ssh通过2222端口连接远程服务器pwnable.kr,fd为用户名,guest为密码

然后ls -l查看都有啥
技术分享图片

2.vim打开fd.c康一下

技术分享图片

先判断参数是否小于2,若小于2就输出"传给argv[1]一个数字"然后结束。这里的参数应该是包括我们运行的文件名,所以我们只用额外传入一串数字即可继续运行。

之后是把输入的数(argv[1])与0x1234相减作为文件描述符,再将文件描述符对应的源读入32字节到buf中。将buf与LETMEWIN字符串相比较,若相同则输出flag中的内容。

这里fd:0(代表标准输入),1(代表标准输出),2(代表标准错误)。再打开一个新的文件的话,它的文件描述符就是3。应该没有打开文件这种操作,所以我们使得fd为0应该就可以进行将“LETMEWIN”读入buf的操作。

这里运行fd并传入0x1234的十进制4660,并输入LETMEWIN,得到flag(我第一遍做的时候并不知道那就是flag55555555)
技术分享图片

事实上是以后要用python写exp才行

from pwn import *
pwn_ssh=ssh(host=‘pwnable.kr‘,user=‘fd‘,password=‘guest‘,port=2222)
print (pwn_ssh.connected())
sh=pwn_ssh.process(argv=[‘fd‘,‘4660‘],executable=‘./fd‘)##打开一个进程,传入参数,其中argv[ ]数组的第一个参数是程序名,第二个参数是输入程序的参数,executable是指要运行的可执行文件;
sh.sendline("LETMEWIN")##传入字符串
print (sh.recvall())##接收服务器传回的消息

参考资源:

write函数的详解与read函数的详解

pwn学习笔记汇总

原文:https://www.cnblogs.com/Ziggy29/p/13258638.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!