tudor13mn13 Posted June 9, 2014 Report Posted June 9, 2014 (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 cinevaXSS : <?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:<?phpecho "<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 June 9, 2014 by tudor13mn13 Quote
Moderators Dragos Posted June 9, 2014 Moderators Report Posted June 9, 2014 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 Quote
SilenTx0 Posted June 9, 2014 Report Posted June 9, 2014 Tu demonstrezi exploatarea unei vulnerabilitati cu un script care nici macar nu e vulnerabil la acel tip de vulnerabilitate? Quote
tudor13mn13 Posted June 9, 2014 Author Report Posted June 9, 2014 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.. Quote
askwrite Posted June 9, 2014 Report Posted June 9, 2014 Script vulnerabil la SQLi dar nu e connectat la o baza de date.Seems legit. Quote
Active Members dancezar Posted June 9, 2014 Active Members Report Posted June 9, 2014 Script vulnerabil la SQLi dar nu e connectat la o baza de date.Seems legit.Sql injection fara cerere SQL ... Quote
SilenTx0 Posted June 9, 2014 Report Posted June 9, 2014 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. Quote
tudor13mn13 Posted June 9, 2014 Author Report Posted June 9, 2014 (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 June 9, 2014 by tudor13mn13 Quote
askwrite Posted June 9, 2014 Report Posted June 9, 2014 Si cum afla el cate coloane sunt, si stii ca va trebui sa scrie aceasi syntaxa si asa nu mai invata nimic, nu? Quote
tudor13mn13 Posted June 9, 2014 Author Report Posted June 9, 2014 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 .. Quote
Active Members dancezar Posted June 9, 2014 Active Members Report Posted June 9, 2014 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 alasqli.php<?php//mysql_connect("localhost","root","");mysql_select_db("sqli");//schimbati datelesession_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;}}elseecho "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.27SET 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 sqli2) 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 Ca sa o luati de la capat stergeti cookie-ul phpsessid. 1 Quote