CTF--2015中国西安电子科技大学XDCTF网络安全大赛之pwn

write up

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



你可能感兴趣的:(技术文章,学习笔记,安全札记,反汇编,二进制,逆向工程)