Ir para conteúdo

Featured Replies

Postado

Recentemente tive a dúvida se haveria um jeito de burlar o sistema de compras de pontos em servidores, e fazendo varios testes, consegui chegar a 1 resultado concreto.

 

Sim eu conseguir burlar o sistema de pontos, claro que não burlei de ninguem mais sim o meu proprio.

 

Se você usa métodos automaticos de enviar pontos para os seus clientes via ( Paypal, Pagseguro ),

tomen cuidado, com o jeito certo, é facilmente burlado o sistema e trocando os valores de R$10,00 ... por apenas R$1,00 ou até R$0,00 , e como você está com o modulo automatico, é claro que irá mandar os pontos automaticos mesmo se pagar essas quantias minusculas.

 

É claro que não irei ensinar como burlar sistemas de shops de jogos ( inclusive Tibia ), mas estou aqui alertando a todos que são admins e usam dessa prática.

 

Obrigado por sua Atenção.

Assinatura removida por Comedinha (Bruno Carvalho).

  • Respostas 13
  • Visualizações 2.7k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Victor Fasano Raful
    Victor Fasano Raful

    Sim @luanluciano93, mas concorda que os valores podem se elevar de 1 a 9999. Creio que o código seria meio extenso, é legal e prático e oferecer uma lista de variações de pontos e de acordo com os val

Postado

Aqui está o código principal do sistema disponibilizado pelo Nathanael ... 

[1]
<form target="pagseguro" method="post" action="https://pagseguro.uol.com.br/checkout/checkout.jhtml">
	<input type="hidden" name="ref_transacao" value="'.$account_logged->getCustomField("name")	<input type="number" ng-model="get_points" min="1" size="5" maxlength="5">
	<input name="item_valor_1" type="hidden" value="{{get_points * 100}}" size="5" maxlength="5">
	<input name="item_quant_1" type="hidden" value="1" size="1" maxlength="1">
</form>

[2]
$Referencia = $_POST['Referencia'];
$NumItens = intval($_POST['ProdValor_1']);
$ProdQuantidade_x = $POST['ProdQuantidade_1'];

[3]
mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' WHERE name = '".htmlspecialchars($accname)."'"); 

 Primeiramente, devemos ver os 2 dados principais que o formulário envia para o pagseguro: item_valor_1 e item_quant_1.

• o item_valor_1 representa o valor do produto, e é contado em centavos.
• o item_quant_1 representa o quantidade do produto, e é contado por unidade.


Depois de enviado, o pagseguro retorna os valores, e se aprovado executa a query:

• Recebe item_valor_1 e executa o comando na database: premium_points = premium_points + item_valor_1

Bom, certamente que o sistema dele cada 100 premium points custam 1 real. (foi o o que aconteceu)

Se alguém altera o valor pago para 1 centavo, ele irá receber 1 ponto .. entende? O dele funciona perfeitamente, não tem como burlar mesmo que diminuindo o valor.


 

Postado

@luanluciano93, caso ele doe 1 centavos não irá retornar um valor inteiro para poder acrescentar um valor final...

 

 

@KingMapper, Módulo do pagseguro é falho na brecha certa, porém há diversos métodos que impede isso, um deles é:

if ($StatusTransacao == "Aprovado") {
mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' WHERE name = '".htmlspecialchars($accname)."'");
mysql_query("UPDATE pagsegurotransacoes SET StatusTransacao = 'Entregue' WHERE CONVERT( `pagsegurotransacoes`.`TransacaoID` USING utf8 ) = '$TransacaoID' AND CONVERT( `pagsegurotransacoes`.`StatusTransacao` USING utf8 ) = 'Aprovado' LIMIT 1 ;");
} 

Sabendo-se que o código acima adiciona a quantidade de items comprada... Revertendo o código para uma compra fixa, ou seja. Apenas será finalizada e completa a compra de valor determinado por sua pessoa. 5, 10, 15, assim por diante.

 

Ficando então o código

if ($StatusTransacao == "Aprovado") {
if ($NumItens == X){
mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' WHERE name = '".htmlspecialchars($accname)."'");
mysql_query("UPDATE pagsegurotransacoes SET StatusTransacao = 'Entregue' WHERE CONVERT( `pagsegurotransacoes`.`TransacaoID` USING utf8 ) = '$TransacaoID' AND CONVERT( `pagsegurotransacoes`.`StatusTransacao` USING utf8 ) = 'Aprovado' LIMIT 1 ;");
}
} 

Sendo assim depositado um quantia X. Caso este X exceda 1 ou seja diferente, não cairão os pontos. Tenho este sistema em meus servidores, e caso alguém venha de tentar burlar, é enviado a meu email pessoal e comercial com informações avançadas do cliente, da máquina e rede e de compra. Sendo assim entrando em contato com o mesmo e não tendo o ressarcimento do mesmo pois é uma tentativa de roubo dado assim como crime cybernético.

 

Sistema é falho nas mãos erradas, porém da para evitar com PHP, basta ter conhecimentos e lógica para fazer algo legal.

 

 

 

DeadPoolHost - Confira!

 

 

 

 

Fui útil? Realmente útil? Obrigado!

Não sabe como compensar?

Doe quanto puder... Seu ato é o que vale!

 

Postado

@Victor Fasano Raful, 1 centavo retorna 1 em valor do produto, enfim, o sistema do Nathanael já é o bastante para evitar fraudes. 

Obs: Se o valor de 1 real equivaler 100 points. Caso contrário teria que trata-lo como o Victor disse.

 

@Patrick Jean• o item_valor_1 representa o valor do produto, e é contado em centavos.

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo