sqli-lab11、18关
这次练习sqli-lab11关和18关的内容,这部分主要是post方式的注入练习
11关
先在表单里输入’以及”尝试,发现输入’时会出现报错说明存在注入点;

使用万能码尝试,输入' or '1'='1' limit 1,1#

如图,读取了数据库中记录的用户名和密码。
源代码截图:

从图中可以看到,代码没有对输入表单的参数进行处理,所以能够比较容易的进行注入。
18关:
18关本身就比较困难,本人参考了其他的文章后进行的注入:
这部分注入本身需要满足一个前提条件就是输入正确的用户名和密码只有这样才能进入User-Agent:部分,
使用burpsuite工具:
抓包,send to Repeater,进入此模块方便编辑,在User-Agent:末尾加上'报错,可知存在注入点。

继续在User-Agent:后注入:
1',1,updatexml(1,concat(0x5c,database(),0x5c),1))#

能够读取到数据库的名称为'\security\'。
从源代码截图看,使用了check_input()函数对表单输入进行了校验,所以用户名和密码处几乎不会被注入。

但程序中还有一行代码
$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";此处使用了insert语句将包括'$uagent', '$IP', $uname三个信息填入数据库表格中,但$uagent没有做校验:
$uagent = $_SERVER['HTTP_USER_AGENT'];
所以在此处存在注入点,因此在此处也应当进行相应的校验才能降低注入的风险。
浙公网安备 33010602011771号