A-A+

看我如何揪出【t00ls】论坛中匿名回帖的人!

2016年01月26日 11:57 学习笔记, 漏洞安全 暂无评论 阅读 694 views 次

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】

【主题前奏】 不喜欢前奏的请直接拉下去看正文!【图片没挂,需要你购买帖子后能看到图片】
有时候挺郁闷的,等级太低,明明有个人发布了【Freebuf模拟登陆】,本来想看看,还没等打开,管理员分分钟就阅读权限20...让我们情何以堪!!!!
很多论坛都有匿名发帖回帖,其实我个人觉得匿名发帖这个功能如果想指着它逃避WJ的追查,好像就是有点掩耳盗铃的说,我是这么觉得,特别是在一些脱裤论坛,有些人匿名发帖说“某某网站最新鲜的裤子”,我觉得匿名发帖的人好搞笑,你既然有能力犯法脱别人网站的裤子,难道你连最基本的网站匿名是不是真的就没有你的任何信息都不知道么?!太可笑了。。。。 话转回来说,我认为匿名最主要的功能可能是面子、大牛,菜鸟们的自尊吧(或者喷人的时候匿名)。。。所谓面子,就是某些简单的问题,或者某些需要帮忙的问题,不想当坛子里的人知道是谁提问的有损颜面,所以匿名,这个倒是可以理解。但是用匿名来说些不好听的话,那我只能说,真的。作为男人,你挺搞笑啊,有本事说,没本事露脸,用东北话说,就是完犊子! 虽然我是新来的,但是我敢说,坛子里绝对有这样的人!!!而且不是一个两个!!! 因为坛子里有人匿名说不好听的话,研究又研究所以便有了以下正文。

【正文开始】
请大家看清标题!一定看清标题!!! 【可以指定帖子监控,也可以监控全站!】
首先,我浏览了所有网站的功能,捋顺出2个思路!

思路一:在首页的【今日发帖】处,因为论坛可以查看别人的ID的回帖,示例:https://www.t00ls.net/members-replies-5872.html ,做个程序历遍ID回帖内容与匿名的回帖内容做对比,如果对比上,就抓住匿名者了。但是后来经测试发现,此思路行不通!!!【思路一over】

思路二:论坛首页最下面有一个【在线用户】:https://www.t00ls.net/member.php?action=online 在这里可以查看前3页,用户此时此段的动作,他在干什么。这样就有了。当一个人回帖的时候,如果是普通回帖,则会显示他浏览此帖子,但是!但是!!如果他匿名回帖,必定需要切换到【高级回帖模式】,如果他切换到了高级回帖模式,这里会有显示的!如下图:

时时操作记录

时时操作记录


看到了吧,到这里我们的思路就出来了,我们发完贴之后,然后时时监控采集这里的数据,采集后的数据做对比,如果是【回复主题】,而且帖子的ID也与咱们发的帖子的ID一致!那么咱们就做个记录。就算是匿名回帖,它回帖也会显示回帖时间,如下图:
匿名回帖的时间

匿名回帖的时间


看到了吧,咱们上边采集的数据也有时间,只要两个时间相差无几,那么,匿名者,你现身吧!!!!!

重点来了:为了证明可行性。我写了一个PHP脚本。【此脚本关闭浏览器,照样会自动采集抓取数据】。
说一下PHP脚本思路:首先抓取formhash,然后利用formhash登陆论坛,然后获取cookie,然后通过cookie浏览【在线用户】,然后时时抓取【制定回复主题的ID→如果这里不指定帖子的ID那么就是抓取全站的回帖,回帖动作是否是高级回帖】,然后做记录。不知道咱们的兔丝坛子CC是怎么设置的,我脚本设置的是4秒一抓取一次,抓一次做一次抓取记录!如果有符合要求的,另做一次记录!反正PHP脚本是关闭浏览器它也是自动运行的,放着去呗 。。。
好了,下面是代码,代码我隐藏了,需要你回复此文章,并留下真实邮箱,然后刷新此页面会接受到查看码,就可以看喽。

首先上运行后的图片:
这是运行记录

php日志记录

php日志记录

下图是符合结果的记录

符合的记录结果

符合的记录结果

总共两个PHP文件。
忘说了补充:此PHP文件需要个插件,插件地址:https://github.com/jae-jae/QueryList
两个文件直接放到插件同目录即可。
第一个:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
ignore_user_abort();  //关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);   // 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=4;    // 每隔4秒运行一次
$ii = 1;
 
require 'vendor/autoload.php';
use QL\QueryList;
 
$a_content = file_get_contents('./cookiet_00ls.txt');
$str = explode("\n", $a_content);
 
if(strpos($str[5],"UTH_auth")> -1){
	echo "已经登陆无需再次登陆!<br/>";
	file_put_contents("./rizhi.txt", "已经登陆无需再次登陆! \r\n", FILE_APPEND);
}else{
$data = QueryList::Query('https://www.t00ls.net/logging.php?action=login',array('formhash' => array('form','html','','callfun1')),'#layer_login .postbox')->data;
$formhash1 = $data[0]['formhash'];
$login = QueryList::run('Login',['target' => 'https://www.t00ls.net/logging.php?action=login&loginsubmit=yes&floatlogin=yes&inajax=1','referrer'=>'https://www.t00ls.net/index.php','method' => 'post','params' => ['formhash' => $formhash1, 'loginfield' => 'username', 'username' => '这里是账号例如我的411161555直接改成账号就OK了', 'password' => '这里是你的密码经过加密的那个好像是MD5吧,没细看,自己抓包就可以得到的', 'questionid' => '1', 'answer' => '前面的1是你的问题选项,这里是你的问题答案', 'loginsubmit' => true],'user_agent'=> $_SERVER['HTTP_USER_AGENT'],'cookiePath' => './cookiet_00ls.txt','timeout' =>'30']);
 
if(strpos($login->html,"欢迎")> -1){
	echo "登陆成功<br/>";
	file_put_contents("./rizhi.txt", "登陆成功 \r\n", FILE_APPEND);
}else{
	echo "登陆失败!<br/>";
	exit;
}
}
 
do{
$timee = date('Y-m-d H:i:s',time());
$run = include 'dingshi.php';
if(!$run) die('process abort');
$urls = QueryList::run('Request',['target' => 'https://www.t00ls.net/member.php?action=online','referrer'=>'https://www.t00ls.net/','method' => 'GET','user_agent'=> 'Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30','cookiePath' => './cookiet_00ls.txt','timeout' =>'30'])->setQuery(['uid' => ['td:eq(0) a','href',''],'times' => ['td:eq(1)','text',''],'dongzuo' => ['td:eq(2)','text',''],'bankuai' => ['td:eq(3)','text',''],'tid' => ['td:eq(4) a','href','','callfun2']],'.datalist tbody tr')->getData();
foreach($urls as $v){
	if(!empty($v['uid'])  && strpos($v['dongzuo'],"回复主题")> -1){  //&& $v['tid']=='32822'
		$uidd = $v['uid'];  		//对方的UID
		$timess = $v['times'];		//对方的操作时间
		$dongzuoo = $v['dongzuo'];	//对方的动作
		$bankuaii = $v['bankuai'];	//所属板块
		$tidd = $v['tid'];			//帖子ID
		file_put_contents("./jilu.txt", "$uidd -- $timess -- $dongzuoo -- $bankuaii -- $tidd \r\n", FILE_APPEND);
	}
}
sleep($interval);
file_put_contents("./yxrizhi.txt", "运行 $ii 次,时间 $timee \r\n", FILE_APPEND);
$ii++;
}while(true);
function callfun2($content,$key){
	$arr = explode("-",$content);
return $arr[1];
}
function callfun1($content,$key){
$c1 = preg_match_all('/<input\s.*?>/', $content, $m1);
$m1[0][0] = str_replace('<input type="hidden" name="formhash" value="','',$m1[0][0]);
$m1[0][0] = str_replace('">','',$m1[0][0]);
return $m1[0][0];
}

在同目录下还有一个PHP文件二,此文件主要负责控制上面的主文件,因为上面的文件关闭浏览器,程序照样会自动运行,如果不想让程序再运行了,可以把下面的1改成0,然后一覆盖就OK了。程序就不自动运行了。:

1
2
3
<?php
return 0;
?>

所有代码本人亲测,无任何问题!!!!!!!

标签:

给我留言