Jump to content
tudor13mn13

[PHP]Un fel de RST Pentesting Academy [for noobies]

Recommended Posts

Posted (edited)

Salutare RST!

N-am avut ce face si m-am apucat sa vad daca pot face ceva in gen Pentesting Academy .. stiu ca orice prost o poate face , dar na.. poate ajuta pe cineva

XSS :


<?php
$vector=($_POST['search']);

echo "<center><h2>XSS Test by DizZy<br>";
echo "v1.0</center></h2>";
echo "User-agent: ", $agent = $_SERVER['HTTP_USER_AGENT'], "<br>";
echo "IP-ul tau este: ", $ip = $_SERVER['REMOTE_ADDR'], "<br>";
echo "<form action='xss.php' method='post'>";
echo "<input type='text' name='search' id='search' value='ce vrei sa cauti nebunule?'>";
echo "<input type='submit' value='Cauta'>";
echo "</form>";
echo "Nu am gasit nici un rezultat pentru: <b>", $vector,"</b>";

?>

SQLi:


<?php
echo "<center><h2>SQLi Test by DizZy<br>";
echo "v1.0</center></h2>";
echo "User-agent: ", $agent = $_SERVER['HTTP_USER_AGENT'], "<br>";
echo "IP-ul tau este: ", $ip = $_SERVER['REMOTE_ADDR'], "<br><br>";

if (isset($_GET['id']) && $_GET['id'] == "1")
{
echo "Bine ai venit pe ...... Acesta este un site de ....... Momentan te afli pe pagina 1.";
}

if (isset($_GET['id']) && $_GET['id'] == "2")
{
echo "Bine ai venit pe ...... Acesta este un site de ....... Momentan te afli pe pagina 2.";
}

if (isset($_GET['id']) && $_GET['id'] == "3")
{
echo "Bine ai venit pe ...... Acesta este un site de ....... Momentan te afli pe pagina 3.";
}

if (isset($_GET['id']) && $_GET['id'] == "4")
{
echo "Bine ai venit pe ...... Acesta este un site de ....... %% You have an error in your SQL syntax. Pagina 4 nu a fost

gasita!";
}
if (isset($_GET['id']) && $_GET['id'] == "3 order by 1,2,3--")
{
echo "Bine ai venit pe ...... Acesta este un site de ....... <br><br> <h3>1</h3> <br> <h2>3</h2><br>";
}

?>

(SQLi inspirat de la kalash)

(nu este terminat - eu vi-am dat un exemplu de unde sa plecati)

(sunt mai incepator in php)

( ignorati faza cu ip-ul tau si useragentul , e facuta din plictiseala :))) )

Sper sa ajute pe cineva , iar daca vi se pare nefolositor rog un mod sa stearga thread-ul.

P.S: nu strica un like si +rep daca a fost de ajutor... si un reply de incurajare :))

Edited by tudor13mn13
  • Moderators
Posted

Pentru SQLi, se poate face direct o legatura cu o baza de date cu un user care sa nu aibe decat select ca permisiuni.

Dupa aceea, faci waf-uri pentru select, blind, double query, addslashes, etc.

Ca inspiratie, poti sa te uiti pe sursele de la probele de la WeChall: [WeChall] MySQL Challenges

Posted
Tu demonstrezi exploatarea unei vulnerabilitati cu un script care nici macar nu e vulnerabil la acel tip de vulnerabilitate?:))

;)) Am zis ca este un script de la care pot porni altii pentru a-l dezvolta mai mult , nu ca e complet si ca poti sa testezi ce vrea .... ta.

Practic de aici se poate inspira cineva care vrea sa isi creeze un proiect gen Rst pentest academy ....

Data viitoare fi mai atent si incearca sa nu te mai bagi aiurea..

Posted
;)) Am zis ca este un script de la care pot porni altii pentru a-l dezvolta mai mult , nu ca e complet si ca poti sa testezi ce vrea .... ta.

Practic de aici se poate inspira cineva care vrea sa isi creeze un proiect gen Rst pentest academy ....

Data viitoare fi mai atent si incearca sa nu te mai bagi aiurea..

Tu ai impresia ca cineva poate folosi scriptul ala fie el si mai dezvoltat ca sa invete ceva? Daca tot vrei sa ajuti pe cineva, fa o aplicatie calumea.

Posted (edited)
Tu ai impresia ca cineva poate folosi scriptul ala fie el si mai dezvoltat ca sa invete ceva? Daca tot vrei sa ajuti pe cineva, fa o aplicatie calumea.

Da. Sa zicem ca daca respectivul ar continua aplicatia pana la sfarsit ar arata cam asa(fara sa fie legata la db) :


if (isset($_GET['id']) && $_GET['id'] == "-3 UNION ALL SELECT 1,group_concat(table_name),3 from information_schema.tables where table_name=database()--")
{
echo "users, emails , passwords , cc , phoneno , zip";
}

Si asa mai departe .. (s-ar putea sa fie gresita sintaxa , nu prea ma pricep la SQLi)

Edited by tudor13mn13
Posted
Si cum afla el cate coloane sunt, si stii ca va trebui sa scrie aceasi syntaxa si asa nu mai invata nimic, nu?

Frate eu am dat doar un exemplu de cod .. Am zis ca fiecare poate sa o continuie dupa bunul plac .. si poate sa adauge mai multe sintaxe ..

  • Active Members
Posted
Frate eu am dat doar un exemplu de cod .. Am zis ca fiecare poate sa o continuie dupa bunul plac .. si poate sa adauge mai multe sintaxe ..

Am continuat eu da nu dupa cacatu ala

sqli.php


<?php

//
mysql_connect("localhost","root","");
mysql_select_db("sqli");
//schimbati datele
session_start();
if(!isset($_SESSION['stage']))
$_SESSION['stage']=1;
if(!isset($_SESSION['version']))
{
$v=mysql_query("select @@version");
$r=mysql_fetch_array($v);
$_SESSION['version']=$r[0];
}
if(isset($_GET['id'])){
$Sql="SELECT * FROM news where id=".$_GET['id'];

$version=$_SESSION['version'];
$rez=mysql_query($Sql);
switch($_SESSION['stage']){
case "1":
if($rez!=false){
echo "Testeaza vulnerabilitatea adaugand dupa ?id=1 o simpla '<br>";
echo "Rezults: <br>";
$r=mysql_fetch_array($rez);
echo $r['text'];
}else{
echo mysql_error();
echo "<br>Bravo ai detectat vulnerabilitatea acum urmeaza sa afli cate coloane are primul select, introdu order by 1";
$_SESSION['stage']=2;
}
break;
case "2":
if($rez!=false){
$spl=explode("by ",strtolower(urldecode($_GET['id'])));

echo "Bravo ai detectat vulnerabilitatea acum urmeaza sa afli cate coloane are primul select<br> Sunt mai mult de ".$spl[1]." coloane incerca sa mergi din 5 in 5 pana obtii eroarea Unknow column<br>";
echo "Rezults: <br>";
$r=mysql_fetch_array($rez);
echo $r['text'];
}else{
echo mysql_error().strpos(mysql_error(),"Unknown column");
if(strpos(mysql_error(),"Unknown column")!==false){
echo "<br>Ai introdus prea multe coloane coboara numarul pana nu mai obtii eroarea<br>";
}
$_SESSION['stage']=3;
}
break;
case "3":
if($rez!=false){
if(strpos(strtolower(urldecode($_GET['id'])),"by 3")!==false)
echo "Bravo ai reusit sa numeri toate coloanele! Spre exemplu daca ai gasit 6 coloane introdu mai sus and 0 union select 1,2,3,4,5,6<br>";
$_SESSION['stage']=4;
echo "Rezults: <br>";
$r=mysql_fetch_array($rez);
echo $r['text'];
}else{
echo mysql_error();
if(strpos(mysql_error(),"Unknown column")!==false){
echo "<br>Ai introdus prea multe coloane coboara numarul pana nu mai obtii eroarea<br>";
}
}
break;
case "4":
if($rez!=false){


echo "Acum trebuie sa gasesti coloana vulnerabila. Ca sa o gasesti trebuie sa te uiti in sursa si sa vezi care din numarul din union apare in sursa.Incarca sa introduci @@version in loc de numarul care apare in sursa<br>";
$_SESSION['stage']=5;
echo "Rezults: <br>";
$r=mysql_fetch_array($rez);
echo $r['text'];
}else{
echo mysql_error();
}
break;
case "5":
if($rez!=false){
$r=mysql_fetch_array($rez);
if(strpos($r['text'],"news")!==false&&strpos(strtolower(urldecode($_GET['id'])),"table_name")!==false){
echo "Felicitari domnule ai scos tabele acuma daca vezi acolo exista un tabel care se numeste username_sqli incarca sa vezi ce coloane are inlocuieste table_name cu column_name , information_schema.tables cu information_schema.columns , table_schema=database() cu table_name='username_sqli'<br>";
$_SESSION['stage']=6;
}else
echo "Ai scos versiunea acum incarca sa scoti numele tabelelor din baza de date principala, pentru asta inlocuieste @@version cu group_concat(table_name) iar dupa 6 introdu from information_schema.tables where table_schema=database()<br>";
echo "Rezults: <br>";
echo $r['text'];
}else
echo mysql_error();
break;
case "6":
if($rez!=false){
$r=mysql_fetch_array($rez);
if(strpos($r['text'],"id")!==false&&strpos($r['text'],"pass")!==false&&strpos($r['text'],"user")!==false&&strpos(strtolower(urldecode($_GET['id'])),"column_name")!==false){
echo "Felicitari domnule ai scos numele coloanelor pe mine ma intereseaza ce contine user si pass.Pentru a face asta locuieste group_concat(column_name) cu concat(user,0x3a,pass) , from information_schema.columns si tot ce e dupa el cu from username_sqli<br>";
$_SESSION['stage']=7;
}else
echo "Ai scos tabelelor acuma daca vezi acolo exista un tabel care se numeste username_sqli incarca sa vezi ce coloane are inlocuieste table_name cu column_name , information_schema.tables cu information_schema.columns , table_schema=database() cu table_name='username_sqli'<br>";
echo "Rezults: <br>";
echo $r['text'];
}else
echo mysql_error();
break;
case "7":
if($rez!=false){
$r=mysql_fetch_array($rez);
if(strpos($r['text'],"admin")!==false&&strpos($r['text'],"21232f297a57a5a743894a0e4a801fc3")!==false&&strpos(strtolower(urldecode($_GET['id'])),"from username_sqli")!==false){
echo "Ai reusit sa parcurgi tutorialul bravo!<br>";
$_SESSION['stage']=8;
}else
echo "Ai scos numele coloanelor pe mine ma intereseaza ce contine user si pass.Pentru a face asta locuieste group_concat(column_name) cu concat(user,0x3a,pass) , from information_schema.columns si tot ce e dupa el cu from username_sqli<br>";

echo "Rezults: <br>";
echo $r['text'];
}else
echo mysql_error();
break;
case "8":
if($rez!=false){
$r=mysql_fetch_array($rez);
echo "Bravo ai parcurs tot tutorialul!<br>";
echo "Rezults: <br>";
echo $r['text'];
}else
echo mysql_error();
break;
}
}else
echo "Seteaza ?id=1";
?>

dump.sqli (il rulati la phpmyadmin):


-- phpMyAdmin SQL Dump
-- version 4.1.12
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: 09 Iun 2014 la 19:18
-- Server version: 5.5.36
-- PHP Version: 5.4.27

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `sqli`
--

-- --------------------------------------------------------

--
-- Structura de tabel pentru tabelul `news`
--

CREATE TABLE IF NOT EXISTS `news` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`titlu` varchar(30) NOT NULL,
`text` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Salvarea datelor din tabel `news`
--

INSERT INTO `news` (`id`, `titlu`, `text`) VALUES
(1, 'Articol', 'Acest articol este despre sql injection');

-- --------------------------------------------------------

--
-- Structura de tabel pentru tabelul `username_sqli`
--

CREATE TABLE IF NOT EXISTS `username_sqli` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(40) NOT NULL,
`pass` varchar(32) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Salvarea datelor din tabel `username_sqli`
--

INSERT INTO `username_sqli` (`id`, `user`, `pass`) VALUES
(1, 'admin', '21232f297a57a5a743894a0e4a801fc3');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Avataje

1) este un script cu adevarat vulnerabil la sqli

2) nu este obligatoriu ca sa introduca exact sintaxa pe care o dai tu in indicatii ci doar rezultatul conteaza.

L-am testat la mine si merge :D

Ca sa o luati de la capat stergeti cookie-ul phpsessid.

  • Upvote 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...