学到了一个新的技巧。
和lpk.dll类似,有些文件会自动加载目录下面的dll。
并且这些文件是经过授权且加入白名单的程序。
例如WINWORD.exe。
其他的待收集,只是记录一下
DLL劫持的白利用加载
2019-12-30 | 随便写的什么奇怪的东西,技术文章 |
低权AWD下的蓝队简易技巧
2019-11-13 | 随便写的什么奇怪的东西,技术文章 |
详情看上一篇方法,突然想到一个神奇的用法。
/*
how to use:
gcc -fpic -c -ldl hook.c
gcc -shared -lc -o hook.so hook.o
export LD_PRELOAD=./hook.so
export LD_PRELOAD=NULL; //卸载库
*/
#include<stdio.h>
char* flag_path = "/flag";
extern int __open(char *,int,int);
int open(char * path,int flags,int mode)
{
//printf("open :%s\n",path);
if (strcmp(path,flag_path) == 0){
// 在这里你甚至能加入什么东西,比如
// sleep(2000000000);
// 或者是
// return __open(fake_flag_path,flags,mode);
return -1;
}
return __open(path,flags,mode);
}
如果在双方都是低权并且是批量的话,一般没有点意识的都不会注意到环境变量的事情。
只要在本用户的和www用户的~/.bashrc设置LD_PRELOAD。或者在php环境中的config.php,加入waf的同时同时加入一句
<?php putenv("LD_PRELOAD=xxxxx"); ?>
就行啦。
如果实在没有config.php这种所有东西都会访问的文件的话,可以手工构造一个.user.ini
然后写入
auto_prepend_file=包含上面哪个代码或者你的waf的地址
这样所有的文件都会自动包含啦。
顺带附上一个文件夹监控的脚本,用pyinotify实现的。
脚本地址:file_manage.rar
当然一般情况下,基本是没有pyinotify环境的,所以这时候两个办法,下载源码安装或者编译两份出来。
源码地址:PyInstaller-3.5.tar.zip
或者是自己编译:
x86版本:file_manage.x86.zip
x64版本:file_manage.x64.zip
随手写了段jazz
2019-11-07 | 随便写的什么奇怪的东西 |
10s真男人,然后我憋不出来了。
嗯,那个结尾成功把我自己封印。
不知道算不算jazz
伪jazz.mp3
第一首自己写比较完整的曲子
2019-09-03 | 随便写的什么奇怪的东西 |
音乐地址在这里:dance.mp3
怎么说呢,虽然说旋律能自己随便编,甚至口哨天天都哼来哼去,但是完整的起承转合或者带有明显节奏型和鼓点的音乐却没怎么尝试过,原因不亚于中途自己听不下去了hhhh
今天上完管乐课回来,闲着无聊,正好就花了一点时间,试着写了下。
按照节奏来算,应该算舞曲+中国风吧?因为用的是Dance Loop加名族调式和FGEmAm万用和弦。
目前缺点有两个,过于单调和过场太过僵硬。整体透露出了一个字,憨!
旋律过于单调,很多时候脑袋里想着的旋律但是就是突然记不起来了,要整德时候就记不起来,或者想不出来,再或者就是自己技术太差,配不上对应德节奏型,达不到理想的效果,然后就果断德删工程了hhhhh
同时开头和结束是中间写完之后,哎呀,才忘了没有开头和结尾,就自己直接用一个自己乱写的solo当转场和结尾,憨批的不行hhh
然后结尾因为不知道啥问题,没录好,不过差不多这样吧_(:з)∠)_
本来是打算加个转调的,但是舍友都要睡觉了。今天就先瞎JB写到这里吧。
以及鼓点实在是写不来,整段鼓点一成不变,实在听不来。
不过第一次整出一个勉强能听的“完整的曲子”,还是很开心的
从逆向到反日
2019-08-29 | 随便写的什么奇怪的东西,技术文章 |
起因
在隔壁院的新生群里玩耍,正好听说有个专用程序,同时还有一天就开学了(其实是因为要补考,我实在复习不进去那什么中国音乐史,外国音乐史
很好,程序到手,分析一波
走起
预计在MSGBOX那里有网络通信,随手输入几个数字,让我们看看到底是咋样通信的。
然后开启wireshark分析一波流量
WTF??我看到了什么?这熟悉的语法。然而在流量中没有看到详细的连接请求,也就是账户密码等信息,所以先拿Nmap扫一波
确定是sqlserver,好,IDA PAO,启动!不对,在此之前,PEiD康康是什么壳
发现是个ASP壳,emmm,直接ESP定律找OEP dump出来就行,甚至直接用脱壳机都可以。不管怎么样壳是脱了
Delphi程序欸。现在有点少见了呢,其实我还以为是个MFC程序呢(
然而发现启动失败了
⑨BIE发现事态有那么一丝不对劲.jpg
不管了,继续,能出现界面至少说明PE格式没有破坏。
拉到IDA看看逻辑
emmmmm??
几K个函数,分析不动。。看了半天晕了_(:з)∠)_。。不管了,先直接找字符串试试,输入对象IP
嘿找到了。
双击,X查找引用
发现作为参数压入了个奇怪的函数,这莫非就是连接函数?
wtf??
倒回去看了下,一个0-9A-Z的表,一个mov eax, unkonwn_address;push word ptr [eax +4]
操作,再配合之前的脱壳后无法启动,这尼玛八成。啊不,九成九是加了混淆啊喂魂断。(╯‵□′)╯︵┻━┻
没办法,想了一下,程序连接sqlserver有什么方式呢?特别是这种古老的delphi。
试着搜索关键词User id=
果不其然,收到了,继续X查看引用
我们重点分析右下角的call sub_4052AC
。跟进
发现堆栈不平衡,可以知道,这基本也是混淆的问题了。但是,我们猜测,这应该是一个字符串拼接的地方,最后拼接出来的,肯定是一个带有账户密码的内存条件。
虽然二进制程序内加密了,不过不管了,我们已经大致知道程序运行流程了。就和ESP定律一样,无论你程序怎么编码,最后都是要出现在内存中的。
我们直接找原版无壳的丢到OD中去分析。
因为知道会创建窗口,所以我们用API断点,设置一个CreateWindowsA的断点
走起,然后在断点处,用中文ASCII搜索功能搜索主线程字符串password
然后flow进去,在这个地方,右键,断点,内存访问
这样有啥程序调用我们这个,我们就都知道啦。
然后把之前的CreateWindows的断点清除,留下这个内存访问的断点,然后ctrl+F2重新开始程序。跟踪步入,GO。走起。
等下,走起之前,突然想起,这步入执行很慢的,走到那里要后年马月,根据IDA PRO的分析,我们知道,连接过程是在窗口启动之后才进行的,所以我们把断点设置到UpdateWindow,上,在那之后运行跟踪步入
成功找到,接下来,我们就F7单步执行,康康到底都写着啥,最后,在手都快按酸的情况下,终于找到了
好,现在账号密码都有了,然而,我突然发现,这密码这一块,有三个框框,对应HEX是1E 1F 1A,起初以为是SQL SERVER的自定义颜色,我把1F1A3B输入进去,连接。发现错误。然后感觉call名称MutibyteToWideChar
,以为是宽字节的字符串编码,这下让我为难了,这sql server怎么输入宽字符啊,用%号x之后,都不对,一气之下,直接复制黏贴进去。欸,成了
惯例,测试xps_cmdshell。发现连接失败,直接超时了。
不是报错?那么就有几个原因
- 没开xps_shell =》 不太可能,毕竟没报错
- 没有权限 =》不太可能 原因如上
- 杀软或者其他奇怪设置拦截 =》 八成是这个
那么怎么办呢?这时候可以使用
declare @shell int
exec sp_oacreate 'wscript.shell',@shell output
exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\log.txt'
然后再用
create table tmp_text (lines nvarchar(1000))
bulk insert tmp_text from N'C:\log.txt'
select * from tmp_text
drop table tmp_text
读取。首先我们先看看权限
emmmm,system可还行,直接新建一个用户,OK成功连上。
结束
总共前前后后下来,花了三个小时吧,之前不知道,分析过后才知道,自己动态调试技术实在太差了。
其实花的时间都浪费在了识别协议,解读程序流程(这段花了最多,我一直天真的以为我可以不靠调试器脑力解码2333),以及动态调试。
一趟下来,其实也挺好玩的。接下来的时间得多看看动态调试相关的书了emmm。
溜了溜了,得补考音乐史去了。哇的一声哭出来。
pwnable小合集
2019-08-21 | 随便写的什么奇怪的东西,技术文章 |
开新坑,随手做一做。
welcome
二话不说,掏出IDA
很明显,需要把*address地址改成0,则可以获取flag。
这时候,看伪代码其实不好看,得看汇编
看到这一行,rdx是可控的,也就是我们输入的size,在伪代码中可以看到。我们要做的只要把rbp设置为0.
rbp也就是v5,由malloc赋值,怎么设置为0?malloc返回为NULL(0)就行。
开头程序会print address的地址的值,那么长的地址输入进去,malloc应该会返回NULL吧。
试了下果不其然。
所以我们用计算机,构造开头address地址+1,malloc返回NULL,size值-1则是address地址。
成功拿到flag
sub
送分题,不多说,看题目。
看到这个第一反应原本是溢出,但是看到<=,emmmm,直接4918 -1,解决。
减去负数就是加desu。
add
看题。
很明显,addr可以数组越界溢出栈。直接覆盖ret的esp返回值就行。
内置了一个函数,要求就是覆盖rip到这里。
因为地址 是静态,所以直接看ida的地址,400822,然而这个是16进制,16转10就是4196386.
之后,我们查找rip地址,本来可以直接用ida pro远程调试的,但是我这边ida pro+wsl出各种问题没调试成功。
没办法只好gdb了。 设置printf断点,在第二个断点用x/30x $sp
打印esp信息
本来以为是红框处那里,但是试了一下,结果发现是下面那个白框处。不知道为什么,疑惑。要是有ida就好了。
最后试了下,试出来第三个参数是13,也就是越界的下标。
之后我们运行,在input:
后输入 0 4196386 13
(前面两个无所谓,只要相加之和等于4196386即可
运行后会回到input:
状态,这时候我们按下ctrl+D发送EOF,即可得到flag
未完待续,咕咕咕ing
复古流日站
2019-08-08 | 随便写的什么奇怪的东西,技术文章 |
内网漫游时,正好发现了一个奇怪的页面。同时又突发奇想心血来潮闲的蛋疼balabala的想试试远古的工具包实际效果,于是就开始了我们的测试啦,因为这个站非常没有技术含量and早就废弃不用了,所以我就拿出来氵一篇文章了,不然博客都长草了
目标是这个
第一步信息收集,怎么做呢?肯定是先御剑走起啊。
御剑扫的同时,先看看页面整么做的。
看了一下,发现是一个asp页面下面加上好几个html页面,然后用ajax请求。看到这瞬间知道没什么希望了
但是天无绝人之路,御剑发现目录下有个BOOK.MDB,直接走起下载。读取查看,
看样子确实是动态的
我们看看有没有什么密码
现在用户名密码有了,问题来了,找不到登陆的地点。
各种尝试过后,失败.jpg
换去扫端口,nmap走起。
发现除了开启88端口外,80端口还有一个站点。
同时还有开放1723,1433,1025,1026,3389等一些服务,
其中1723和1025,1026这几个应该是没啥办法的了,这分别是某服务也windows rpc服务。
我们转到80站点看看
感觉有戏!先看看站点。
试了下登陆,没有回显。再看看题目那里sql注入
看样子似乎可以注入,但是并不是个注入点的样子。
继续掏出御剑,走起
神奇的发现,目录是可读的。
尝试下载。失败
这时候我们发现了个Upfile
上传个文件试试
emmm果不其然失败了
但是我们看这个路径upfile.asp?jpgname=
立刻掏出我们的Fiddle,构造一个上传请求,asp马,上传.jpg
成功拿下。
发现服务器是windows 2003的,站点是IIS6.0
但是我们发现我们的服务很死。
windows甚至没有执行权限,cmd命令都无法执行,我们上传个cmd,执行试试。也不行。
然后想起了站点时IIS6.0,从工具包里找个pr.exe。
pr原理大概就是已NETWORK SERVICE权限运行的用户可以试着提权到SYSTEM权限。
抱着试一试的心态上传了这个exploit,执行
emmmm卧槽?真的成了???
然后就连上去了doge。。
曲式分析?编曲指南?
2019-06-18 | 随便写的什么奇怪的东西 |
开头
现在是音乐系的学生了!
设备也到了,
开个新贴,整理些这部分的心得。
mixo-Lydian
适合中世纪,异族风情
走向是I-VII-IV
Lydian
未知,但又明亮。适合让人探索的感觉
重点强调I IV和III V这几个音。和弦一般用I II都行,还可以插入个VII