本文主要是介绍CTF--2015中国西安电子科技大学XDCTF网络安全大赛之pwn,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
0x01 基本信息
本人初学,可能本题解答对大神来说,有些繁琐。(大神可以忽略飘过)。
分享在此,方便自己,也方便他人。文件: xd_jwxt
大小: 8276 字节
修改时间: 2016年7月13日, 16:22:24
MD5: 07BE390A9328A365549A27D400462B59
SHA1: C0175B97E12670373E793F5633C51637B9C809E0
CRC32: 37CFC2B4
LINUX x86 运行显示如下
0x02 具体分析
测试随意输入数字2。
接收后直接退出。得先登录,于是ida载入分析
再查看字符串
看到主菜单,寻找登录成功条件。
31337登录成功。进入函数注意关键位置
Sub_804883D函数
编码转换
Sub_80488DD函数
范围判断,必须是可见字符47到122的范围ASCII码。
关键位置
对用户的输入进行了encode,要保证encode之后的数据必须为可见字符。
而这些被encode之后的数据将会被放在可执行段,最后跳转到该段执行。
技术难点就是如何产生一个全为可见字符的shellcode。
谷歌了一下,发现一个可以将机器码全部转换为可见字符的工具。
ALPHA3 (https://code.google.com/archive/p/alpha3/downloads)
0x03 实现步骤
1先去shell-storm找一个短小的shellcode。(必须保证输入在128个字符之内,函数有限制)。
这个是我找的:
execve /bin/sh - x86/linux
"\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\xcd\x80"
记得把这个保存成你要的文件,是二进制流方式(⊙o⊙)哦,别保存错了。
2将该shellcode保存成为二进制文件。
3然后在windows下使用命令
python ALPHA3.py x86 ascii uppercase EAX --input="execve-shell.txt" >visibleShellcode2
4将生成的shellcode,放进字符串。
大功告成小鸡吃米图
0x04 参考
Shellcode website:
http://shell-storm.org/
https://code.google.com/archive/p/alpha3/downloads
这篇关于CTF--2015中国西安电子科技大学XDCTF网络安全大赛之pwn的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!