- 博客(32)
- 收藏
- 关注
原创 xctf 4-ReeHY-main-100
卡了很久,最后发现他给的libc有点问题,还是用libcsearcher找,贼坑。参考:https://bbs.pediy.com/thread-218300.htm首先是unlink修改free的got表为puts,泄露函数地址,然后修改free为system。# -*- coding: utf-8 -*- from pwn import*from LibcSearcher imp...
2019-09-24 15:08:03
760
1
原创 scrapy翻页+云主机离线跑程序
一断开云主机本地的shell连接就会结束进程,离线泡程序用screen首先pip安装screen然后创建screen:screen -S screen名字在新创建的screen中运行程序,这时候关了也没关系。重新连接shell时查看有哪些screen:screen -ls连接到想连结的:screen -r 编号.名字...
2019-07-31 10:20:40
246
原创 jarvisoj Hello(用ida脚本)
源代码int sub_100000CE0(){ int result; // eax signed int v1; // [rsp+1Ch] [rbp-14h] int v2; // [rsp+24h] [rbp-Ch] v2 = ((unsigned __int64)((char *)start - (char *)sub_100000C90) >> 2) ^ ...
2019-07-20 19:28:14
363
原创 bugku pwn5
参考writeup首先发现第一次输入存在格式化字符串漏洞,泄露出栈上的__libc_start_main。这个是在start函数中入栈的,应该是每个程序都会进入main函数之前进行的操作。__libc_start_main是libc中的函数,可以泄露出加载libc的基地址。然后就是找服务器system地址和binsh地址,通过gadget赋值。# -*- coding: utf-8 -*-f...
2019-07-17 16:00:34
1645
3
原创 scrapy入门,爬图片
以freebuf首页图片为例。新建工程,命令行输入:scrapy startproject 工程名(本项目为scrapy startproject Test)然后 cd 工程名然后 scrapy genspider 爬虫文件名 目标网址 (本项目为scrapy genspider MySpider freebuf.com)得到工程模板。1.修改item.py文件items.py文件#...
2019-07-13 21:24:51
153
转载 android 原生dialog
/** * 两个按钮的 dialog */ private void showTwo() { builder = new AlertDialog.Builder(this).setIcon(R.mipmap.ic_launcher).setTitle("最普通dialog") .setMessage("我是最简单的dia...
2019-07-04 09:09:07
162
转载 (转)Android之根据Uri获得图片或视频文件路径(解决4.4以上版本得不到路径的情况)
@SuppressLint("NewApi")public class UriUtils { /** * Get a file path from a Uri. This will get the the path for Storage Access * Framework Documents, as well as the _data field for the Media...
2019-07-04 09:08:52
916
原创 retrofit2
Retrofit是基于OkHttp的网络请求框架,通过注解的方式配置请求。参考教程首先自己写个网站页面info.php,简单的php,返回json格式字符串:<?phpecho '{ "Employees": [ { "FirstName":"Bill" , "LastName":"Gates" }, { "FirstName":"George" , "LastName":"Bus...
2019-06-26 09:24:22
1009
3
转载 rxjava rxandroid
Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter<String> emitter) throws Exception { //emitter是发射的方法,有4种,o...
2019-06-24 10:44:03
116
原创 xposed编写hook模块
首先按照网上教程,编写最简单的load包名模块。首先添加依赖,不用下载jar包,直接在app的build.gradle的dependence中添加compileOnly 'de.robv.android.xposed:api:82'compileOnly 'de.robv.android.xposed:api:82:sources'然后同步一下,没有报错就可以了,之前一直下载jar包然后添...
2019-06-20 10:52:52
3671
原创 jarvis oj typo
m4x的–如何pwn掉一个arm binaryarm 的参数 1 ~ 4 分别保存到 r0 ~ r3 寄存器中, 剩下的参数从右向左依次入栈, 被调用者实现栈平衡, 返回值存放在 r0中by the way, arm 的 pc 指针相当于 eip/rip, b/bl 等指令实现了跳转...
2019-06-04 11:25:29
767
转载 基于python的tcp socket通信
原文http://www.netfairy.net/?post=1570x01 开始python之旅服务端要用socket通信,我们首先要导入socket这个模块import socket然后设置连接的一些信息,我们是我们是基于TCP的通信,所以sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)然后将sock与服务端的IP和...
2019-05-30 21:35:32
879
原创 viewpager和recycleview
一、viewpagerviewpager可用来写仿微信界面滑动切换fragment,需要添加v4依赖。首先创建两个fragment,这里继承的是v4中的frgment,xml布局文件就只有一个text。另一个fragment也一样。public class BlankFragment extends Fragment { public View onCreateView(Layout...
2019-04-24 17:19:25
1477
原创 metasploit入门
1。nmap扫描目标主机,发现开启的服务和版本,当有防火墙时可用-sV或-P02。msfconsole中search “服务名称”,找到对应的模块3。use “模块全名”4。info,查看模块详情5。show payloads,查看可用payloads6。set payload “payload名”7。options,显示参数,然后set必要的参数8。exploit,执行...
2019-04-07 23:27:25
396
原创 Android客户端和python服务端socket通信
Android端:public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layou...
2019-03-28 17:17:48
2809
2
原创 jarvis itemboard
栈溢出点在item-&gt;description,同时还有删除item时只free了块,没有处理item_array,导致存在野指针。参考wp第一种,uaf方法,由于堆的先进后出,当删除一个item后再申请item,块的内存顺序会和原来相反,因此构造name,此时item_array中的指针指向name,free时会将name当作item。payload如下:from pwn import...
2019-03-18 14:37:44
508
2
原创 jarvis guestbook2 / level6_x64
与level6思路相同,只是在x64运行。遇到几个问题:1.[DEBUG] Received 0x4e bytes: "*** Error in guestbook2: realloc(): invalid pointer: 0x0000000001dcb018 ***\n"调试了半天发现是当新块的大小与原来不一致时都会调用realloc,所以要填充的时候要仔细。2.原本想这样泄漏libc...
2019-03-12 14:10:54
876
原创 jarvis guess
知道了两个知识:一个数组下标溢出,C语言允许下标为负,若不检查则可能泄露邻接处的数据;第二个fork。一开始没找到溢出点,找了wp才知道思路,由于flag和given_flag和bin_by_hex在栈上相近,同时value1 = bin_by_hex[flag_hex[2 * i]]; value2 = bin_by_hex[flag_hex[2 * i + 1]];没检查下标不能小于0,通过...
2019-03-04 18:18:48
223
转载 老版本ubuntu 更新源
原文地址1、首先备份Ubuntu源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup2、打开更新源列表sudo vi /etc/apt/sources.list 3、选择更新源地址Ubuntu普通版本支持的时间都有限,过了支持的时间,更新源都会被停用,比如Ubuntu 9.10原来的源都失效了(包括官方源,类似ust...
2019-02-23 22:13:31
636
原创 jarvis oj smashes
checksec发现开启了nx和canary。ida打开发现输入name时存在栈溢出,缓冲区大小0x108,同时发现存在"PCTF{Here’s the flag on server}"字符串,不过第二次输入的时候会覆盖。当检测到修改了canary时会返回'*** stack smashing detected ***: /home/ctf/smashes terminated\n'。此处“/h...
2019-02-23 19:33:26
475
原创 jarvis oj level6
原来的附件有点问题,重新发过了.主要用了两个技术:1.溢出泄露libc地址,heap地址.2.unsafe_unlink,这个how2pwn上unsafe_unlink.c里写的很清楚.首先看泄露libc地址New("A"*0x80)#0New("B"*0x80)#1Delete(0)New("123")List()c=p.recvuntil('AAAA')leak_addr=u...
2019-01-10 14:24:03
1253
1
原创 how2heap学习笔记(1)
1.first_fit.c就是堆的先进后出,malloc取最近free的大小大于请求的chunk,不是fastbin,fastbin没有最低位显示前一块。2.fastbin_dup.c#include &amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;amp;lt;stdlib.h&amp;amp;amp;amp;am
2018-12-28 22:56:57
2281
1
原创 jarvis oj level5
level5要求不用system和execve,而是用mprotect和mmap,查了一下,mmap主要是将哪个文件映射到一段内存去同时设置那段内存的属性 可读可写或者是可执行,mprotect函数是将从addr开始的地址 ,长度位len的内存的访问权限。毫无头绪。查了网上大神的wp,才知道思路。首先leak地址,shellcode写入bss没什么好说的。要说下为什么要把bss和mprotec...
2018-12-11 15:11:10
1045
3
原创 jarvis oj level3_x64
level3_x64里没有找到system函数,但给了libc.so文件,应该是和level3一样的想法。先找到操作寄存器的地址,因为write需要3个参数,所以需要rdi,rsi,rdx。但我们搜索只找到了rdi和rsi。0x00000000004006b3 : pop rdi ; ret0x00000000004006b1 : pop rsi ; pop r15 ; ret根据网上w...
2018-12-07 13:15:40
849
原创 装linux系统和安装工具
虚拟机上做题时发现地址有些问题,在真机上没有,决定主机上装个linux。碰到的一些问题:1.用ultraiso照网上的教程做启动盘时选usb-udd+时制作成功但启动不了,换成raw可以了。2.装拼音3.pwntools,先装pip:sudo apt install python-pip,然后sudo pip install pwntools,很简单。还有peda...
2018-12-06 20:14:56
1074
原创 jarvis oj level2_x64
接下来做64位了,首先看下和32位有什么不一样。这篇文章的第3节说的很详细主要来说就是:1.内存地址的范围由32位变成了64位,但是可以使用的内存地址不能大于0x00007fffffffffff,否则会抛出异常。2.x64中的前六个参数依次保存在RDI,RSI,RDX,RCX,R8和 R9中,如果还有更多的参数的话才会保存在栈上。我们要修改寄存器的值就得通过找到例如pop rdi;ret这样...
2018-12-05 16:30:21
586
原创 Jarvis oj level3
下载下来发现有level3文件和libc.so文件,先checksec,和level2差不多,接着ida打开level3,没找到system函数和bin字符串,没什么办法了。接着去看so文件,libc是Linux下的ANSI C的函数库。找到了system函数和bin字符串。那么怎么利用呢?首先了解plt和got表。链接我是这么理解的:plt表中存放的是函数在got表中该项的地址,got表存放...
2018-12-04 19:10:11
1202
原创 jarvis oj level2
拖进ida,直接就看到了system函数,同时搜索一下,发现了“bin/sh”,没什么好说的,上脚本from pwn import *conn=remote("pwn2.jarvisoj.com","9878")conn.recvline()e=ELF("./level2")sys_addr=e.symbols['system']pad=0x88sh_addr=e.search("/...
2018-12-01 21:34:50
203
原创 jarvis oj level1
还是先checksecArch: i386-32-littleRELRO: Partial RELROStack: No canary foundNX: NX disabledPIE: No PIE (0x8048000)RWX: Has RWX segments发现数据部分可以执行,先看ida,同样是vulnerable处有栈溢...
2018-12-01 20:20:37
390
原创 jarvis oj level0
菜鸟入门,先从level0开始下手。首先checksec,发现开启了nx保护。Arch: amd64-64-littleRELRO: No RELROStack: No canary foundNX: NX enabledPIE: No PIE (0x400000)拖进64位ida,查看vulnerable_functionssize_t...
2018-12-01 19:50:00
956
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人